【问题标题】:Manipulating dict values in Bigquery在 Bigquery 中操作 dict 值
【发布时间】:2021-08-02 15:21:42
【问题描述】:

我有一个 bigquery 表列,其中包含类似的数据

[{"start_time":"06:00AM","end_time":"11:59PM","start_day":"SUNDAY","end_day":"SUNDAY"},{"start_time":"06: 00AM","end_time":"11:59PM","start_day":"MONDAY","end_day":"MONDAY"}]

我想将以上内容重新排序为

[{"start_day":"SUNDAY","end_day":"SUNDAY","start_time":"06:00AM","end_time":"11:59PM"},{"start_day":"MONDAY" ,"end_day":"MONDAY","start_time":"06:00AM","end_time":"11:59PM"}]

【问题讨论】:

    标签: string google-bigquery regexp-replace


    【解决方案1】:

    这是一种可能的方法:

    WITH
      jdata AS (
      SELECT
        "[{\"start_time\":\"06:00AM\",\"end_time\":\"11:59PM\",\"start_day\":\"SUNDAY\",\"end_day\":\"SUNDAY\"},{\"start_time\":\"06:00AM\",\"end_time\":\"11:59PM\",\"start_day\":\"MONDAY\",\"end_day\":\"MONDAY\"}]" AS json_string)
    SELECT
      TO_JSON_STRING(ARRAY_AGG(t))
    FROM (
      SELECT
        JSON_QUERY(array_elements,
          '$.start_day') AS start_day,
        JSON_QUERY(array_elements,
          '$.end_day') AS end_day,
        JSON_QUERY(array_elements,
          '$.start_time') AS start_time,
        JSON_QUERY(array_elements,
          '$.end_time') AS end_time
      FROM
        jdata j,
        UNNEST(JSON_EXTRACT_ARRAY(j.json_string)) array_elements) AS t
    

    不是很漂亮,抱歉..

    编辑:

    在您的情况下,您需要通过将“jdata”替换为您的表地址(类似于yourproject.yourdataset.yourtable)和“j.[JSON 字符串的列名]”替换“j.json_string”来更改 FROM 语句

    【讨论】:

    • 我如何获得查询的第一部分...我不想硬编码像 [{\"start_time\":\"06:00AM\",\"end_time 这样的值\":\"11:59PM\",\"start_day\":\"SUNDAY\",\"end_day\":\"SUNDAY\"},{\"start_time\":\"06:00AM\" ,\"end_time\":\"11:59PM\",\"start_day\":\"MONDAY\",\"end_day\":\"MONDAY\"}]" AS json_string) 我如何在没有硬编码?
    • 哦,你不必这样做。那部分是为了复制你的数据。在您的情况下,您只需要修改 FROM 语句。
    • 编辑了答案
    • $[0] 有什么作用?当我使用此查询时,结果为空
    • $[0] 为您提供 JSON 数组的元素 0。在您的情况下,关于 SUNDAY 的元素
    猜你喜欢
    • 2016-04-26
    • 2015-04-01
    • 1970-01-01
    • 2020-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多