Bigquery:BAD_QUERY(查询需要太多资源才能解析)

时间:2015-07-10 02:04:47

标签: google-bigquery

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

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

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

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

我还没试过,但想知道是否用

重写查询
CASE WHEN THEN

可能有助于保持在极限之下。

谢谢。

1 个答案:

答案 0 :(得分:3)

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