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