在 Bigquery 中操作字典值

Manipulating dict values in Bigquery

我有一个 bigquery table 列,其中包含类似

的数据

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

我想将上面的重新排序为

[{"start_day":"星期日","end_day":"星期日","start_time":"06:00AM","end_time":"11:59PM"},{"start_day":"星期一","end_day":"星期一","start_time":"06:00AM"," end_time":"晚上 11:59"}]

这里有一个可行的方法:

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

不是很漂亮的方式,抱歉..

编辑:

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