11---
22title : FLATTEN
33---
4+
45import FunctionDescription from '@site/src /components/FunctionDescription';
56
67<FunctionDescription description =" 引入或更新: v1.2.213 " />
78
8- 将嵌套的JSON数据转换为表格格式 ,其中每个元素或字段都表示为单独的一行。
9+ 将嵌套的 JSON 数据转换为表格格式 ,其中每个元素或字段都表示为单独的一行。
910
1011## 语法
1112
@@ -16,37 +17,37 @@ import FunctionDescription from '@site/src/components/FunctionDescription';
1617 [ , MODE => ' OBJECT' | ' ARRAY' | ' BOTH' ] )
1718```
1819
19- | 参数/关键字 | 描述 | 默认值 |
20- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- |
21- | INPUT | 指定要展平的JSON或数组数据。 | - |
22- | 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允许在前面的表表达式和函数之间进行交叉引用。 | - |
20+ | 参数/关键字 | 描述 | 默认值 |
21+ | ----------- | --------------------------------------------------------------------------------------------------------------------------------- | ------ |
22+ | INPUT | 指定要展平的 JSON 或数组数据。 | - |
23+ | PATH | 指定输入数据中要展平的数组或对象的路径。 | - |
24+ | OUTER | 如果设置为 TRUE ,即使结果为零的行仍将包含在输出中,但这些行的 KEY、INDEX 和 VALUE 列的值将设置为 NULL。 | FALSE |
25+ | RECURSIVE | 如果设置为 TRUE ,函数将继续展平嵌套元素。 | FALSE |
26+ | MODE | 控制是仅展平对象 ('OBJECT')、仅展平数组 ('ARRAY'),还是两者都展平 ('BOTH')。 | 'BOTH' |
27+ | LATERAL | LATERAL 是一个可选关键字,用于在 FROM 子句中引用 LATERAL 关键字左侧定义的列。LATERAL 允许在前面的表表达式和函数之间进行交叉引用。 | - |
2728
2829## 输出
2930
30- 下表描述了FLATTEN函数的输出列 :
31+ 下表描述了 FLATTEN 函数的输出列 :
3132
3233::: note
33- 当与FLATTEN一起使用LATERAL关键字时 ,这些输出列可能不会显式提供,因为LATERAL引入了动态交叉引用 ,改变了输出结构。
34+ 当与 FLATTEN 一起使用 LATERAL 关键字时 ,这些输出列可能不会显式提供,因为 LATERAL 引入了动态交叉引用 ,改变了输出结构。
3435:::
3536
36- | 列 | 描述 |
37- | ------- | ------------------------------------------------------------------------------------------ |
38- | SEQ | 与输入关联的唯一序列号。 |
39- | KEY | 扩展值的键。如果展平的元素不包含键,则设置为NULL。 |
40- | PATH | 展平元素的路径。 |
41- | INDEX | 如果元素是数组,此列包含其索引;否则,设置为NULL。 |
42- | VALUE | 展平元素的值。 |
43- | THIS | 此列标识当前正在展平的元素。 |
37+ | 列 | 描述 |
38+ | ----- | --------------------------------------------------- |
39+ | SEQ | 与输入关联的唯一序列号。 |
40+ | KEY | 扩展值的键。如果展平的元素不包含键,则设置为 NULL。 |
41+ | PATH | 展平元素的路径。 |
42+ | INDEX | 如果元素是数组,此列包含其索引;否则,设置为 NULL。 |
43+ | VALUE | 展平元素的值。 |
44+ | THIS | 此列标识当前正在展平的元素。 |
4445
4546## 示例
4647
47- ### 示例1: 演示PATH 、OUTER、RECURSIVE和MODE参数
48+ ### 示例 1: 演示 PATH 、OUTER、RECURSIVE 和 MODE 参数
4849
49- 此示例演示了FLATTEN函数在PATH 、OUTER、RECURSIVE和MODE参数方面的行为 。
50+ 此示例演示了 FLATTEN 函数在 PATH 、OUTER、RECURSIVE 和 MODE 参数方面的行为 。
5051
5152``` sql
5253SELECT
6667│ 1 │ name │ name │ NULL │ " John" │ {" address" :{" city" :" New York" ," state" :" NY" }," languages" :[" English" ," Spanish" ," French" ]," name" :" John" } │
6768└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
6869
69- -- PATH帮助从原始JSON数据中选择特定路径的元素 。
70+ -- PATH 帮助从原始 JSON 数据中选择特定路径的元素 。
7071SELECT
7172 *
7273FROM
8586│ 1 │ NULL │ languages[2 ] │ 2 │ " French" │ [" English" ," Spanish" ," French" ] │
8687└──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
8788
88- -- RECURSIVE启用嵌套结构的递归展平 。
89+ -- RECURSIVE 启用嵌套结构的递归展平 。
8990SELECT
9091 *
9192FROM
9899```
99100
100101┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
101- │ seq │ key │ path │ index │ value │ this │
102+ │ seq │ key │ path │ index │ value │ this │
102103├────────┼──────────────────┼──────────────────┼──────────────────┼──────────────────────────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────────┤
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"} │
104+ │ 1 │ address │ address │ NULL │ ` {"city":"New York","state":"NY"} ` │ ` {"address":{"city":"New York","state":"NY"},"languages":["English","Spanish","French"],"name":"John"} ` │
105+ │ 1 │ city │ address.city │ NULL │ "New York" │ ` {"city":"New York","state":"NY"} ` │
106+ │ 1 │ state │ address.state │ NULL │ "NY" │ ` {"city":"New York","state":"NY"} ` │
107+ │ 1 │ languages │ languages │ NULL │ [ "English","Spanish","French"] │ ` {"address":{"city":"New York","state":"NY"},"languages":["English","Spanish","French"],"name":"John"} ` │
108+ │ 1 │ NULL │ languages[ 0] │ 0 │ "English" │ [ "English","Spanish","French"] │
109+ │ 1 │ NULL │ languages[ 1] │ 1 │ "Spanish" │ [ "English","Spanish","French"] │
110+ │ 1 │ NULL │ languages[ 2] │ 2 │ "French" │ [ "English","Spanish","French"] │
111+ │ 1 │ name │ name │ NULL │ "John" │ ` {"address":{"city":"New York","state":"NY"},"languages":["English","Spanish","French"],"name":"John"} ` │
111112└────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
112113
113-
114+ ``` sql
114115-- MODE 指定是否仅展平对象 ('OBJECT')、仅展平数组 ('ARRAY') 或两者都展平 ('BOTH')。
115116-- 在此示例中,使用 MODE => 'ARRAY',这意味着仅展平 JSON 数据中的数组。
116117SELECT
201202├───────────────────┼───────────────────┼───────────────────┤
202203│ 5 │ 1 .2 │ 2 .5 │
203204└───────────────────────────────────────────────────────────┘
204- ```
205+ ```
0 commit comments