Athena SQL - 无法根据需要 UNNEST JSON 字符串

问题描述 投票:0回答:1

我在 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 公司
sql amazon-athena presto trino
1个回答
0
投票

您可以对查询生成的数据集应用条件聚合:

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
© www.soinside.com 2019 - 2024. All rights reserved.