Ssas

兩個事實,兩個維度,一個查詢,一個立方體,能做到嗎,怎麼做?

  • August 24, 2020

我有四個表,兩個事實和兩個維度。下面我列出了這些表的相關列,以及我希望在 Cube 中看到的結果。

Fact Order table
----------------
SK_Order
FirstEverOrder

Dim Order
---------
SK_Order

Fact Product Order
------------------
SK_Order
SK_Product
Number of Products

Dim Product
-----------
SK_Product
Product Name

在結果中,我希望看到有史以來的首次訂購率。也就是說,在產品出現在訂單上的所有時間中,有多少訂單是客戶下的第一個訂單?

Products      First Ever Order Rate (%)
--------      --------------------------
Product 1     3%
Product 2     2%

使用此報告的一個範例情況可能是您想要宣傳那些經常出現在第一個訂單上的產品。

到目前為止,我在多維數據集中將我的表關聯在一起,如下所示:

在此處輸入圖像描述

在此處輸入圖像描述 拜託,我確實想在立方體中執行此操作。我知道它可以通過帶有 SSRS 報告的儲存過程來完成,但我想在多維數據集中進行。

我不知道在“計算”或“維度使用關係”選項卡上該做什麼,或者是否需要在“多維數據集結構”選項卡中執行更多操作。請在您的回答中詳細說明。

我在 2016 年 3 月發布了這個問題,當時我還沒有完全理解 Kimball 方法。我現在有了更好的理解,獲得了更多的經驗,並且可以回答我自己的問題。

答案是,我錯過了一個事實表!我需要一個產品粒度的事實表(即事實表中每行一個產品)來包含我的度量(“First Ever Order Rate”)。然後我可以在事實表中放置一個指向 Product 維度的外鍵。

或者,我可以將度量放在維度本身中。這將有效地使維度成為事實表,並且所有維度屬性都將成為“退化維度”。然後可以將同一個表用作多維數據集中的產品度量值組和產品維度的源。

要計算比率,在 ETL 中完成此操作會比在多維數據集中進行計算要容易得多。

多維數據集中的多對多關係的問題在於,它們將一個維度中的許多維度成員**與另一個維度中的許多維度成員相關聯。它們不會將一個事實表中的許多事實行與另一個事實表中的許多事實行相關聯。這不是 kimball 或 MS cube 技術設計的工作方式。

在 Dimension Usage 選項卡中點擊 … 在 Fact Order 和 Dim Product 單元格中。將該單元格切換為多對多關係。

然後在 FirstEverOrder 列上添加一個 Sum 度量,稱為 First Ever Order Count。還要添加一個計數度量,它是稱為訂單計數的行數。

現在創建一個新的計算度量,它是:

IIF([Measures].[Order Count]=0,Null,[Measures].[First Ever Order Count] / [Measures].[Order Count])

現在您應該可以按照您的說明建構您的報告了。這就是多對多的力量。

引用自:https://dba.stackexchange.com/questions/131543