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类费用的发票集合。太棒了!我不知道我可以像那样使用条件选项卡。这将有很大帮助。谢谢