使用Tableau进行VLookup

问题描述 投票:2回答:2

Tableau的新手很抱歉,如果这是显而易见的,但我有一次打猎,无法找到/理解任何东西。所以我有一家蛋糕店,我想知道人们是否以同样的顺序同时购买了éclairs和Eccles蛋糕

ORDER ID     item 
0001         éclair
0001         iced bun
0001         Eccles cake
0002         éclair 
0002         iced bun
0003         éclair          
0003         Eccles cake     

我想要的输出如下:

ORDER ID     item          éclair?
0001         éclair          0
0001         iced bun        0
0001         Eccles cake     1
0002         éclair          0
0002         iced bun        0
0003         éclair          0
0003         Eccles cake     1

我认为它需要像查找或帮助列这样的东西?!

作为参考,我有一个数据集(一个csv文件),所以我猜我不能运行SQL查询?

lookup tableau formulas
2个回答
0
投票

以下是我能够做到这一点的方法 - 可能有一种我不熟悉的更好方法。不过...


脚步:

  1. 在表格中,将Order IdItem添加到Rows部分。
  2. 复制数据源(右键单击>复制)。我将原作为A,副本称为B
  3. 取消关联Item字段。通过单击字段名称右侧的橙色链链接图标即可完成此操作。灰色链接就是你想要的。保持Order Id字段链接(橙色)。
  4. 保持同一张表,单击数据源B并创建这两个计算字段:Cake_Flag:MAX(IF [Item] = 'Eccles cake' THEN 1 ELSE 0 END) Eclair_Flag:MAX(IF [Item] = 'éclair' THEN 1 ELSE 0 END)
  5. 选择它返回数据源A并创建这个新的计算字段:éclair?:IF ATTR([Item]) = 'Eccles cake' AND [Data Source B].[Eclair Flag] = 1 AND [Data Source B].[Cake Flag] = 1 THEN 1 ELSE 0 END [Data Source B]应该替换为B数据源的名称。
  6. 将新计算的字段éclair?放入文本卡中。

结果:

enter image description here


-1
投票

请参阅Set difference: find distinct members for two groups in Tableau Desktop,了解几种可能的方法之一。关键是编写一个汇总的计算字段,用于计算订单ID是否包含两个感兴趣的项目。

您可以在集合中使用该计算,也可以直接在订单ID为维度的视图中使用该计算。

一个例子是:

count(if item = "eclair" then 1 end) > 0 and count(if item = "Eccles cake" then 1 end) > 0

对于具有至少一个eclair项目和至少一个Eccles蛋糕项目的订单,此(汇总)计算返回true,对于其他订单则为false。

为此,您需要将订单ID作为视图中的维度,而不是项目,以便计算一次应用于订单中的所有项目。这回答了您提出的问题,但每个订单显示一行而不是每个订单/项目一行。

如果您确实需要指定的确切输出形式,则将此计算转换为LOD计算,例如:

{ FIXED [ORDER ID] : count(if item = "eclair" then 1 end) > 0 and count(if item = "Eccles cake" > 0 then 1 end) }

然后在每个订单ID /项旁边显示一列,以指示订单是否包含eclair和cake。 (这也不是您显示的所需输出)或使用此新字段以及当前项目来定义最终计算,当且仅当项目为蛋糕并且订单包含两者时才为1。

这评估为真和假。我认为如果需要你可以转换为1和0。

© www.soinside.com 2019 - 2024. All rights reserved.