使用过滤器和参数显示完整的数据集 - Tableau 10

时间:2017-12-11 04:48:46

标签: filter parameters tableau

我有一组数据如下。

| AdviserName | PolicyNumber | Product | Status | Duration |
|-------------|--------------|---------|--------|----------|
| Andy        | LIF123       | ANZ     | New    | 2        |
| Andy        | X224         | AXA     | Lapsed | 3        |
| George      | KL1122       | TAL     | New    | 0        |
| George      | OLK43        | AXA     | Lapsed | 5        |
| Ben         | LIF98        | ANZ     | New    | 0        |
| Ben         | KL343        | TAL     | Lapsed | 1        |

我想获取状态=' Lapsed'持续时间在1到3之间。但是我仍然希望显示对应状态='新'为每个顾问。以下是我想看到的预期结果。

| AdviserName | PolicyNumber | Product | Status | Duration |
|-------------|--------------|---------|--------|----------|
| Andy        | LIF123       | ANZ     | New    | 2        |
| Andy        | X224         | AXA     | Lapsed | 3        |
| Ben         | LIF98        | ANZ     | New    | 0        |
| Ben         | KL343        | TAL     | Lapsed | 1        |

我创建了2个参数:

  • MinYear,其值设置为1
  • MaxYear,其值设置为3

我创建了2个计算字段:

  • MinInvYeariif([Duration]>=[Min Year] and [Status] = 'Lapsed', 1, 0)
  • MaxInvYeariif([Duration]<=[Max Year] and [Status] = 'Lapsed', 1, 0)

最后一步,我将两个计算字段放入过滤器并仅勾选过滤器= 1。不幸的是,我得到的是下表。我需要显示状态&#39; New&#39;以及安迪和本。

| AdviserName | PolicyNumber | Product | Status | Duration |
|-------------|--------------|---------|--------|----------|
| Andy        | X224         | AXA     | Lapsed | 3        |
| Ben         | KL343        | TAL     | Lapsed | 1        |

我尝试使用细节级别修改计算字段:

MinInvYear {include [Status] = 'New Business' : iif([Duration]>=[Min Year] and [Status] = 'Lapsed', 1, 0)},我收到错误消息&#39;细节表达级别的结果必须是聚合的。&#39;

我错过了什么?

仅供参考,我使用的是Tableau 10.

感谢大家的帮助。

3 个答案:

答案 0 :(得分:0)

尝试添加一个计算字段(比如说MinInvYear),而不是2个计算字段MaxInvYearFilter for Status and Duration,它会根据您的条件返回一个布尔值

IF ([Status] == 'Lapsed' OR ([MinYear] < [Duration] AND [Duration] < [MaxYear])) THEN
    TRUE
ELSE
    FALSE
END

现在,为此计算字段添加过滤器,以仅显示导致True的记录。

答案 1 :(得分:0)

尝试这个,比特冗长但确实有效:

您只对字段状态的一个方面(Lapsed)进行操作,因此您仅在该值上应用参数值。所以在这里你需要独立地处理该列以获得所需的输出。请遵循以下流程:

  1. 为状态列中的每个值创建2个集:
  2. 设置1:Lapsed

    Here create a set and just select checkbox `Lapsed`.
    

    设置2:New

    Here create a set and just select checkbox `New`.
    
    1. 创建两个计算字段,分别为LapsedNew
    2. 提取所需数据

      计算字段1:Lapsed_Status

      IF [Duration] >= [Min] and [Duration] <= [Max]
      THEN [Lapsed] //Set
      END
      

      计算字段2:New Status

      IF [New]=[New]
      THEN [New] //Set
      END
      
      1. 在2个计算字段中创建另外两个集合(在步骤2中创建),只选择在工作表上显示所需的值:
      2. 设置3:Display_Lapsed //来自计算字段1:New Status

        Select checkbox True
        

        设置4:Display_New //来自计算字段2:Lapsed_Status

        Select checkbox True
        
        1. 现在我们有2套所需的数据,再创建一个计算字段并在过滤器中使用
        2. 计算字段'Display_sheet'

          Display_Lapsed <> Display_New //Both are sets
          
          1. 在过滤条件中使用计算字段Display_sheet并选择true

          2. 使用工作表上的必填字段显示数据。

          3. 让我知道它是怎么回事

答案 2 :(得分:0)

下面的技巧会让你感动

  • 复制数据源(右键点击数据来源&#39;数据&#39;面板 - &gt;&#39;复制&#39;)以上数据
  • 从原始数据源中拖动AdviserName&#39;行&#39;图
  • 点击数据&#39;中的重复数据源。面板。在那里,您可以找到链接符号&#39;每个维度旁边(灰色)。点击“#”链接符号&#39;在AdviserName旁边,它会变成红色&#39; (如果它变成灰色,请不要担心。再次点击它会变红)。确保只有一个链接符号&#39;是红色的(它位于AdviserName旁边)。
  • 在此重复数据源中创建计算字段filter_cond
IF [Status]='Lapsed' and [Duration]<=3 and [Duration]>=1
then 'Y'
ELSE 'N'
END
  • 将“{1}}拖入&#39;过滤器&#39;查看并选择&#39; Y&#39;
  • 现在拖动filter_condPolicyNumber&amp;来自原始数据源的Product来自&#39;行&#39;视图。你完成了!

瞧!