【问题标题】:Translation table_date_range to table_suffix does not work because response is too large将 table_date_range 转换为 table_suffix 不起作用,因为响应太大
【发布时间】:2019-06-06 22:31:33
【问题描述】:

我在 BigQuery Legacy SQL 中有以下查询。到目前为止,此查询运行没有问题。

#legacySQL
SELECT
  Var1 AS Var1,
  Var2 AS Var2,
  Var3 AS Var3,
  Var4 AS Var4,

FROM
TABLE_DATE_RANGE([xxx.yyy_],   DATE_ADD(CURRENT_TIMESTAMP(), -33, 'DAY'), DATE_ADD(CURRENT_TIMESTAMP(), -1, 'DAY'))

在我们要将所有查询逐步移至 StandardSQL 之后,新查询已在 StandardSQL 中编写如下。

#standardSQL
SELECT
  Var1 AS Var1,
  Var2 AS Var2,
  Var3 AS Var3,
  Var4 AS Var4,

FROM
`xxx.yyy_20*`

WHERE

parse_date('%y%m%d', _table_suffix) between DATE_ADD(CURRENT_DATE(), INTERVAL -33 DAY) AND DATE_ADD(CURRENT_DATE(), INTERVAL -1 DAY)

但是,此查询不再运行,而带有 LegacySQL 的变体工作正常。我收到以下错误消息:错误:响应太大而无法返回。考虑在您的作业配置中将 allowLargeResults 设置为 true。

带有 _table_suffix 的变体性能差很多吗?还是有替代方案?我使用 Table_Date_Range 来查询大约 400 个表。

我想将结果保存为视图,而不必通过“AllowLargeResults”将它们写入表格。

非常感谢!

【问题讨论】:

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


    【解决方案1】:

    创建视图应该没有问题。但是,当您查询视图时,您要么需要选择特定日期,要么将结果写入表中。

    【讨论】:

    • 感谢您的快速回答。是的,你是对的,我可以保存查询本身。但是,如果我执行它,我不会得到任何结果,而是会收到上面提到的错误消息。所以我理解正确的是,使用 StandardSQL 只能显示比使用 LegacySQL 小得多的结果。除了“AllowLargeResults”的可能性?
    • 是的,如果结果比较大,您需要将结果保存到表中。 UI 仍将显示查询结果。
    猜你喜欢
    • 2018-02-11
    • 2018-07-18
    • 1970-01-01
    • 2016-04-02
    • 2014-11-23
    • 2016-02-26
    • 2018-07-04
    • 2018-12-08
    • 1970-01-01
    相关资源
    最近更新 更多