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

如何在BigQuery的ARIMA_PLUS中用补零替代插值做预测?

在BigQuery中用ARIMA_PLUS处理缺失零销售日期的预测方案

不用提前给原销售表填充零行,而是通过动态生成完整日期-产品序列的方式,在查询时临时补全无销售日期的零值,再喂给ARIMA_PLUS模型。这种方式不会增大原表体积,完全在查询层处理。

具体实现步骤

  • 生成每个产品的完整日期范围:用GENERATE_DATE_ARRAY生成需要覆盖的日期区间,结合从销售表去重得到的产品列表交叉连接,得到每个产品每天的组合。
  • 左关联销售表:将生成的完整序列和原销售表关联,没有匹配到销售记录的行,用COALESCE把销售金额设为0。
  • 用补全后的完整序列作为ARIMA_PLUS的输入,进行训练或预测。

示例SQL代码

WITH product_dates AS (
  -- 生成所有目标产品的完整日期序列
  SELECT
    p.product_id,
    date
  FROM (
    -- 从销售表提取所有需要预测的产品
    SELECT DISTINCT product_id FROM `your-project.your-dataset.sales_table`
  ) p
  CROSS JOIN UNNEST(
    GENERATE_DATE_ARRAY(
      DATE('2022-01-01'), -- 序列起始日期(根据你的数据调整)
      CURRENT_DATE(),     -- 序列截止到当前日期
      INTERVAL 1 DAY
    )
  ) AS date
),
full_sales_sequence AS (
  -- 补全无销售日期的零值
  SELECT
    pd.product_id,
    pd.date,
    COALESCE(s.sales_amount, 0) AS sales_amount
  FROM product_dates pd
  LEFT JOIN `your-project.your-dataset.sales_table` s
    ON pd.product_id = s.product_id
    AND pd.date = s.date
)
-- 训练ARIMA_PLUS模型并预测未来30天
SELECT
  product_id,
  date,
  sales_amount,
  forecast_value,
  lower_bound,
  upper_bound
FROM ML.FORECAST(
  MODEL `your-project.your-dataset.sales_forecast_model`,
  STRUCT(30 AS horizon), -- 预测未来30天,可调整
  (SELECT * FROM full_sales_sequence)
);

关键说明

  • 这个方案完全基于查询动态生成完整序列,原销售表保持不变,不会产生额外存储开销。
  • ARIMA_PLUS接收到的是包含零值的完整时间序列,训练和预测逻辑会自动识别无销售日期的零值,无需依赖模型的插值默认行为。
  • 如果已经提前训练好模型,只需在预测阶段用同样的full_sales_sequence逻辑构造输入数据即可。

内容的提问来源于stack exchange,提问作者federico giner

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:10:27