在BigQuery中合并2022年1月-2023年5月多数据集指定列
BigQuery合并月度数据集并提取指定列的实现方案
前提说明
假设你的2022年1月至2023年5月的月度数据集存储在同一个BigQuery项目的源数据集下,表名遵循统一命名规则(例如ride_data_202201、ride_data_202202……ride_data_202305)。
方法一:手动UNION ALL(适合表数量不多的场景)
直接通过UNION ALL逐个提取各表的目标列,合并到新表中:
CREATE OR REPLACE TABLE `你的项目ID.目标数据集.combined_ride_data` AS SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202201` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202202` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202203` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202204` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202205` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202206` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202207` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202208` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202209` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202210` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202211` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202212` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202301` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202302` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202303` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202304` UNION ALL SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_202305`;
方法二:通配符表批量处理(高效便捷)
如果表名有统一前缀,可利用BigQuery的通配符表功能,配合_TABLE_SUFFIX过滤目标时间范围的表:
CREATE OR REPLACE TABLE `你的项目ID.目标数据集.combined_ride_data` AS SELECT rideable_type, started_at, member_casual FROM `你的项目ID.源数据集.ride_data_*` WHERE -- 根据表名后缀过滤2022年1月至2023年5月的表 _TABLE_SUFFIX BETWEEN '202201' AND '202305';
注意事项
- 替换代码中的
你的项目ID、源数据集、目标数据集为你实际的项目和数据集名称 - 确保所有源表的
rideable_type、started_at、member_casual列数据类型一致,避免合并时出现类型不兼容错误 - 若表名规则不同(例如
2022_01_ride_data),需调整_TABLE_SUFFIX的过滤条件,比如改为_TABLE_SUFFIX BETWEEN '2022_01' AND '2023_05'
内容的提问来源于stack exchange,提问作者caskelle
相关产品推荐
相关产品推荐

