我的表中有两个string
格式的列.其中一列包含json对象.JSON对象中的键是不固定的-所以问题是我不能使用标准的JSON提取函数.下面是表格的外观
timestamp | upstream_tables |
---|---|
2023-02-02T17:34:55.946Z | {"ETL_table_1":true,"ETL_table_2":true} |
2023-02-02T13:30:11.882Z | {"ETL_table_3":true} |
2023-02-02T20:12:22.116Z | {"ETL_table_4":true,"ETL_table_5":true,"ETL_table_6":false} |
我想把这张桌子压平成下面这样的样子
timestamp | upstream_tablename | was_completed |
---|---|---|
2023-02-02T17:34:55.946Z | ETL_table_1 | TRUE |
2023-02-02T17:34:55.946Z | ETL_table_2 | TRUE |
2023-02-02T13:30:11.882Z | ETL_table_3 | TRUE |
2023-02-02T20:12:22.116Z | ETL_table_4 | TRUE |
2023-02-02T20:12:22.116Z | ETL_table_5 | TRUE |
2023-02-02T20:12:22.116Z | ETL_table_6 | FALSE |
有人能帮帮忙吗?我花了很多时间使用map_values和map_key,但就是做不对.
我唯一能想到的最接近的东西就是这个
select
timestamp,
t.*
FROM mytable
CROSS JOIN UNNEST(map_entries(CAST(json_extract(upstream_tables, '$') AS MAP(VARCHAR, VARCHAR)))) AS t