如何在BigQuery中从分区表选取数据并排除指定日期版本?
排除分区表特定错误版本的可行方法
以下是几种能解决你问题的实用方案:
方案一:利用表内日期字段过滤
如果你的分区表每条记录都带有对应分区的日期字段(比如partition_date),直接在查询中添加过滤条件即可:
SELECT Customer_id FROM Company.database.Customer_* WHERE partition_date != '2022-06-08'
这种方法不受分区命名规则限制,只要表结构包含日期字段就可以稳定生效。
方案二:精准匹配分区范围(按命名规则)
如果分区命名严格遵循Customer_YYYYMMDD格式,可以通过拆分时间区间来避开错误分区:
SELECT Customer_id FROM Company.database.Customer_202201[01-31], Company.database.Customer_20220[2-5]*, Company.database.Customer_202206[01-07], Company.database.Customer_202206[09-30], Company.database.Customer_2022[07-12]*
把查询范围拆分为:2022年1月全月、2-5月所有分区、6月1-7日、6月9-30日、7-12月所有分区,直接排除Customer_20220608。
方案三:用EXCEPT子句排除错误分区数据
先查询所有分区的数据,再减去错误分区的内容:
SELECT Customer_id FROM Company.database.Customer_* EXCEPT SELECT Customer_id FROM Company.database.Customer_20220608
逻辑简单直接,不需要拆分复杂的区间,只要明确错误分区的完整名称即可。
内容的提问来源于stack exchange,提问作者Jeany
相关产品推荐
相关产品推荐

