json - 从 json 中选择键值对作为 Snowflake 中的行
问题描述
假设我有以下 JSON:
{
"CURRENCY_CODE": "INR",
"CURRENCY_NAME": "Indian Rupee",
"ID_CURRENCY": 8,
"ISO_CODE": 4217
}
我想在雪花中查询它,所以我得到以下输出:
钥匙 | 价值 |
---|---|
货币代码 | 印度卢比 |
CURRENCY_NAME | 印度卢比 |
ID_CURRENCY | 8 |
ISO_CODE | 4217 |
我期待类似的东西:
select d.key, d.value
from table('Here goes json') d
Snowflake 有什么功能可以实现这一点吗?
解决方案
您可以LATERAL FLATTEN()
在 FROM 子句中使用来实现此目的。
举个例子:
SELECT fdt.KEY, fdt.VALUE
FROM VALUES('{
"CURRENCY_CODE": "INR",
"CURRENCY_NAME": "Indian Rupee",
"ID_CURRENCY": 8,
"ISO_CODE": 4217
}') dt
,lateral flatten( input => parse_json(column1) ) fdt;
钥匙 | 价值 |
---|---|
货币代码 | 印度卢比 |
CURRENCY_NAME | 印度卢比 |
ID_CURRENCY | 8 |
ISO_CODE | 4217 |