如何将 Bigquery 重复记录转换为列?
Posted
技术标签:
【中文标题】如何将 Bigquery 重复记录转换为列?【英文标题】:How to convert Bigquery repeated record into a column? 【发布时间】:2021-08-31 17:46:37 【问题描述】:event_params
是重复记录。它的关键值可以是
firebase_event_origin
, engagement_time_msec
, firebase_screen
, ...
根据数据类型,每个键都有多个可选值:
string_value
, int_value
, ...
我想将 key 转换为一列,并且 value 将填充它。
例如:键 firebase_screen
将被转换为列 firebase_screen
,其值为 webview screen
。表中所有其他重复记录都相同。
我不确定UNNEST
是否是正确的解决方案,因为它将其分解为记录而不是列。
我在这个例子中使用的架构和表格的截图:
【问题讨论】:
【参考方案1】:您需要先取消嵌套,然后再对数据进行分组。
请将FROM ( ... )
中的括号替换为您的表格。
SELECT
date,
ANY_VALUE(CASE WHEN t.key="firebase_screen" THEN t.string_value ELSE NULL END) AS firebase_screen,
ANY_VALUE(CASE WHEN t.key="ga_session_number" THEN t.int_value ELSE NULL END) AS ga_session_number,
FROM (
SELECT
1 date,
[STRUCT("firebase_screen" AS key,
"webs" AS string_value,
NULL AS int_value),
STRUCT("ga_session_number" AS key,
NULL,
6 AS int_value) ] AS event_params ) AS tbl,
UNNEST(tbl.event_params) AS t
GROUP BY 1
【讨论】:
以上是关于如何将 Bigquery 重复记录转换为列?的主要内容,如果未能解决你的问题,请参考以下文章