在 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 字符串的列名]"
我有一个 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 字符串的列名]"