如何取消嵌套 JSON 数据对象并使用 Snowflake 创建简化的 JSON?
我当前的 JSON 对象如下所示:
-- create a sample table
create or replace table json_example(v variant);
-- create sample json record
insert into json_example
select parse_json(
'[
{
"key": "variable_a",
"value": {
"double_value": null,
"float_value": null,
"int_value": null,
"string_value": "https://example.com"
}
},
{
"key": "variable_b",
"value": {
"double_value": null,
"float_value": null,
"int_value": 2,
"string_value": null
}
}
]');
这是我想要实现的简化 JSON:
{
"variable_a": "https://example.com",
"variable_b": 2
}
How can I get the simple JSON from the multilevel JSON object?
我就是这样想的:
select value:key::string as key, value:value:string_value::varchar as value
from json_example, lateral flatten(input => v)
union all
select value:key::string as key, value:value:int_value::varchar as value
from json_example, lateral flatten(input => v)
先谢谢你了。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因此,如果您希望一切都成为json文本,则可以:
然后向我们展示我们如何构建案例语句,以及如何构建案例语句,并且构建干净的本机对象,例如:
可以将其变成一个单个对象,例如so:
So if you want everthing thing to be JSON text you can:
Which then shows us how to build a CASE statement, and build clean native objects like:
Which can be turned into a single object like so:
这有三个部分:
flattened_rows
看起来像这样:这样:
simpleified_json
最终结果:
更新
我更新了上面的答案以将上面的答案合并到
object_agg找到Simeon的方法。我的原始答案涉及创建利用
object.assign
组合JSON对象的JavaScript UDTF。There are three parts to this:
flattened_rows
looks like this:simplified_json
looks like this:Final results:
Update
I updated the answer above to incorporate the
object_agg
approach Simeon found. My original answer involved creating a JavaScript UDTF that leveragedObject.assign
to combine the json objects.