Sql BigQuery-是否可以在à;从…起
我想做以下几件事Sql BigQuery-是否可以在à;从…起,sql,google-bigquery,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')) ) BigQuery上是否允许这种操作?您可以使用中的\u TABLE\u SUFFIX上的
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'))
)
BigQuery上是否允许这种操作?您可以使用中的
\u TABLE\u SUFFIX
上的条件来执行此操作。比如说,
SELECT *
FROM `my-dataset.mytable`
WHERE IF(condition,
_TABLE_SUFFIX BETWEEN '20170101' AND '20170117',
_TABLE_SUFFIX BETWEEN '20160101' AND '20160117');
需要记住的一件事是,由于匹配的表后缀可能是动态确定的(基于表中的某些内容),因此将对完整表扫描收取费用 对于BigQuery遗留SQL(您的问题中的代码更像),您可以使用表通配符函数来实现这一点
见下例:
SELECT
...
FROM
TABLE_QUERY([mydataset],
"CASE WHEN ... = ...
THEN REPLACE(table_id, 'mytable_', '') BETWEEN '20170101' AND '20170117'
ELSE REPLACE(table_id, 'mytable_', '') BETWEEN '20160101' AND '20160117'
")
或者,使用IF()
同时,在可能的情况下,考虑
SELECT
...
FROM
TABLE_QUERY([mydataset],
"IF(... = ..., REPLACE(table_id, 'mytable_', '') BETWEEN '20170101' AND '20170117',
REPLACE(table_id, 'mytable_', '') BETWEEN '20160101' AND '20160117')
")