【问题标题】:Regexp split key values into columns in Bigquery正则表达式将键值拆分为 Bigquery 中的列
【发布时间】:2021-05-12 13:38:31
【问题描述】:

我的列数据看起来像

"dayparts": [{"day": "Saturday", "hours": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13] }, {"day": "Sunday", "hours": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]}, {"day" : "星期四", "小时": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]}]

我想要这样的结果

【问题讨论】:

    标签: regex dictionary google-bigquery


    【解决方案1】:

    你可以试试:

    WITH sample AS (
    SELECT "1" AS id, "{\"dayparts\":[{\"day\":\"Saturday\",\"hours\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]},{\"day\":\"Sunday\",\"hours\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]},{\"day\":\"Thursday\",\"hours\":[0,1,2,3,4,5,6,7,8,9,10,11,12,13]}]}" AS msg
    )
    SELECT id,
        JSON_VALUE(dparts, '$.day') AS day,
        JSON_QUERY(dparts, '$.hours') AS hours
    FROM (
    SELECT id,
        JSON_EXTRACT_ARRAY(JSON_QUERY(msg, '$.dayparts')) AS dayparts
    FROM sample) t, UNNEST(t.dayparts) dparts
    

    (我添加了封闭的“{”和“}”以便能够执行 JSON 操作,如果它们不存在,我猜只是将它们连接起来) (如果您希望结果表中有一个实际数组,也可以在“JSON_QUERY(dparts, '$.hours')”周围添加“JSON_EXTRACT_ARRAY”)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-06
      • 2020-01-05
      • 1970-01-01
      • 2020-08-25
      • 2020-12-31
      相关资源
      最近更新 更多