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

Bigquery: BAD_QUERY (The query requires too many resources to parse)

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

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

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

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

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

重写查询
CASE WHEN THEN

可能有助于保持在限制以下。

谢谢。

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