首页 > 解决方案 > 从 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 有什么功能可以实现这一点吗?

标签: jsonsnowflake-cloud-data-platform

解决方案


您可以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

推荐阅读