Google Firebase 和 Big Query:SQL 数组到列

斯宾塞波洛克

我试图将作为事件参数的字符串 ("item1,item2,item3") (key = "to_split", value.string_value = "item1,item2,item3") 拆分为 Google BigQuery 中的多个列。目前,我有:

SELECT
    event_name,
    PARSE_DATE("%Y%m%d", event_date) as date, 
    TIMESTAMP_MICROS(event_timestamp) as timestamp,
   (
     SELECT split(params.value.string_value, ',')
     FROM UNNEST(event_params) as params
     WHERE key = 'event_param-key_to_filter'
   ),
FROM `firebase.analytics.table`

这将给出如下结果:

事件名称 日期 时间戳 f0_
示例事件 2021-06-15 2021-06-15 10:08:41.634055 UTC 项目\n项目\n项目\n项目

(格式化不喜欢它,但拆分将项目变成了数组)

我试图得到这样的结果:

事件名称 日期 时间戳 项目 0 项目 1 项目 2 物品...
示例事件 2021-06-15 2021-06-15 10:08:41.634055 UTC 物品 物品 物品 等等...

有没有一种好方法可以将此项目数组拆分为 SQL for BigQuery 中同一行的列?我已经被困在这个问题上很长一段时间了。

最好的事物

戈登·利诺夫

您可以使用数组引用:

SELECT t.*,
       items[SAFE_ORDINAL(1)] as item_1,
       items[SAFE_ORDINAL(2)] as item_2,
       items[SAFE_ORDINAL(3)] as item_3,
       items[SAFE_ORDINAL(4)] as item_4
FROM (SELECT event_name, PARSE_DATE("%Y%m%d", event_date) as date, 
             TIMESTAMP_MICROS(event_timestamp) as timestamp,
             (SELECT split(params.value.string_value, ',') 
              FROM UNNEST(event_params) as params
              WHERE key = 'event_param-key_to_filter'
             ) items
      FROM `firebase.analytics.table` t
     ) t

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章