【问题标题】:How to convert Bigquery repeated record into a column?如何将 Bigquery 重复记录转换为列?
【发布时间】: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 是否是正确的解决方案,因为它将其分解为记录而不是列。

我在这个例子中使用的架构和表格的截图:

【问题讨论】:

    标签: firebase google-bigquery 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 2021-11-10
      • 1970-01-01
      • 2021-06-07
      • 2021-06-19
      • 1970-01-01
      相关资源
      最近更新 更多