Tableau表过滤器仅用于表中的一列

时间:2016-08-25 14:47:45

标签: tableau calculated-field

我有一个我无法弄清楚的基本问题。我需要创建一个具有多个计算字段的表,但我只需要为特定维值过滤一个计算字段。例如,我有以下数据集(虚拟数据),我想创建一个表格,其中包括两家公司的总点击次数,但仅来自一家公司的公司B的[每次点击费用]。

数据集

Company| Clicks| $ Cost
------------------------
Comp A | 100   | $20
Comp B | 200   | $40

我正在寻找什么

       CLICKS | COST/CLICK
TOTAL   300   |  $0.13 

0.13美元来自40/300; B公司40美元,A公司和B公司点击300次。

如何创建一个具有多个计算的表,但其中一个计算仅在一个维度值上进行过滤?

2 个答案:

答案 0 :(得分:0)

这应该让你朝着正确的方向前进。 根据您的问题和评论,您希望将费用除以数据集中的总点击次数。

  1. 创建一个名为" TotalClicks"的计算字段。并输入此公式 window_sum(sum([Clicks])) //此公式将汇总所有行的点击字段
  2. 创建一个名为Cost / Clicks的计算字段,然后输入此公式 sum([Cost]) / [TotalClicks] 将成本/点击字段添加到工作表中,它应该如下所示
  3. 注意:如果您需要对报告进行分区/分组,则可能需要使用此方法。我经常不在tableau中使用窗口函数,因为我通常在数据源级别处理聚合。

    enter image description here

    注意:由于您提到了过滤,我将添加此声明 - 如果您过滤掉任何数据,那么该数据将不会(不能)包含在任何计算字段中(据我所知和经验,无论如何)。如果您需要包含该数据(总点击次数),我想想唯一的选择是将汇总的总数添加到您的数据集中 - 否则,如果您要将其过滤掉,则表格无法计算。

    Edit2:如果您无法更改基础数据集,可以通过创建另一个数据源并将其连接到初始数据源来实现此目的 -

    1. 数据>添加数据源,再次添加数据源并更改名称以便识别它
    2. 点击数据>编辑关系。单击自定义并删除任何链接的字段 - 这将基本上产生笛卡尔连接(第一个数据源中的每个记录将包含来自第二个数据源的每个记录)
    3. 选择第二个数据源并使用相同的window_sum函数创建计算字段(ClicksTotal_DS2)
    4. 选择第一个数据源并使用此公式创建计算字段(名为Cost / Clicks_DS2) sum([Cost])/ [Sheet1 (test) (2)].[ClicksTotal_DS2]
    5. 现在,您可以将过滤器应用于第一个数据源,而第二个数据源仍将计算总数。 enter image description here

答案 1 :(得分:0)

一个简单的计算字段:

sum(if [Company] = 'B' then [Cost] end )/sum([Click])