You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在BigQuery中创建调度查询以将新表数据追加至现有表?

如何通过调度查询自动追加BigQuery新增表数据到统一数据源?

方法1:用通配符表简化合并(新手友好)

先确保你的周表命名有统一规律(比如Oct_Wk1_2022、Oct_Wk2_2022这类包含Wk和年份的格式),然后用通配符表一次性匹配所有符合规则的周表,无需手动修改UNION ALL:

SELECT
  Date, Time, Category, Item, Qty, Price_Point_Name, SKU, Modifiers_Applied,
  Gross_Sales, Discounts, Net_Sales, Tax, Location, Customer_Name
FROM
  `store-sales-daily-item-summary.Square_Sales_2022.*`
WHERE
  _TABLE_SUFFIX LIKE '%Wk%_2022' -- 只匹配周表命名格式的表

配置调度与追加:

  1. 在BigQuery控制台创建保存查询,粘贴上述SQL
  2. 点击右上角「调度」,设置运行频率(比如每周一,对应你完成GCS数据导入的时间)
  3. 在「目标表」设置中,选择你的统一数据源表(比如Unified_Sales)
  4. 写入偏好选择追加到表,每次调度运行时,新增周表的数据会自动追加到目标表

方法2:动态生成SQL(适配灵活表命名)

如果你的表命名无固定前缀,或需要更精准的过滤(比如只同步最近一周新增的表),可以用INFORMATION_SCHEMA动态生成合并语句:

DECLARE sql STRING;

-- 自动生成所有符合条件的表的UNION ALL语句
SET sql = (
  SELECT STRING_AGG(
    CONCAT(
      'SELECT Date, Time, Category, Item, Qty, Price_Point_Name, SKU, Modifiers_Applied, Gross_Sales, Discounts, Net_Sales, Tax, Location, Customer_Name FROM `',
      table_catalog, '.', table_schema, '.', table_name, '`'
    ),
    ' UNION ALL '
  )
  FROM `store-sales-daily-item-summary.Square_Sales_2022.INFORMATION_SCHEMA.TABLES`
  WHERE table_name LIKE '%Wk%_2022'
    -- 仅同步最近7天创建的表,避免重复同步历史数据
    AND creation_time > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 7 DAY)
);

-- 执行动态SQL并追加到目标表
EXECUTE IMMEDIATE sql;

同样按上述步骤配置调度,选择追加模式即可。

核心注意事项

  • 所有周表必须字段结构完全一致(字段名、数据类型、顺序),否则UNION ALL会报错
  • 调度时间要晚于GCS数据导入BigQuery周表的时间,确保新增表已生成
  • 若担心重复数据,可给目标表添加唯一键(如Date+Time+SKU+Location),改用MERGE语句替代直接追加,但新手优先保证周表无重复数据,用追加模式更简单

内容的提问来源于stack exchange,提问作者Sean Henry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 09:35:18