Tableau api 使用过滤结果作为表中计算字段的字段

Tableau api 使用过滤结果作为表中计算字段的字段,tableau-api,Tableau Api,我有一张这样的桌子: +------------+-----------+---------------+ | Invoice_ID | Charge_ID | Charge_Amount | +------------+-----------+---------------+ | 1 | A | $10 | | 1 | B | $20 | | 2 | A

我有一张这样的桌子:

+------------+-----------+---------------+
| 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中,如果发票具有
费用ID
费用ID
,如何在
费用ID
字段中为
费用ID
求和?结果是70美元


我的数据源是SQL Server,所以我想我可以在SQL Server表中添加一个字段(名为
Has\u ChargeID\u a
),告诉发票的
Charge\u ID
是否为a,然后在表中只需对
Has\u ChargeID\u a
为true且
Charge\u ID
为B的所有行进行
求和即可,C或D。但我更希望我能直接在表格中这样做(不是这个,而是任何能让我得到相同结果的东西)。

你的直觉正在引导你朝着正确的方向前进。您确实希望只筛选包含费用ID为a的行的发票,您可以直接在Tableau中执行此操作

首先将Invoice_ID放置在筛选器工具架上,然后选择筛选器的“条件”选项卡。然后在“条件”选项卡上选择“按公式”选项,并输入要用于确定过滤器包含哪些发票ID的公式

以下是您的示例公式:

count(if Charge_ID = 'A' then 'Y' end) > 0
对于每个数据行,它将计算括号内表达式的值,然后仅包括至少具有一个非空值的内部表达式的发票ID。(if语句的隐式else“返回”null)

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

如果条件公式变得复杂,通常最好用一个计算字段来定义它们,或者用几个简单的计算字段的组合来定义它们,以便于管理


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

太棒了!我不知道我可以像那样使用条件选项卡。这将有很大帮助。谢谢