我在MDX中复制与SQL相同的结果时遇到了麻烦。 SQL中的查询给出了我正在寻找的结果:
SELECT COUNT(Dim_Provider_Records_By_Day.ID) AS CompletedRecords
FROM Dim_Provider_Records_By_Day INNER JOIN
Dim_Provider_Records ON Dim_Provider_Records_By_Day.RecordID = Dim_Provider_Records.ID
WHERE Dim_Provider_Records.CompleteDateTime = Dim_Provider_Records_By_Day.PK_Date
我尝试过的一些事情如下:
WITH MEMBER [Measures].[Count of Complete Records2] AS
COUNT(
FILTER([Dim Provider Records By Day].[ID].ALLMEMBERS,
[Dim Provider Records By Day].[PK Date].Value = [Dim Provider Records By Day].[Complete Date Time].Value)
)
SELECT [Count of Complete Records2] ON COLUMNS FROM [DW DR Incomplete]
我也使用CURRENTMEMBER.VALUE,CURRENTMEMBER.NAME尝试了以上操作,但没有运气。
基本上,我希望得到[按日提示的Dim Provider Records]中所有记录的计数,其中[PK Date]等于[Complete Date Time]。然后其余部分可由立方体处理。
答案 0 :(得分:0)
我会尝试像
这样的东西COUNT(
FILTER([Dim Provider Records By Day].[ID].[ID].MEMBERS,
[Dim Provider Records By Day].[PK Date].CurrentMember.Name = [Dim Provider Records By Day].[Complete Date Time].CurrentMember.Name)
)
由于您对ID
属性的计算成员不感兴趣,Members
会优于AllMembers
。
要排除要过滤的集合中ID
属性的所有成员,请使用级别[Dim Provider Records By Day].[ID].[ID]
而不是完整的属性层次结构[Dim Provider Records By Day].[ID]
。
并且 - 假设您的维度从ID
到PK Date
以及一个到Complete Date Time
之间存在关系,则每个属性都应该有唯一CurrentMember
个ID
成员,以便正确评估过滤条件。然后使用Name
属性进行比较,因为Value
属性将是当前度量的值 - 这是您在WITH MEMBER
表达式中定义的度量,它是NULL在定义完成之前,因此不会提供任何有用的条件。