2015-09-28 100 views
0

我正在從活動的SQL數據庫報告法律案例的執行情況。我有一個案例的主表,它有一個父/子層次結構。我正在尋找一種適當報告案例表現的方式,只爲父母/子女組織(「家庭」)報告一次。隱藏Powerpivot中的層次重複(行標籤)

相關表格的一個例子是:

Cases

ID | Client | MatterName | ClaimAmount | ParentID | NumberOfChildren | 
1 | Mr. Smith | ABC Ltd | $40,000  |  0 |  2   | 
2 | Mr. Smith | Jakob R | $40,000  |  1 |  0   | 
3 | Mr. Smith | Jenny R | $40,000  |  1 |  0   | 
4 | Mrs Bow | JQ Public | $7,000  |  0 |  0   | 

付款

ID | MatterID | DateReceived | Amount | 
1 |  1 | 14/7/15 | $50 | 
2 |  3 | 21/7/15 | $100 | 

我希望能夠報告回一個統一的視圖中只顯示父問題,總收到(和許多其他類似的相關事實表) - 例如

Client | MatterName | ClaimAmount | TotalReceived | 
Mr Smith | ABC Ltd | $40,000  | $150   | 
Mrs Bow | JQ Public | $7,000  | $0   | 

我遇到的一個關鍵問題是隱藏不相關行(子事項)的行標籤。我相信我需要

  • 確定當前行是否是父組
  • 夯實上是真正的那個父組
  • 過濾所有的措施?將所有措施放在IF檢查中?

任何幫助表示讚賞

回答

1

多少級貴層次呢?如果只有2個級別(父母有孩子,孩子不能成爲父母),然後使你的模型非規範化。您可以爲ParentMatterName添加一個列,並將其用作支點中的rowfilter。如果數據中存在合理的最大數量級別(我們通常認爲< = 6是合理的),那麼反規範化可能比嘗試動態地彙總子度量值更可取,並且當然更簡單/更高性能。

編輯處理意見如下:

的非規範化的數據結構在這種情況下,也就意味着要如下表結構:

Cases 
ID | Client | ParentMatterName | MatterName | ClaimAmount 
1 | Mr. Smith | ABC Ltd   | ABC Ltd | $40,000 
2 | Mr. Smith | Jakob R   | ABC Ltd |  $0 
3 | Mr. Smith | Jenny R   | ABC Ltd |  $0 
4 | Mrs Bow | JQ Public  | JQ Public | $7,000 

關於命名 - Excel是愚蠢的,所以是DAX。這是思考這些事情的方法,以幫助最大限度地減少混淆 - 這些都是重要的概念,因爲您可以在更復雜的DAX度量和查詢中前進。

下面是一些絕對的真實,準確的表述,顯示命名如何愚蠢得:

  • FILTER()是表
  • 數據透視錶行過濾背景
  • FILTER()適用附加過濾上下文用作CALCULATE()的參數
  • FILTER()在內部創建用於評估表達式的行上下文
  • FILTER()的參數受過濾器從樞軸表的行的上下文
  • FILTER()的第二個參數的計算結果在第一個參數

等等透視表的的RowFilter上下文中計算的各行的表中的行的上下文的表達式。不要將數據透視表視爲過濾器。您有過濾器,切片器,rowfilters,columnfilters。透視表中的所有內容都是過濾器上下文。

enter image description here

鏈接:

Denormalization in Power Pivot

Denormalizing Dimensions

+0

由於這是一個好主意,我想,但我不完全聽懂。任何非正規化鏈接?它是一個描述的2級層次結構。我現在已經有了SQL來爲每個問題提供一個表示其父項的列。行篩選器是指行標籤嗎? – JustNuts

+0

greggyb我覺得自己處於理解的巨大飛躍的風口浪尖,謝謝! – JustNuts