将旧版SQL查询转换为标准SQL

时间:2019-04-23 21:37:24

标签: sql google-bigquery standard-sql legacy-sql

我希望将以下旧版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

此查询运行,但是行数明显少于我的预期。

1 个答案:

答案 0 :(得分:1)

对标准SQL中的查询的快速而正式的修复类似于在下面替换

(select l.value from unnest(labels) as l)    

(select string_agg(l.value) from unnest(labels) as l)   

但是它仍然与您的旧版SQL查询的初始版本不完全相同