如何在Snowflake中创建嵌套JSON列实现多列转换
Snowflake 多列转指定嵌套JSON结构实现方法
使用OBJECT_CONSTRUCT+ARRAY_CONSTRUCT未得到预期结果,基本都是嵌套层级顺序写错导致,按以下写法即可生成完全符合要求的嵌套JSON:
可直接运行的SQL代码
将下方的your_source_table替换为你实际的源表名即可执行:
SELECT id, ARRAY_CONSTRUCT( -- 组装product_1节点 OBJECT_CONSTRUCT( 'product_1', OBJECT_CONSTRUCT( 'name', product_1, 'product_1_purchase_date', product_1_purchase_date ) ), -- 组装product_2节点 OBJECT_CONSTRUCT( 'product_2', OBJECT_CONSTRUCT( 'name', product_2, 'product_2_purchase_date', product_2_purchase_date ) ) ) AS json_combined FROM your_source_table;
层级逻辑说明
- 最内层
OBJECT_CONSTRUCT:生成单个产品的属性对象,固定包含name(产品名)、对应购买日期两个字段 - 中间层
OBJECT_CONSTRUCT:给单个产品属性包上外层键名(product_1/product_2),对应期望结构里的外层产品标识 - 最外层
ARRAY_CONSTRUCT:把两个组装好的产品对象合并为数组,就是最终的json_combined字段
输出校验
用你提供的样例数据执行后,生成的JSON结构和给出的期望输出完全一致,不存在字段错位、嵌套层级错误的问题。
内容的提问来源于stack exchange,提问作者thecoder
相关产品推荐
相关产品推荐

