0

我在雪花中有一张桌子,结构如下,

----------------------------------------
Name | Number
----------------------------------------
Dim_1 | {'Table_1': 100}
Dim_1 | {'Table_1': 101}
Dim_2 | {'Table_2': 200, 'Table_3': 300}
Dim_2 | {'Table_2': 201, 'Table_3': 301}

我试图得到输出:

-----------------------
Name | Table | Entries
-----------------------
Dim_1 | Table_1 | 100
Dim_1 | Table_1 | 101
Dim_2 | Table_2 | 200
Dim_2 | Table_3 | 300
Dim_2 | Table_2 | 201
Dim_2 | Table_3 | 301

有任何想法吗?

4

1 回答 1

1

FLATTEN该功能的直接应用可以在这里工作。该函数创建一个横向视图,其中包含每个源行的分解行。对于平面对象,所有键值对都被分解成一行。

使用KEY展平结果的Table一部分提供了所需输出的一部分,而该VALUE部分提供了Entries. 由于FLATTEN生成横向视图,您仍然可以访问前面的源表行值以继续Name在结果中保留该列。

执行转换的示例查询:

SELECT
  t.name AS "Name",
  lv.key AS "Table",
  lv.value AS "Entries"
FROM
  data_table t,
  LATERAL FLATTEN(input => t.number) lv
于 2020-02-15T18:21:43.897 回答