我希望将以下旧版SQL查询转换为标准SQL。我遇到的问题是我需要取消嵌套两个表(标签和信用)。如何转换此查询?谢谢!
每当我尝试重写此查询时,我都会遇到“产生多个元素的标量子查询”(请参见下文)。
旧版SQL查询,我正在尝试重写:
SELECT
service.description,
sku.description,
usage_start_time,
usage_end_time,
labels.key,
labels.value,
cost,
usage.amount,
project.name,
credits.name,
credits.amount
FROM
flatten([gcp_billing_data.gcp_billing_export],
credits)
到目前为止,我在标准SQL中尝试过的操作:
SELECT
service.description AS service,
sku.description AS sku,
usage_start_time,
usage_end_time,
l.key,
l.value,
cost,
usage.amount AS usage,
project.name AS project,
c.name AS credit,
c.amount
FROM
`gcp_billing_data.gcp_billing_export`,
UNNEST(labels) AS l,
UNNEST(credits) AS c
Group by 1,2,3,4,5,7,8,9,10,11
此查询运行,但是行数明显少于我的预期。
答案 0 :(得分:1)
对标准SQL中的查询的快速而正式的修复类似于在下面替换
(select l.value from unnest(labels) as l)
与
(select string_agg(l.value) from unnest(labels) as l)
但是它仍然与您的旧版SQL查询的初始版本不完全相同