2014-02-20 94 views
0

上下文:零售,交易,促銷。好的,讓我們看看一些數據,你會明白的。SSAS事實建模

enter image description here

receipt_no和LINE_NO在事務(receipt_no)定義的訂單項。您可以看到應用於此項目的兩個促銷活動(a,b)。總折扣(-3.54-1.19)等於原始價值 - 銷售額(12-7.27)。所以銷售額(7.27)是所有應用優惠券後的最終價值。

現在我需要在SSAS中將其作爲一個事實來構建。商業關鍵將是receipt_no,line_no,promotion_name。相關的維度將是提升。這只是爲了說明的目的,實際情況要複雜得多。

所以問題將是如果切片事實通過promotion_name,沒有問題。如果僅通過promotion_name查看沒有切片的總數,則此項目的銷售額將翻倍,這是不正確的。

那麼你在這種情況下通常如何/最佳實踐?

+0

如果你把行放在factTable中,你必須把每行的銷售額=原始值(每個促銷)的價值 - discountlines' – Justin

+0

@Justin,問題是我們的系統在使用任何促銷和全部銷售之前僅具有原始價值應用促銷。沒有中間值。 – thotwielder

+0

所以你必須按照你想要的級別彙總所有數據(如果有兩個相同的產品,一個收據中的促銷)。然後用行數除SumValues(OriginalValue)。因此,對於您的示例,您可以爲每行6獲得'OriginalValue'列,然後從銷售額列6-3.54 = 2.46'和6-1.19 = 4.81' – Justin

回答

0

據我看到的,乾淨的模型將有兩個事實表:

  • fact_sales具有receipt_noline_no組合作爲主鍵,和銷售,單位和OriginalValue的措施,
  • fact_promotion其中receipt_no,line_nopromotion_name作爲主鍵,折扣作爲度量。

你可能會忽略銷售和OriginalValue之一,因爲每一種可從其他和聚合折扣來計算相同receipt_noline_no。但是這已經開始討論優化了。

+0

謝謝。這是我原先想的。如果用戶想看到一個促銷和相關的銷售,這將工作。如果用戶想要看到所有相關促銷活動的銷售情況會怎樣這將結束在我的問題結果集。我沒有在SSAS中構建它,只是基礎SQL Server數據庫中的T-SQL。所以如果我確實有這兩個事實。如何做到呈現正確的結果集? – thotwielder

+0

如果用戶沒有從促銷維度中選擇任何內容,而是選擇「折扣」度量,那麼將會考慮所有其他選擇的維度,這些維度只會提供您想要的內容。 – FrankPl

+0

@FrankPI是的,只使用折扣計量是正確的。我的意思是,如果我想在一份報告中看到銷售和折扣措施。它將像兩行促銷(一種樹結構)的銷售線一樣。我知道這可能超出了範圍。 – thotwielder