簡體   English   中英

如何基於其他度量過濾度量

[英]How to filter a measure based on another measure

我有一個名為DimUser的維度表,每個用戶有1行。 我有一個基於該維度的度量,稱為“ USER COUNT”,它是DimUser表的行數。 我還有一個計算得出的度量,稱為“ ACTIVE DAYS”,該度量不返回用戶活動的天數。

現在,我想基於這兩個指標創建另一個計算得出的指標,在​​這里我僅統計活躍時間超過5天的用戶。 我的用戶表中共有5個用戶,而事實表中有2個活動超過5天的用戶。 我的MDX表達式應返回2。

這就是我寫的

FILTER([Measures].[USER COUNT], [Measures].[ACTIVE DAYS] > 5)

但這給了我5而不是2的答案。我在做什么錯?

接下來,我嘗試了此操作,但是編譯失敗,表示表達式中不允許使用兩個度量

([Measures].[USER COUNT], [Measures].[ACTIVE DAYS] > 5)

接下來,我嘗試創建一個名為[IsActive]的新計算成員,如果活動天數> 5,該成員將返回true或false,然后將其用作[Measures]。[USER COUNT]上的過濾器。

我該怎么做呢?

首先,我認為甚至不可能在另一個度量上過濾一個度量,因為度量是數字值,而不是集合。 過濾的概念適用於集合。 因此,基於另一度量過濾度量是荒謬的 但是,就MDX而言,可以做的是創建一組應用了第一個過濾器的用戶(即[Measures]。[ACTIVE DAYS]> 5),然后從中獲取一個COUNT

像這樣(未測試):

WITH SET [ActiveUsersMoreThan5Days] AS
FILTER([User].[UserId].CHILDREN, [Measures].[ACTIVE DAYS] > 5)
//Assuming the User dimension and hierarchy here..
//Fill it in with actual..

MEMBER [Measures].CountActiveUsersMoreThan5Days AS
COUNT(NONEMPTY([ActiveUsersMoreThan5Days], [Measures].[<<Some other measure>>]))

SELECT [Measures].CountActiveUsersMoreThan5Days on 0
//,[Dimension].Hierarchy.CHILDREN ON 1
FROM [Cube]

為了避免使用迭代的Filter ,而不是性能最佳的Filter 同樣,要創建一種能夠感知上下文的度量,那么以下內容可能會有所幫助:

WITH 
  MEMBER [Measures].[CntUsersActive5DaysOrMore] AS 
    Sum
    (
      [UserId].[UserId] //<<< or [UserId].[UserId].[UserId]
     ,IIF
      (
        [Measures].[ACTIVE DAYS] > 5
       ,1
       ,0
      )
    ) 
SELECT 
  [Measures].[CntUsersActive5DaysOrMore] ON 0
FROM [YourCube];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM