【问题标题】:Bought items in last 3 orders for each customer in tableau desktop在 tableau desktop 中为每位客户购买了最近 3 个订单中的商品
【发布时间】:2021-02-15 17:17:00
【问题描述】:

我正在尝试在每个客户的最后 3 个订单中查找购物篮商品(类别、子类别)。所以,最后,我希望根据最近 3 个订单中大部分购买的商品或类别对客户进行聚类。我一直在寻找一种解决方案来计算每个客户的最后 3 个订单。我应该使用 LOD 表达式,但使用哪一种以及如何使用?

我认为使用 Fixed [Client id] 是起点。我是否应该降序排列订单(基于订单日期),然后用“

【问题讨论】:

  • 能否请您至少提供一些数据结构的数据/屏幕截图来详细说明您的问题
  • 再告诉我一件事,任何客户在任何给定日期都可以有超过 1 个订单吗?如果客户在上次购买日期有超过 3 个订单怎么办?我的意思是,您将如何从该范围内选择 3 个订单?

标签: tableau-api


【解决方案1】:

尝试在 sample superstore 数据上复制您的问题。

  • 创建此计算将为每个客户提供last order
{fixed [Customer Name]: max([Order Date])} = [Order Date]
  • 创建这个计算会给你last 2 orders
{Fixed [Customer Name]:MAX(
If [Order Date] <> {fixed [Customer Name]: max([Order Date])} 
then [Order Date] END
)} = [Order Date]
OR 
{fixed [Customer Name]: max([Order Date])} = [Order Date]
  • 类似地创建这个计算会给你last 3 orders
{ FIXED [Customer Name] : max( IF 
{Fixed [Customer Name]:MAX(
If [Order Date] <> {fixed [Customer Name]: max([Order Date])} 
then [Order Date] END
)} <> [Order Date]
AND 
{fixed [Customer Name]: max([Order Date])} <> [Order Date]
THEN [Order Date] END)} = [Order Date]
OR
{Fixed [Customer Name]:MAX(
If [Order Date] <> {fixed [Customer Name]: max([Order Date])} 
then [Order Date] END
)} = [Order Date]
OR 
{fixed [Customer Name]: max([Order Date])} = [Order Date]

唯一的假设是在任何给定日期的订单不超过 1 个。

检查一下

【讨论】:

  • 如果您可以安全地假设(或强制执行)像 ORDER_ID 这样的标识符会随着时间的推移而单调增加(即,具有较高 order id 的事务比具有较低 order id 的事务更晚完成),那么使用它会更安全标识符而不是日期来识别最新的交易。这样您就不必担心多个交易共享同一日期的情况。大多数系统强制多个交易不会共享相同的订单 ID 或其他主键 - 所以要利用这一点。
猜你喜欢
  • 2023-03-28
  • 2011-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多