使用筛选结果作为Tableau中计算字段的字段

时间:2014-10-21 23:46:16

标签: tableau

我有一个看起来像这样的表:

+------------+-----------+---------------+
| Invoice_ID | Charge_ID | Charge_Amount |
+------------+-----------+---------------+
|          1 | A         | $10           |
|          1 | B         | $20           |
|          2 | A         | $10           |
|          2 | B         | $20           |
|          2 | C         | $30           |
|          3 | C         | $30           |
|          3 | D         | $40           |
+------------+-----------+---------------+

在Tableau中,如何为SUMs B,C和D Charge_Amount Charge_IDs字段添加Charge_ID,其中发票的Has_ChargeID_A为A?结果将是70美元。

我的数据源是SQL Server,所以我想我可以在SQL Server表中添加一个字段(称为Charge_ID),告诉发票是否有SUM的A,然后在Tableau只执行Has_ChargeID_ACharge_ID为真且{{1}}为B,C或D的所有行的{{1}}。但我更愿意,如果我可以直接在Tableau中执行此操作(不是这样的话)确切地说,但任何会让我得到同样结果的东西)。

1 个答案:

答案 0 :(得分:2)

你的直觉正在引导你朝着正确的方向前进。您确实只想过滤到包含Charge_ID为A的行的发票,您可以直接在Tableau中执行此操作。

首先在过滤器架上放置Invoice_ID,然后选择过滤器的“条件”选项卡。然后选择"按公式"条件选项卡上的选项,并输入您希望用于确定过滤器包含哪些invoice_ids的公式。

以下是您的示例公式:

count(if Charge_ID = 'A' then 'Y' end) > 0

对于每个数据行,它将计算括号内表达式的值,然后仅包含内部表达式至少具有一个非空值的invoice_ids。 (if语句的隐含else,"返回" null)。

维度字段的条件选项卡等同于SQL中的HAVING子句。

如果条件公式变得复杂,使用计算字段定义它们通常是一个好主意 - 或者是几个更简单的计算字段的组合,只是为了使事情易于管理。

最后,如果您经常使用这样的维度集合,则可以将它们定义为集合。您仍然可以在过滤器架上放置集合,但是可以以其他方式重用它们:例如在计算字段中测试集合成员资格(如SQL IN子句),或者使用交集和联合运算符创建新集合。您可以将集合视为命名过滤器,例如包含A类费用的发票集。