如何在Tableau中匹配客户色卡与后续购买商品的颜色关联
在Tableau中实现色卡与后续商品的颜色匹配并生成Conversion字段
嘿,我来帮你搞定这个Tableau的匹配问题!咱们一步步来,确保能得到你想要的Conversion字段结果:
步骤1:提取商品记录中的颜色信息
首先,咱们得把商品名称里的颜色单独拆出来——毕竟商品记录的Swatch Name是Null,颜色藏在Item Name里。创建一个计算字段,命名为商品颜色:
IF [Swatch Name] = 'Null' THEN RIGHT([Item Name], LEN([Item Name]) - FIND([Item Name], '- ') - 1) END
这个公式的逻辑很简单:当这条记录是商品(Swatch Name为Null)时,找到- 的位置,把后面的颜色字符串提取出来,比如Ottoman - Charcoal会被提取成Charcoal。
步骤2:获取客户购买商品前的所有色卡颜色
接下来,要为每条记录(尤其是商品记录)找到同一个客户在当前购买日期之前买过的所有色卡颜色。创建第二个计算字段,命名为客户历史色卡列表:
{FIXED [ID]: STRING_AGG( IF [Item Name] = 'Null' AND [Date] < ATTR([Date]) THEN [Swatch Name] END, ',' ) }
这里用了Tableau的LOD表达式(固定级别表达式):
FIXED [ID]:以客户ID为分组单位STRING_AGG:把符合条件的色卡颜色拼接成逗号分隔的字符串- 筛选条件:只取该客户在当前记录日期之前购买的色卡(
[Item Name] = 'Null'标识色卡记录)
步骤3:生成Conversion判断字段
现在就可以做匹配判断了!创建第三个计算字段,命名为Conversion:
IF [Swatch Name] = 'Null' THEN IF CONTAINS([客户历史色卡列表], [商品颜色]) THEN 'Yes' ELSE 'No' END
逻辑说明:
- 只有商品记录(
Swatch Name为Null)才会生成Yes/No结果 - 如果商品的颜色出现在客户之前买的色卡列表里,就标记
Yes,否则标记No - 色卡记录(
Item Name为Null)的Conversion字段会自动留空,和你给出的示例结果一致
额外注意事项
- 确保你的
Date字段是Tableau能识别的日期格式,不然日期比较会出错 - 如果你的数据里
Null是真正的空值而不是字符串'Null',记得把公式里的'Null'改成NULL(去掉引号)
这样处理之后,你就能得到和示例完全一致的结果啦!
内容的提问来源于stack exchange,提问作者Ankita
相关产品推荐
相关产品推荐

