【发布时间】:2020-01-28 23:46:47
【问题描述】:
我正在尝试编写一个 BigQuery 语句/脚本:
- 检查 table_a 是否存在
- 如果table_a存在,则从table_a中选择col_1、col_2、col_3
- 如果table_a不存在,则从table_b中选择col_1、col_2、col_3
我知道如何做第 1 步:
select count(1) cnt from `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'table_a'
感谢这篇文章: BigQuery check if table exists or not
但是,我无法完成剩下的工作。我试过了:
if (select count(1) cnt from `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'table_a')=1
select col_1, col_2, col_3 from table_a
也试过了:
if (select count(1) cnt from `project.dataset.__TABLES_SUMMARY__`
WHERE table_id = 'table_a')=1
then
select col_1, col_2, col_3 from table_a
这两个都失败了。 在标准 SQL 中,选择语句之外的这种条件逻辑是否可行?
(显然在 select 子句中,我可以使用 case 语句,但是当我想根据条件更改要查询的表时,我不知道如何在此处使用它。而且我可以将语句包装在 Python 代码中并将条件放在那里,但我试图避免使用包装器,因为我希望将查询用作 BQ 中的保存视图)。
提前致谢。
【问题讨论】:
标签: google-bigquery