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

Snowflake/DBT环境下已选与取消商品列相减生成最终购物车方案咨询

Snowflake 最终购物车计算实现方案

方案核心逻辑

直接使用Snowflake内置的ARRAY_EXCEPT函数即可实现需求,该函数会返回第一个输入数组中存在、且第二个输入数组中不存在的所有元素,正好匹配「从已选商品中剔除所有取消选择商品」的规则。

分场景实现代码

场景1:Picked、Unpicked列已存储为数组格式

直接调用函数即可:

SELECT 
  Customer_ID,
  Picked,
  Unpicked,
  ARRAY_EXCEPT(Picked, Unpicked) AS Final_Cart
FROM 你的表名;

场景2:Picked、Unpicked列为逗号分隔的字符串格式

先拆分字符串为数组,同时修剪元素前后空格避免匹配失败,再做差值计算:

SELECT 
  Customer_ID,
  Picked,
  Unpicked,
  -- 如需最终输出为逗号分隔字符串,可在外层包裹 ARRAY_TO_STRING(xxx, ',')
  ARRAY_EXCEPT(
    ARRAY(SELECT TRIM(value) FROM TABLE(FLATTEN(INPUT => SPLIT(Picked, ',')))),
    ARRAY(SELECT TRIM(value) FROM TABLE(FLATTEN(INPUT => SPLIT(Unpicked, ','))))
  ) AS Final_Cart
FROM 你的表名;

示例验证

对应你给出的测试案例,函数输出完全符合预期:

  • 客户ID 799235:已选数组为['shirt','pants','glasses'],取消数组为['glasses'],输出['shirt','pants']
  • 客户ID 799246:已选数组为['dress','pants','glasses'],取消数组为['pants','dresses'],dress与dresses为不同元素不会被剔除,最终输出['glasses']

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 14:45:00