如何从 SnowFlake 中的 JSON 字符串解析特定数据?
Posted
技术标签:
【中文标题】如何从 SnowFlake 中的 JSON 字符串解析特定数据?【英文标题】:How to parse a specific data from a JSON string in SnowFlake? 【发布时间】:2020-05-26 23:34:42 【问题描述】:我对 SnowFlake 很陌生,我正在尝试处理数据集。我感兴趣的专栏有多个反馈以 JSON 格式合并为一个,我只想挖掘相关的键。这是让我们说 Column_X 的快照:
寻找一种方法来解析这些数据,使我有一个新列,如“riskIndicator”和“riskIndicator”,其值为 27、74 作为两个新行。我正在尝试像下面的代码一样进行解析,但这不起作用。看过 javascript/UDF 方法,但这篇文章看起来很复杂。
,get_path(parse_json("riskIndicatorLNInstantID"),'riskCode') as riskIndicator
我将感谢您在这里提供任何形式的帮助/建议。 谢谢。
【问题讨论】:
【参考方案1】:因此,如果您遇到的问题是分解 json,您将需要使用 FLATTEN
with data as (
select parse_json('["description":"unable to paste json", "riskCode":"27","seq":1,"description":"typing in json is painful", "riskCode":"74","seq":2]') as json
)
select d.json
,f.value:riskCode as riskIndicator
from data d
,lateral flatten(input=>d.json) f;
给予:
JSON RISKINDICATOR
[ "description": "unable to paste j... "27"
[ "description": "unable to paste j... "74"
【讨论】:
非常感谢@Simeon。这真的很有帮助而且很干净。非常感谢您的快速响应。【参考方案2】:Lateral flatten 可以帮助提取 JSON 对象的字段,并且是使用相应名称逐个提取它们的非常好的替代方法。但是,有时 JSON 对象可以嵌套,通常提取这些嵌套对象需要知道它们的名称
文档参考:https://community.snowflake.com/s/article/Dynamically-extract-multi-level-JSON-object-using-lateral-flatten
【讨论】:
以上是关于如何从 SnowFlake 中的 JSON 字符串解析特定数据?的主要内容,如果未能解决你的问题,请参考以下文章
在我们将其解析为 JSON 之前,Snowflake 如何转义对象数组字符串中的所有特殊字符?
如何从 Snowflake Stage 加载大型 JSON 文件?
从 Snowflake 中的字符串中删除非 ASCII 字符
如何在 Snowflake 中的嵌套 JSON 中获取值(基于相同 JSON 中存在的值)
如何防止 Snowflake Python 连接器在 ARRAY/OBJECT/VARIANT 类型列上进行 json 格式设置?