如何在Snowflake中使用Lateral Flatten解析嵌套JSON并提取指定字段
提取嵌套JSON中指定event_params的string_value值
针对需求,这里提供修改后的SQL语句,实现从event_params数组中提取key为"link_class"对应的string_value,并作为link_class列返回:
select raw, raw:device.web_info.hostname::string as hostname, ev.value:value.string_value::string as link_class from ANALYTICS_323116990 t, lateral flatten(input => t.raw:event_params) ev where ev.value:key::string = 'link_class'
关键改动说明:
- 过滤目标参数:通过
where子句筛选出event_params中key等于'link_class'的数组元素,避免返回无关参数项(比如示例中的page_title) - 精准提取值:通过
ev.value:value.string_value::string深度访问嵌套结构,提取目标字符串值并显式转换为字符串类型 - 优化flatten路径:将
flatten的输入直接指定为t.raw:event_params,语法更简洁清晰
如果你的数据中存在单条记录包含多个link_class参数的情况,可以使用聚合函数合并结果为数组:
select raw, raw:device.web_info.hostname::string as hostname, array_agg(ev.value:value.string_value::string) as link_class_list from ANALYTICS_323116990 t, lateral flatten(input => t.raw:event_params) ev where ev.value:key::string = 'link_class' group by raw, hostname
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

