gpt4 book ai didi

sql - BigQuery : Converting key-value pairs in Array to columns

转载 作者:行者123 更新时间:2023-12-03 08:33:19 25 4
gpt4 key购买 nike

我引用了这个post并希望将 event_params 字段中选定的键值对转换为列。我的表是这样的:

| user_id | event_params.key | event_params.value.string_value |
+---------+------------------+---------------------------------+
| 1 | k1 | v11 |
| +------------------+---------------------------------+
| | k2 | v12 |
| +------------------+---------------------------------+
| | k3 | v13 |
+---------+------------------+---------------------------------+
| 1 | k1 | v21 |
| +------------------+---------------------------------+
| | k2 | v22 |
| +------------------+---------------------------------+
| | k3 | v23 |
+---------+------------------+---------------------------------+
| 2 | k1 | v31 |
| +------------------+---------------------------------+
| | k2 | v32 |
| +------------------+---------------------------------+
| | k3 | v33 |

每个大行在 event_params 字段内都有任意 N 行,并且每个大行可以重复,因为它可以由同一用户生成。我想保留这个重复。

我想要的最终结果:

| user_id |  k1 |  k3 |
+---------+-----+-----+
| 1 | v11 | v13 |
+---------+-----+-----+
| 1 | v21 | v23 |
+---------+-----+-----+
| 2 | v31 | v33 |

到目前为止我的查询:

SELECT 
user_id,
IF(event_params.key = 'k1', event_params.value.string_value, NULL) AS k1,
IF(event_params.key = 'k3', event_params.value.string_value, NULL) AS k3,
FROM `my-proj-id.analytics_xxxxx.events_20201030`
, UNNEST(event_params) AS event_params
WHERE event_name='my-event-name'
为简洁起见,上表中省略了

event_name

我当前的实现导致整个列 k3 中出现 NULL,我认为这可能是由于 UNNEST 和没有一个未嵌套的行会同时包含 k1 和 k3。如何转换为上面我想要的最终结果?

注意:我想用标准 SQL 编写

最佳答案

以下适用于 BigQuery 标准 SQL

#standardSQL
select user_id,
(select value.string_value from t.event_params where key = 'k1') as k1,
(select value.string_value from t.event_params where key = 'k3') as k3
from `my-proj-id.analytics_xxxxx.events_20201030` t

如果适用于您问题中的示例数据 - 输出为

enter image description here

关于sql - BigQuery : Converting key-value pairs in Array to columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64639451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com