【问题标题】:Bigquery: BAD_QUERY (The query requires too many resources to parse)Bigquery:BAD_QUERY(查询需要太多资源来解析)
【发布时间】:2015-07-10 23:10:50
【问题描述】:

我有一个以编程方式生成的 BigQuery 查询。 它有一部分像

select *,
       IF(cond1, val1, IF(cond2, val2, IF (cond3, val3, ...))) as x

但是当 IF 的数量增加时,我开始得到 致命错误: 原因:invalidQuery,消息:BAD_QUERY(查询需要太多资源来解析)

我想知道有多少资源可用于解析查询以及这些限制记录在哪里。查询大小本身远低于 256KB。

我还没有尝试,但想知道是否重写查询

CASE WHEN THEN

可能有助于保持在限制范围内。

谢谢。

【问题讨论】:

  • FWIW,用 CASE/WHEN/THEN 重写查询对我的特殊情况有帮助,但我没有检查它是否可以长达 256KB。

标签: google-bigquery


【解决方案1】:

这种情况下的限制不是静态的,也不是查询的长度,而是函数嵌套级别的数量。 BigQuery 在解析过程中检查堆栈深度,如果太深,则会引发错误。 每个可以深入的函数都有可变参数版本,即带有多个参数的 CONCAT,CASE 而不是 IF - 这是此类情况的首选解决方案。

【讨论】:

    猜你喜欢
    • 2020-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多