繁体   English   中英

有没有办法用雪花压平 json 列表?

[英]Is there a way to flatten a json list with snowflake?

我有一个列是我的表中的列表我想展平/扩展到列,以便我可以从中转换它

{"name a":1,"name b":1,"name c":1,"name d":1,"name e":1}

对此

|name a |name b|name c|name d |name e|

| 1 |1 |1 |1 |1 |

每个都是它自己的列

我找不到这样做的动态方式。 无论您是展平然后旋转列备份还是按照下面的这种方式进行操作,您都需要引用列名称。 可能有一种方法可以在存储过程中动态执行此操作或在 Python 或其他语言中动态创建 SQL:

-- Creating a Mock table to query
WITH json_table AS (
  SELECT TO_VARIANT(PARSE_JSON('{"name a":1,"name b":1,"name c":1,"name d":1,"name e":1}')) AS json_field
  UNION ALL 
  SELECT TO_VARIANT(PARSE_JSON('{"name a":2,"name b":2,"name c":2,"name d":2,"name e":2}')) AS json_field

)

SELECT json_field:"name a" AS "name a"
      ,json_field:"name b" AS "name b"
      ,json_field:"name c" AS "name c"
      ,json_field:"name d" AS "name d"
      ,json_field:"name e" AS "name e"
FROM json_table j
;

创建或替换表 test222(src 变体)

作为

选择 parse_json(column1) 作为 src

from values('{"name a":1,"name b":1,"name c":1,"name d":1,"name e":1}')

select src:"name a" as "name a",src:"name b" as "name b",src:"name c" as "name c",src:"name d" as "name d",src :"name e" as "name e" from test222

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM