ana*_*045 3 sql google-bigquery google-cloud-platform
我正在尝试解除下表的嵌套。
使用下面的取消嵌套查询来展平表格
SELECT
id,
name ,keyword
FROM `project_id.dataset_id.table_id`
,unnest (`groups` ) as `groups`
where id = 204358
Run Code Online (Sandbox Code Playgroud)
问题是,这会重复行(名称除外),就像展平表的情况一样。
如何修改查询以将名称放入两个不同的列而不是行中。预期输出如下 -
这是因为逗号是一个交叉连接- 与未嵌套的数组结合使用时,它是一个横向交叉连接。您为数组中的每一行重复父行。
旋转数组的一个问题是数组可以具有可变数量的行,但表必须具有固定数量的列。
因此,您需要一种方法来决定将某一行变为某一列。
例如与
SELECT
id,
name,
groups[ordinal(1)] as firstArrayEntry,
groups[ordinal(2)] as secondArrayEntry,
keyword
FROM `project_id.dataset_id.table_id`
unnest(groups)
where id = 204358
Run Code Online (Sandbox Code Playgroud)
如果您的数组有一个键值对,您可以决定使用该键。例如
SELECT
id,
name,
(select value from unnest(groups) where key='key1') as key1,
keyword
FROM `project_id.dataset_id.table_id`
unnest(groups)
where id = 204358
Run Code Online (Sandbox Code Playgroud)
但你的桌子似乎不是这样的......
第三种选择可能是PIVOT与交叉连接解决方案结合使用,但这也有限制:而且我不确定这有多繁重的计算。
| 归档时间: |
|
| 查看次数: |
11214 次 |
| 最近记录: |