This is an automated email from the ASF dual-hosted git repository. zhangstar333 pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push: new 8abd63d9a80 [doc](function) support table-function posexplode (#1283) 8abd63d9a80 is described below commit 8abd63d9a800a00654e2db7b5eb34d0e214bec80 Author: zhangstar333 <zhangs...@selectdb.com> AuthorDate: Thu Nov 21 16:26:54 2024 +0800 [doc](function) support table-function posexplode (#1283) # Versions - [x] dev - [ ] 3.0 - [ ] 2.1 - [ ] 2.0 # Languages - [x] Chinese - [x] English --- .../sql-functions/table-functions/posexplode.md | 97 +++++++++++++++++++++ .../sql-functions/table-functions/posexplode.md | 99 ++++++++++++++++++++++ sidebars.json | 1 + 3 files changed, 197 insertions(+) diff --git a/docs/sql-manual/sql-functions/table-functions/posexplode.md b/docs/sql-manual/sql-functions/table-functions/posexplode.md new file mode 100644 index 00000000000..dcc6955223f --- /dev/null +++ b/docs/sql-manual/sql-functions/table-functions/posexplode.md @@ -0,0 +1,97 @@ +--- +{ +"title": "POSEXPLODE", +"language": "en" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## Description + +The table function is used in conjunction with Lateral View and can support multiple Lateral Views. It only supports the new optimizer. + +It expands an array column into multiple rows and adds a column indicating the position, returning a struct type. When the array is NULL or empty, posexplode_outer returns NULL. Both posexplode and posexplode_outer will return NULL elements within the array. + +## Syntax +```sql +posexplode(array) +posexplode_outer(array) +``` + +### Example + +```sql + CREATE TABLE IF NOT EXISTS `table_test`( + `id` INT NULL, + `name` TEXT NULL, + `score` array<string> NULL + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + COMMENT 'OLAP' + DISTRIBUTED BY HASH(`id`) BUCKETS 1 + PROPERTIES ("replication_allocation" = "tag.location.default: 1"); + +mysql> insert into table_test values (0, "zhangsan", ["Chinese","Math","English"]),(1, "lisi", ["null"]),(2, "wangwu", ["88a","90b","96c"]),(3, "lisi2", [null]),(4, "amory", NULL); + + +mysql [test_query_qa]>select * from table_test order by id; ++------+----------+--------------------------------+ +| id | name | score | ++------+----------+--------------------------------+ +| 0 | zhangsan | ["Chinese", "Math", "English"] | +| 1 | lisi | ["null"] | +| 2 | wangwu | ["88a", "90b", "96c"] | +| 3 | lisi2 | [null] | +| 4 | amory | NULL | ++------+----------+--------------------------------+ + +mysql [test_query_qa]>select id,name,score, k,v from table_test lateral view posexplode(score) tmp as k,v order by id; ++------+----------+--------------------------------+------+---------+ +| id | name | score | k | v | ++------+----------+--------------------------------+------+---------+ +| 0 | zhangsan | ["Chinese", "Math", "English"] | 0 | Chinese | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 1 | Math | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 2 | English | +| 1 | lisi | ["null"] | 0 | null | +| 2 | wangwu | ["88a", "90b", "96c"] | 0 | 88a | +| 2 | wangwu | ["88a", "90b", "96c"] | 1 | 90b | +| 2 | wangwu | ["88a", "90b", "96c"] | 2 | 96c | +| 3 | lisi2 | [null] | 0 | NULL | ++------+----------+--------------------------------+------+---------+ + +mysql [test_query_qa]>select id,name,score, k,v from table_test lateral view posexplode_outer(score) tmp as k,v order by id; ++------+----------+--------------------------------+------+---------+ +| id | name | score | k | v | ++------+----------+--------------------------------+------+---------+ +| 0 | zhangsan | ["Chinese", "Math", "English"] | 0 | Chinese | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 1 | Math | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 2 | English | +| 1 | lisi | ["null"] | 0 | null | +| 2 | wangwu | ["88a", "90b", "96c"] | 0 | 88a | +| 2 | wangwu | ["88a", "90b", "96c"] | 1 | 90b | +| 2 | wangwu | ["88a", "90b", "96c"] | 2 | 96c | +| 3 | lisi2 | [null] | 0 | NULL | +| 4 | amory | NULL | NULL | NULL | ++------+----------+--------------------------------+------+---------+ +``` + +### Keywords +POSEXPLODE,POSEXPLODE_OUTER diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/table-functions/posexplode.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/table-functions/posexplode.md new file mode 100644 index 00000000000..0b8001a7fca --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/table-functions/posexplode.md @@ -0,0 +1,99 @@ +--- +{ +"title": "POSEXPLODE", +"language": "zh-CN" +} +--- + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +## Description + +表函数,需配合 Lateral View 使用, 可以支持多个 Lateral view, 仅仅支持新优化器。 + +将 array 列展开成多行, 并且增加一列标明位置的列,组成struct类型返回。 +当 array 为NULL或者为空时,`posexplode_outer` 返回NULL。 +`posexplode` 和 `posexplode_outer` 均会返回 array 内部的NULL元素。 + +## Syntax +```sql +posexplode(expr) +posexplode_outer(expr) +``` + +### Example + +``` sql + CREATE TABLE IF NOT EXISTS `table_test`( + `id` INT NULL, + `name` TEXT NULL, + `score` array<string> NULL + ) ENGINE=OLAP + DUPLICATE KEY(`id`) + COMMENT 'OLAP' + DISTRIBUTED BY HASH(`id`) BUCKETS 1 + PROPERTIES ("replication_allocation" = "tag.location.default: 1"); + +mysql> insert into table_test values (0, "zhangsan", ["Chinese","Math","English"]),(1, "lisi", ["null"]),(2, "wangwu", ["88a","90b","96c"]),(3, "lisi2", [null]),(4, "amory", NULL); + + +mysql [test_query_qa]>select * from table_test order by id; ++------+----------+--------------------------------+ +| id | name | score | ++------+----------+--------------------------------+ +| 0 | zhangsan | ["Chinese", "Math", "English"] | +| 1 | lisi | ["null"] | +| 2 | wangwu | ["88a", "90b", "96c"] | +| 3 | lisi2 | [null] | +| 4 | amory | NULL | ++------+----------+--------------------------------+ + +mysql [test_query_qa]>select id,name,score, k,v from table_test lateral view posexplode(score) tmp as k,v order by id; ++------+----------+--------------------------------+------+---------+ +| id | name | score | k | v | ++------+----------+--------------------------------+------+---------+ +| 0 | zhangsan | ["Chinese", "Math", "English"] | 0 | Chinese | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 1 | Math | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 2 | English | +| 1 | lisi | ["null"] | 0 | null | +| 2 | wangwu | ["88a", "90b", "96c"] | 0 | 88a | +| 2 | wangwu | ["88a", "90b", "96c"] | 1 | 90b | +| 2 | wangwu | ["88a", "90b", "96c"] | 2 | 96c | +| 3 | lisi2 | [null] | 0 | NULL | ++------+----------+--------------------------------+------+---------+ + +mysql [test_query_qa]>select id,name,score, k,v from table_test lateral view posexplode_outer(score) tmp as k,v order by id; ++------+----------+--------------------------------+------+---------+ +| id | name | score | k | v | ++------+----------+--------------------------------+------+---------+ +| 0 | zhangsan | ["Chinese", "Math", "English"] | 0 | Chinese | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 1 | Math | +| 0 | zhangsan | ["Chinese", "Math", "English"] | 2 | English | +| 1 | lisi | ["null"] | 0 | null | +| 2 | wangwu | ["88a", "90b", "96c"] | 0 | 88a | +| 2 | wangwu | ["88a", "90b", "96c"] | 1 | 90b | +| 2 | wangwu | ["88a", "90b", "96c"] | 2 | 96c | +| 3 | lisi2 | [null] | 0 | NULL | +| 4 | amory | NULL | NULL | NULL | ++------+----------+--------------------------------+------+---------+ +``` + +### Keywords +POSEXPLODE,POSEXPLODE_OUTER diff --git a/sidebars.json b/sidebars.json index 8983eea9c9d..391a71d490f 100644 --- a/sidebars.json +++ b/sidebars.json @@ -1255,6 +1255,7 @@ "items": [ "sql-manual/sql-functions/table-functions/explode-json-array", "sql-manual/sql-functions/table-functions/explode", + "sql-manual/sql-functions/table-functions/posexplode", "sql-manual/sql-functions/table-functions/explode-split", "sql-manual/sql-functions/table-functions/explode_map", "sql-manual/sql-functions/table-functions/explode-bitmap", --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org