Ssas 如何从成员函数中动态更改维度(在MDX中)

Ssas 如何从成员函数中动态更改维度(在MDX中),ssas,mdx,Ssas,Mdx,我一直在努力弄清楚如何从MDX中的成员函数中动态更改维度 我有一个事实表,其中包含2个datetime字段(OperationDate和MeetingDate)。我有一个Power BI仪表板,它有一个基于OperationDate的日期切片器。有一个矩阵,其中包含一些由卖家分组的度量(机会性计数、损失计数、WinCount等)的摘要。类似于 with MEMBER [Measures].[RowCountOnAnyDateType] AS sum( (

我一直在努力弄清楚如何从MDX中的成员函数中动态更改维度

我有一个事实表,其中包含2个datetime字段(OperationDate和MeetingDate)。我有一个Power BI仪表板,它有一个基于OperationDate的日期切片器。有一个矩阵,其中包含一些由卖家分组的度量(机会性计数、损失计数、WinCount等)的摘要。类似于

with MEMBER [Measures].[RowCountOnAnyDateType] AS  
sum(
        (
            [Measures].[RowCount]   
            ,[RowTypes].[Row Type].&[Lost]
            -- to have either dynamically OperationDate
            ,([OperationDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OperationDate].[FullYear].[Day].&[2020-09-30T00:00:00])
            -- or OptyMeetingDate
            ,([OptyMeetingDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OptyMeetingDate].[FullYear].[Day].&[2020-09-30T00:00:00])      
            -- but has to be ONLY one of them based on the date range slicer selected at the UI
        )
    )
日期切片器(基于操作日期)

日期:2020-09-01 日期:2020-09-30


SellerName
机会计数
损失数
温克蒙特
会议计数
塞拉
10
1.
8.
?
卖方
12
0
2.
?
卖方
11
3.
4.
?
因此,[OpportunityCount]、[LostCount]和[WinCount]基于OperationDate。前三列的公式类似,但我将以LostCount为例,它有点像:

([Measures].[RowCount],[RowTypes].[Row Type].&[Lost])
([Measures].[RowCount],[RowTypes].[Row Type].&[Meeting])
在UI级别,日期切片器将根据OperationDate进行计算

另一方面,由于[会议]是基于MeetingDate的,因此我陷入了困境,因为我认为或认为借用我在前三栏中使用的公式,会有点像:

([Measures].[RowCount],[RowTypes].[Row Type].&[Lost])
([Measures].[RowCount],[RowTypes].[Row Type].&[Meeting])
但这不会给我正确的数字,因为日期切片器基于操作日期而不是会议日期

我还尝试将它们作为成员函数从SSMS MDX编辑器创建,但它们是硬编码的。我希望它们是动态的。换句话说,如果可以交换维度(OperationDate和OptyMeetingDate),则在运行时进行

硬编码方式:

with MEMBER [Measures].[LostCountOperationDate] AS  
sum(
        (
            [Measures].[RowCount]   
            ,[RowTypes].[Row Type].&[Lost]
            ,([OperationDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OperationDate].[FullYear].[Day].&[2020-09-30T00:00:00])
        )
    )

MEMBER [Measures].[MeetingCountMeetingDate] AS  
sum(
        (
            [Measures].[RowCount]
            ,[RowTypes].[Row Type].&[Meeting]           
            ,([OptyMeetingDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OptyMeetingDate].[FullYear].[Day].&[2020-09-30T00:00:00])
        )
    )
问题:

with MEMBER [Measures].[LostCountOperationDate] AS  
sum(
        (
            [Measures].[RowCount]   
            ,[RowTypes].[Row Type].&[Lost]
            ,([OperationDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OperationDate].[FullYear].[Day].&[2020-09-30T00:00:00])
        )
    )

MEMBER [Measures].[MeetingCountMeetingDate] AS  
sum(
        (
            [Measures].[RowCount]
            ,[RowTypes].[Row Type].&[Meeting]           
            ,([OptyMeetingDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OptyMeetingDate].[FullYear].[Day].&[2020-09-30T00:00:00])
        )
    )
有没有一种方法可以得到像

with MEMBER [Measures].[RowCountOnAnyDateType] AS  
sum(
        (
            [Measures].[RowCount]   
            ,[RowTypes].[Row Type].&[Lost]
            -- to have either dynamically OperationDate
            ,([OperationDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OperationDate].[FullYear].[Day].&[2020-09-30T00:00:00])
            -- or OptyMeetingDate
            ,([OptyMeetingDate].[FullYear].[Day].&[2020-09-01T00:00:00]:[OptyMeetingDate].[FullYear].[Day].&[2020-09-30T00:00:00])      
            -- but has to be ONLY one of them based on the date range slicer selected at the UI
        )
    )
提前感谢,, 费利克斯