[英]How to parse this JSON file in Snowflake?
So I have a column in a Snowflake table that stores JSON data but the column is of a varchar data type.因此,我在存储 JSON 数据的 Snowflake 表中有一个列,但该列是 varchar 数据类型。
The JSON looks like this: JSON 看起来像这样:
{
"FLAGS": [],
"BANNERS": {},
"TOOLS": {
"game.appConfig": {
"type": [
"small",
"normal",
"huge"
],
"flow": [
"control",
"noncontrol"
]
}
},
"PLATFORM": {}
}
I want to filter only the data inside TOOLS and want to get the following result:我只想过滤 TOOLS 中的数据,并希望得到以下结果:
TOOLS_ID TOOLS_ID | TOOLS工具 |
---|---|
game.appConfig游戏.appConfig | type类型 |
game.appConfig游戏.appConfig | flow流动 |
How can I achieve this?我怎样才能做到这一点?
I assumed that the TOOLs can have more than one tool ID, so I wrote this query:我假设 TOOL 可以有多个工具 ID,因此我编写了以下查询:
with mydata as ( select
'{
"FLAGS": [],
"BANNERS": {},
"TOOLS": {
"game.appConfig": {
"type": [
"small",
"normal",
"huge"
],
"flow": [
"control",
"noncontrol"
]
}
},
"PLATFORM": {}
}' as v1 )
select main.KEY TOOLS_ID, sub.KEY TOOLS
from mydata,
lateral flatten ( parse_json(v1):"TOOLS" ) main,
lateral flatten ( main.VALUE ) sub;
+----------------+-------+
| TOOLS_ID | TOOLS |
+----------------+-------+
| game.appConfig | flow |
| game.appConfig | type |
+----------------+-------+
Assuming the column name is C1 and table name T1:假设列名是 C1,表名是 T1:
select a.t:"TOOLS":"game.appConfig"::string from (select
parse_json(to_variant(C1))t from T1) a
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.