我在 Athena 中的 JSON 字符串如下:
[{name=agreementUrl, value=agmt-id00001}, {name=sellerOfRecord, value=ABC Corporation}]
[{name=agreementUrl, value=agmt-id00002}, {name=sellerOfRecord, value=XYZ Corporation}]
我正在尝试在单独的协议 ID 和 sellerOfRecord 列中获取协议 ID 的值。通过下面的查询,我能够获取这些值,但这些值位于单独的行中。如何在同一条结果记录中获取协议ID和对应的供应商?
SELECT
license_metadata.name,license_metadata.value
FROM
json_licensedata
CROSS JOIN UNNEST(licensemetadata) t (license_metadata)
名字 | 价值 |
---|---|
协议网址 | agmt-id00001 |
卖家记录 | ABC公司 |
协议网址 | agmt-id00002 |
卖家记录 | XYZ 公司 |
预期输出:
协议ID | 卖家记录 |
---|---|
agmt-id00001 | ABC公司 |
agmt-id00002 | XYZ 公司 |
您可以对查询生成的数据集应用条件聚合:
SELECT MAX(CASE WHEN name = 'agreementUrl' THEN value) as Agreement ID,
MAX(CASE WHEN name = 'sellerOfRecord' THEN value) as sellerOfRecord
FROM (
SELECT licensemetadata, license_metadata.name, license_metadata.value
FROM json_licensedata
CROSS JOIN UNNEST(licensemetadata) t (license_metadata)
) as s
GROUP BY licensemetadata