[英]How to separate a value taken from a table row and store it in an array in a snowflake
[英]snobuilding a table with dynamic columns from a key value array in snowflake
我有下表 -
ID , DATA
1 [{"key":"Apple", "value":2}, {"key":"Orange", "value":3}]
2 [{"key":"Apple", "value":5}, {"key":"Orange", "value":4}, {"key":"Cookie", "value":4}]
我想建立下表:
Id, Apple, Orange, Cookie
1 2 3
2 5 4 4
我嘗試了許多 parse_json 和 flatten 的組合,但似乎沒有一個支持這種結構。
樣本數據:
CREATE OR REPLACE TABLE tab
AS
SELECT 1 ID, PARSE_JSON('[{"key":"Apple", "value":2}, {"key":"Orange", "value":3}]') AS DATA
UNION
SELECT 2, PARSE_JSON('[{"key":"Apple", "value":5}, {"key":"Orange", "value":4}, {"key":"Cookie", "value":4}]');
第 1 步 - 解析:
SELECT id, s.VALUE:key::TEXT AS key, s.VALUE:value::TEXT AS value
FROM tab
,LATERAL FLATTEN(input=>tab.DATA) s;
Output:
第2步:Pivot
WITH cte AS (
SELECT id, s.VALUE:key::TEXT AS key, s.VALUE:value::TEXT AS value
FROM tab
,LATERAL FLATTEN(input=>tab.DATA) s
)
SELECT *
FROM cte
PIVOT(MAX(value) FOR KEY IN ('Apple', 'Orange', 'Cookie')) AS p;
Output:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.