BigQuery - 是否可以在 à FROM 中使用 IF 语句?

sha*_*oux 2 sql google-bigquery

我想做以下事情

FROM if(... = ...,
        table_date_range(mytable, timestamp('2017-01-01'), timestamp('2017-01-17')),
        table_date_range(mytable, timestamp('2016-01-01'), timestamp('2016-01-17'))
      )
Run Code Online (Sandbox Code Playgroud)

BigQuery 允许这种操作吗?

Ell*_*ard 5

您可以使用一个条件做到这一点_TABLE_SUFFIX标准SQL。例如,

SELECT *
FROM `my-dataset.mytable`
WHERE IF(condition,
         _TABLE_SUFFIX BETWEEN '20170101' AND '20170117',
         _TABLE_SUFFIX BETWEEN '20160101' AND '20160117');
Run Code Online (Sandbox Code Playgroud)

要记住的一件事是,由于匹配的表后缀可能是动态确定的(基于表中的某些内容),因此您需要支付全表扫描费用。