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

在BigQuery中合并首行与其他行,生成客户全量采购路径

解决BigQuery中生成客户所有采购路径的问题

要生成客户首单之后的所有可能采购路径组合,我们可以通过提取各阶段订单的唯一值,再进行交叉连接来实现。以下是具体的BigQuery SQL方案:

WITH customer_order_stages AS (
  -- 提取每个客户的唯一首单SKU(若客户存在多个首单可根据业务逻辑调整)
  SELECT DISTINCT
    email,
    first_order
  FROM
    `your-project.your-dataset.your-table`
  WHERE
    first_order IS NOT NULL
),
second_order_options AS (
  -- 收集客户所有非空的第二阶段订单SKU并去重
  SELECT DISTINCT
    email,
    second_order
  FROM
    `your-project.your-dataset.your-table`
  WHERE
    second_order IS NOT NULL
),
third_order_options AS (
  -- 收集客户所有非空的第三阶段订单SKU并去重
  SELECT DISTINCT
    email,
    third_order
  FROM
    `your-project.your-dataset.your-table`
  WHERE
    third_order IS NOT NULL
)
-- 关联各阶段选项,生成所有可能的采购路径组合
SELECT
  cos.email,
  cos.first_order,
  soo.second_order,
  too.third_order
FROM
  customer_order_stages cos
INNER JOIN
  second_order_options soo ON cos.email = soo.email
CROSS JOIN
  third_order_options too ON cos.email = too.email
ORDER BY
  cos.email,
  cos.first_order,
  soo.second_order,
  too.third_order;

代码说明:

  • customer_order_stages:确保我们拿到每个客户唯一的首单SKU,避免重复的首单记录干扰结果。
  • second_order_options和third_order_options:分别提取客户在第二、第三阶段出现过的所有非空SKU并去重,得到该阶段的所有可选路径节点。
  • 最后的连接逻辑:先通过INNER JOIN关联首单和第二阶段选项,再用CROSS JOIN关联第三阶段选项,这样就能生成首单之后第二阶段和第三阶段的所有可能组合,完全匹配你期望的结果格式。

如果你的业务场景中存在客户缺少某阶段订单的情况,可以将INNER JOIN改为LEFT JOIN,并根据需求处理NULL值(比如过滤或标记)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 11:52:42