【问题标题】:BigQuery: suppressing "Error 404: Not found: Table..."BigQuery:抑制“错误 404:未找到:表...”
【发布时间】:2017-05-15 03:18:06
【问题描述】:

我有如下 BigQuery 表。

AAAAAA_yyyymmdd
BBBBBB_yyyymmdd
CCCCCC_yyyymmdd

我想检索这一分钟内插入的数据。我执行了如下 SQL。

SELECT * FROM [AAAAAA_20170515@-60000-],[BBBBBB_20170515@-60000-],[CCCCCC_20170515@-60000-]

如果所有 AAAAAA_20170515BBBBBB_20170515CCCCCC_20170515 都存在,但不是每天都创建所有表,则此 SQL 工作正常。 如果缺少某些表,我会收到如下错误。

Error 404: Not found: Table BBBBBB_20150515, notFound

我想忽略不存在的表。我知道我可以先检查每个表是否存在,然后构造 SQL。但是,如果我可以抑制Error 404: Not found: Table 错误以提高效率,那是可取的。

我可以吗?

【问题讨论】:

    标签: google-bigquery


    【解决方案1】:

    一种方法是使用Wildcard Tables with _TABLE_SUFFIX filter,尽管如果您对表有一个共同的前缀,它的性能会更好。

    例如:

    SELECT * from `vimota.PREFIX*` where _TABLE_SUFFIX = '_20170515';
    

    【讨论】:

    • 我想使用table decorator。通配符表不支持。
    • 你是对的,目前没有办法完全按照你的要求去做。我建议像您提到的那样以编程方式执行此操作,方法是运行 SELECT table_id FROM vimota.__TABLES__ WHERE table_id like '%_20170515',获取所有现有表并在 FROM 子句中使用它们构建查询。
    猜你喜欢
    • 1970-01-01
    • 2021-05-07
    • 2020-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2015-09-19
    • 2013-12-03
    相关资源
    最近更新 更多