【发布时间】:2018-01-08 15:14:14
【问题描述】:
我有数百个查询为我公司的仪表板提供动力,这些查询已经工作了多年,但几天前一夜之间崩溃了,给出了错误:
错误:不支持引用其他表的相关子查询,除非它们可以去相关,例如通过将它们转换为有效的 JOIN。
以下是存在问题的查询类型示例。显然 WHERE 条件是问题所在。真的不再支持这种类型的查询吗?现在是否需要将所有使用此语法的查询转换为使用 INNER JOIN?这是一个巨大的变化,真正影响了我们的分析。
-- standardSQL
SELECT
accounts,
monthly_timestamp
FROM
`custom_query_ingestion.accounts_monthly`
WHERE
monthly_timestamp <= (SELECT MAX(TIMESTAMP(date)) FROM `historical_data.historical_revenue`)
【问题讨论】:
-
对于这样的问题,您最好为 BQ 工程团队创建一个公共问题跟踪器,并在此处引用链接。您可以使用问题跟踪器获得更快的答案。如果仍然有,您应该为这两种情况添加示例作业 ID。 issuetracker.google.com/savedsearches/559654
-
谢谢,我会的。我仍然无法确定这是否是一个错误,或者 BigQuery 是否真的不再希望支持使用这种语法的查询
-
@StephanieG 我不是 BigQuery 专家,但您可以将此查询重写为与找到最大时间戳的子查询的交叉联接。可能不是最好的解决方案,但也许可以尝试一下。
-
Stephanie posted the bug on the issue tracker,BigQuery 团队的人员应该能够帮助解决问题。
-
@StephanieG 我看到你是新来的。在下面发布为答案,几天后您可以标记为答案。
标签: google-bigquery bigquery-standard-sql