2014-10-21 19 views
1

我有一個表,看起來像這樣:使用過濾的結果作爲場計算出的字段中的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   | 
+------------+-----------+---------------+ 

在畫面,如何可以有一個字段,SUMsCharge_AmountCharge_IDs B,C和d ,發票有A的Charge_ID?結果將是70美元。

我的數據源是SQL Server的,所以我想我可以一個字段(稱爲Has_ChargeID_A)添加到SQL Server表,告訴如果發票有一個Charge_ID,然後在的Tableau只是做所有的SUM其中Has_ChargeID_A爲true的行和Charge_ID是B,C或D.但我更喜歡如果我可以直接在Tableau中完成此操作(並非完全是這樣,但任何會使我達到相同結果的操作)。

回答

2

你的直覺引導你朝着正確的方向前進。您只想過濾僅包含Charge_ID爲A的行的發票,並且您可以直接在Tableau中執行此操作。

在過濾器架上首先放入Invoice_ID,然後選擇過濾器的Condition選項卡。然後選擇條件選項卡上的「按公式」選項,然後輸入您希望用來確定過濾器包含哪些invoice_ids的公式。

這裏是您的示例的公式:

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

對於每個數據行,它會計算在括號內的表達式的值,然後只包括invoice_ids與至少一個非空值用於內部表達。 (if語句的隱式else,「返回」null)。

維度字段的條件選項卡等同於SQL中的HAVING子句。

如果條件公式變得複雜,那麼通過計算字段或幾個更簡單的計算字段的組合來定義它們通常是一個好主意,只是爲了使事情易於管理。最後,如果你最終經常使用這樣的維度集合,你可以將它們定義爲集合。您仍然可以在過濾器架上放置集,但可以通過其他方式重用它們,例如在計算字段中測試集成員身份(如SQL IN子句),或者使用交集和聯合操作符創建新集。您可以將集合看作命名過濾器,例如包含A類費用的發票集合。

+0

太棒了!我不知道我可以使用這樣的條件選項卡。這將有很大幫助。謝謝。 – user1845791 2014-10-22 23:09:59

相關問題