@@ -5,7 +5,7 @@ import FunctionDescription from '@site/src/components/FunctionDescription';
55
66<FunctionDescription description =" 引入或更新: v1.2.213 " />
77
8- 将嵌套的 JSON 数据转换为表格格式,其中每个元素或字段都表示为单独的行 。
8+ 将嵌套的JSON数据转换为表格格式,其中每个元素或字段都表示为单独的一行 。
99
1010## 语法
1111
@@ -18,35 +18,35 @@ import FunctionDescription from '@site/src/components/FunctionDescription';
1818
1919| 参数/关键字 | 描述 | 默认值 |
2020| -------------| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| --------|
21- | INPUT | 指定要展平的 JSON 或数组数据。 | - |
21+ | INPUT | 指定要展平的JSON或数组数据。 | - |
2222| PATH | 指定输入数据中要展平的数组或对象的路径。 | - |
23- | OUTER | 如果设置为 TRUE ,即使结果为零的行仍将包含在输出中,但这些行的 KEY、INDEX 和 VALUE 列的值将设置为 NULL。 | FALSE |
24- | RECURSIVE | 如果设置为 TRUE ,函数将继续展平嵌套元素。 | FALSE |
25- | MODE | 控制是仅展平对象 ('OBJECT')、仅展平数组 ('ARRAY'),还是两者都展平 ('BOTH')。 | 'BOTH' |
26- | LATERAL | LATERAL 是一个可选关键字,用于在 FROM 子句中引用 LATERAL 关键字左侧定义的列。LATERAL 启用前表表达式与函数之间的交叉引用。 | - |
23+ | OUTER | 如果设置为TRUE ,即使结果为零的行仍将包含在输出中,但这些行的KEY、INDEX和VALUE列的值将设置为NULL。 | FALSE |
24+ | RECURSIVE | 如果设置为TRUE ,函数将继续展平嵌套元素。 | FALSE |
25+ | MODE | 控制是仅展平对象('OBJECT')、仅展平数组('ARRAY'),还是两者都展平('BOTH')。 | 'BOTH' |
26+ | LATERAL | LATERAL是一个可选关键字,用于在FROM子句中引用LATERAL关键字左侧定义的列。LATERAL允许在前面的表表达式和函数之间进行交叉引用。 | - |
2727
2828## 输出
2929
30- 下表描述了 FLATTEN 函数的输出列 :
30+ 下表描述了FLATTEN函数的输出列 :
3131
3232::: note
33- 当与 FLATTEN 一起使用 LATERAL 关键字时 ,这些输出列可能不会显式提供,因为 LATERAL 引入了动态交叉引用 ,改变了输出结构。
33+ 当与FLATTEN一起使用LATERAL关键字时 ,这些输出列可能不会显式提供,因为LATERAL引入了动态交叉引用 ,改变了输出结构。
3434:::
3535
3636| 列 | 描述 |
3737| -------| ------------------------------------------------------------------------------------------|
3838| SEQ | 与输入关联的唯一序列号。 |
39- | KEY | 扩展值的键。如果展平的元素不包含键,则设置为 NULL。 |
39+ | KEY | 扩展值的键。如果展平的元素不包含键,则设置为NULL。 |
4040| PATH | 展平元素的路径。 |
41- | INDEX | 如果元素是数组,此列包含其索引;否则,设置为 NULL。 |
41+ | INDEX | 如果元素是数组,此列包含其索引;否则,设置为NULL。 |
4242| VALUE | 展平元素的值。 |
4343| THIS | 此列标识当前正在展平的元素。 |
4444
4545## 示例
4646
47- ### 示例 1: 演示 PATH 、OUTER、RECURSIVE 和 MODE 参数
47+ ### 示例1: 演示PATH 、OUTER、RECURSIVE和MODE参数
4848
49- 此示例演示了 FLATTEN 函数在 PATH 、OUTER、RECURSIVE 和 MODE 参数方面的行为 。
49+ 此示例演示了FLATTEN函数在PATH 、OUTER、RECURSIVE和MODE参数方面的行为 。
5050
5151``` sql
5252SELECT
6666│ 1 │ name │ name │ NULL │ " John" │ {" address" :{" city" :" New York" ," state" :" NY" }," languages" :[" English" ," Spanish" ," French" ]," name" :" John" } │
6767└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
6868
69- -- PATH 帮助从原始 JSON 数据中选择特定路径的元素 。
69+ -- PATH帮助从原始JSON数据中选择特定路径的元素 。
7070SELECT
7171 *
7272FROM
8585│ 1 │ NULL │ languages[2 ] │ 2 │ " French" │ [" English" ," Spanish" ," French" ] │
8686└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
8787
88- -- RECURSIVE 启用嵌套结构的递归展平 。
88+ -- RECURSIVE启用嵌套结构的递归展平 。
8989SELECT
9090 *
9191FROM
9797 );
9898```
9999
100- ### 示例 1:使用 FLATTEN 函数
100+ ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
101+ │ seq │ key │ path │ index │ value │ this │
102+ ├────────┼──────────────────┼──────────────────┼──────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
103+ │ 1 │ address │ address │ NULL │ {"city":"New York","state":"NY"} │ {"address":{"city":"New York","state":"NY"},"languages":[ "English","Spanish","French"] ,"name":"John"} │
104+ │ 1 │ city │ address.city │ NULL │ "New York" │ {"city":"New York","state":"NY"} │
105+ │ 1 │ state │ address.state │ NULL │ "NY" │ {"city":"New York","state":"NY"} │
106+ │ 1 │ languages │ languages │ NULL │ [ "English","Spanish","French"] │ {"address":{"city":"New York","state":"NY"},"languages":[ "English","Spanish","French"] ,"name":"John"} │
107+ │ 1 │ NULL │ languages[ 0] │ 0 │ "English" │ [ "English","Spanish","French"] │
108+ │ 1 │ NULL │ languages[ 1] │ 1 │ "Spanish" │ [ "English","Spanish","French"] │
109+ │ 1 │ NULL │ languages[ 2] │ 2 │ "French" │ [ "English","Spanish","French"] │
110+ │ 1 │ name │ name │ NULL │ "John" │ {"address":{"city":"New York","state":"NY"},"languages":[ "English","Spanish","French"] ,"name":"John"} │
111+ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
101112
102- 此示例展示了如何使用 FLATTEN 函数来展平 JSON 数据。
103113
104- ``` sql
105114-- MODE 指定是否仅展平对象 ('OBJECT')、仅展平数组 ('ARRAY') 或两者都展平 ('BOTH')。
106- -- 在此示例中,MODE => 'ARRAY' 被使用 ,这意味着仅展平 JSON 数据中的数组。
115+ -- 在此示例中,使用 MODE => 'ARRAY',这意味着仅展平 JSON 数据中的数组。
107116SELECT
108117 *
109118FROM
118127
119128
120129-- OUTER 确定是否在输出中包含零行扩展。
121- -- 在第一个示例中,OUTER => TRUE 与一个空的 JSON 数组一起使用 ,这会导致零行扩展。
130+ -- 在第一个示例中,使用 OUTER => TRUE 和一个空的 JSON 数组 ,这会导致零行扩展。
122131-- 即使没有值可以展平,行也会包含在输出中。
123132SELECT
124133 *
131140│ 1 │ NULL │ NULL │ NULL │ NULL │ NULL │
132141└─────────────────────────────────────────────────────────────────────────────────────────────────────────┘
133142
134- -- 在第二个示例中,OUTER 被省略 ,输出显示了当未指定 OUTER 时,零结果的行如何不被包含 。
143+ -- 在第二个示例中,省略了 OUTER ,输出显示了当未指定 OUTER 时,零结果行如何不被包含 。
135144SELECT
136145 *
137146FROM
141150
142151### 示例 2:演示 LATERAL FLATTEN
143152
144- 此示例展示了在使用 LATERAL 关键字时 FLATTEN 函数的行为。
153+ 此示例演示了在使用 LATERAL 关键字时 FLATTEN 函数的行为。
145154
146155```sql
147156-- 创建一个包含多个项目的 Tim Hortons 交易表
0 commit comments