【发布时间】:2020-03-28 16:50:16
【问题描述】:
我正在使用Snowflake SQL(通常是语法和 SQL 的新手)并尝试访问我的 json 数组的第二级以打印 name 和 value。当值不断变化时,您如何深入到 json 数组中,即在哪里说 Chase Operating - xxxx 您可以想到每个不同的名称,因此没有明确的键值可以指定....我尝试使用 Flatten功能,它最终只是复制了我已经拥有的东西。
我做错了什么?
SELECT
c.id,
pnl.PREPARED: "balanceSheet"."report"."Assets"."Cash and Cash Equivalents"."rows" as "banks"
//,lateral flatten(input => parse_json(pnl.PREPARED: "balanceSheet"."report"."Assets"."Cash and Cash Equivalents"."rows"))
FROM
COMPANY c
LEFT JOIN pnl on pnl.COMPANY_ID = c.ID
WHERE
(pnl.PREPARED: "balanceSheet"."report"."Assets"."Cash and Cash Equivalents"."rows") is not null
and pnl.FROM_DATE > '2020-01-31'
AND pnl.TO_DATE <= '2020-2-29'
尝试的扁平化功能
,lateral flatten(input => parse_json(pnl.PREPARED: "balanceSheet"."report"."Assets"."Cash and Cash Equivalents"."rows"))
结果:
-------------
ID: 10001
Banks:
{
"Chase Operating - 1111": {
"emphasize": false,
"name": "Chase Operating - 1111",
"rawValue": 111.6,
"value": "112"
},
"Chase Payroll - 2222": {
"emphasize": false,
"name": "Chase Payroll - 2222",
"rawValue": 222.21,
"value": "222"
}
}
【问题讨论】:
-
请分享示例数据
-
完整的样本数据非常大,由于它的明显性质,我无法分享原始数据。这样就足够了,所以您可以了解关键级别吗? {“资产负债表”:{“datePeriod”:“2020 年 2 月 29 日”,“报告”:{“资产”:{“现金和现金等价物”:{“行”:{“大通运营 - 1111”:{“强调": false, "name": "Chase Operating - 1111", "rawValue": 111.6, "value": "112" }, "Chase Payroll - 2222": { "emphasize": false, "name": "Chase工资单 - 2222", "rawValue": 222.21, "value": "222" } }}}}}}
标签: sql snowflake-cloud-data-platform