Sql-Server

具有 2 個度量值組(與維度的關係不同)的多維數據集在報表中返回過多的維度成員

  • January 27, 2016

我有一個包含來自零售業務的庫存數據的多維數據集。它有 2 個度量值組 - 一個包含在每個盤點批次中計數的庫存單位數(與產品、批次和時間維度相關),另一個包含產品價格(僅與產品維度相關)。

價格度量組中的度量使用 Min 和 Max 運算符(即它們顯示 Products 維度的選定成員的最低或最高價格)。

我似乎已經正確配置了多維數據集和維度(價格度量按預期顯示)……除了以下情況:

如果我在 Excel 中查詢多維數據集並按時間和批次獲取單位,我會看到預期的結果(見下圖,在 Time=2015 上過濾,並隱藏沒有數據的行),即只有具有所選單位事實數據的批次時間維度成員。

時間和批次的單位

如果我現在添加一個價格度量(不更改任何過濾器),則 Units 總數不變(如預期的那樣),但我現在看到Batch 維度中的每個成員(見下圖)。這對最終使用者來說是個問題,因為他們只想查看先前選擇的批次中產品的價格。

在此處輸入圖像描述

從技術角度來看,這是有道理的——價格事實與時間無關,因此不能像單位那樣被我的時間過濾器過濾。

***我可以做些什麼(在多維數據集設計或 Excel 中)來消除給定過濾器沒有單位的批次成員?***注意:我無法讓使用者編寫 MDX 查詢 - 報表建構需要保持“點擊”!

編輯 27/1 (添加額外的螢幕截圖來說明設置忽略無關維度 = False per TomV’s answer的奇怪副作用)

在此處輸入圖像描述

正如您正確指出的那樣,當您嘗試在與其沒有關係的維度上顯示度量時會發生這種情況。

你基本上有2個選擇

  1. 採用IgnoreUnrelatedDimensions
  2. 使用MDX解決方案

我建議您嘗試第IgnoreUnRelatedDimensions一個,因為這些措施可以更好地聚合,並且NonEmptyCrossJoins能夠從定義的Bitmap Indexes使用時受益Attribute Relationships

由於可能存在性能問題,MDX 解決方案更像是最後的手段,您還需要為您擁有的每個度量定義一個計算度量。MDX 解決方案很可能很複雜,或者會弄亂您的總數/顯示不正確的數據。

忽略無關維度

在查看 Adventureworks 2012 多維數據集時,您會遇到這種情況,其中員工未連結到“網際網路銷售”,但他們連結到“經銷商銷售”。

瀏覽多維數據集時,當您在員工維度上添加來自兩個度量值組的度量值時,結果與您的結果相同。

在此處輸入圖像描述

您可以通過將IgnoreUnrelatedDimensions屬性設置為Falseon來解決此問題Measure Group

在此處輸入圖像描述

重新處理多維數據集並刷新瀏覽器後,結果現在如下所示:

在此處輸入圖像描述

不過有一些注意事項,例如設置問題DefaultMember

如果DefaultMember不是不All level相關維度的屬性之一,則您不會獲得聚合數據,因為預設成員仍然充當過濾器,即使它未包含在您的數據透視表中:

例如,DefaultMember像這樣在員工維度的性別屬性上設置屬性後。

在此處輸入圖像描述

這是報告中不包含切片器時的結果。當然,你會想在這裡看到總數:

在此處輸入圖像描述

我似乎記得其他一些邊緣情況,calculated measures但我不記得具體情況。

MDX 解決方案

如果您遇到任何邊緣情況,您將不得不求助於MDX@GregGalloway 發布的解決方案,但這可能最終會變得乏味並且非常具體到單個報告或案例:

CREATE MEMBER CURRENTCUBE .[Measures].[Max Current CP With Units] AS
 IIf (
   NOT IsEmpty ( [Measures].[Units] ),
   [Measures].[Max Current CP],
   NULL
 ) ;

該解決方案的缺點是您會弄亂總計的外觀並可能顯示不正確的數據,但在您使用 MIN/MAX 聚合的價格資訊的特定情況下這可能是可以接受的,但會完全打破總和,並且可能會顯示向您的使用者提供虛假數據。

例如在執行此查詢時

WITH MEMBER [Measures].[Filtered internet order count] as
'
IIf (
   NOT IsEmpty ([Measures].[Reseller Order Count] ),
   [Measures].[Internet Order Count],
   NULL)
'
SELECT {[Measures].[Filtered internet order count],[Measures].[Reseller Order Count]} ON 0,
[Employee].[Employees].allmembers ON 1
FROM [Adventure Works]

產生這個結果

在此處輸入圖像描述

這看起來同樣奇怪,因為總數與每個成員相同。但這在您的最低/最高定價的具體情況下可能是可以接受的,我認為它主要顯示虛假數據,因為這些員工沒有網際網路銷售。

我想如果您控制報告,那將是可能的。對於您編輯中添加的數據透視表,我想它會產生好的結果。

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