[英]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.