MDX 按日期范围或度量条件筛选
MDX filter by date range or condition on measures
我有一个 MDX 查询,它让我知道每辆车有多少 Completed/Booked/Unbooked 维护工作
SELECT NON EMPTY { [Measures].[Completed],
[Measures].[Unbooked],
[Measures].[Booked]} ON COLUMNS,
NON EMPTY { (
[Job Code].[Code].[Code].ALLMEMBERS*
[Vehicle].[Vehicle Number].[Vehicle Number].ALLMEMBERS*
[Job Group Target Completion Date].[Date].[Date].ALLMEMBERS
) } ON ROWS
FROM ( SELECT ( STRTOMEMBER(@FromDate, CONSTRAINED) : STRTOMEMBER(@ToDate, CONSTRAINED) )
FROM [Standard Reports - Depot Work Analysis])
其中@FromDate 和@ToDate 是我的[工作组目标完成日期] 维度的成员。当作业共享作业代码和目标日期时,它们被分组到 "Job Groups"。
我该如何扩展它,以便我要么获得目标日期之间的所有工作组(就像现在一样),要么获得并非所有工作都已完成的所有工作组(即 [Measures].[Unbooked] > 0或 [Measures].[Booked] > 0) 但目标是在给定的日期范围内完成。
我想你想要像下面这样的东西:
With
Member [Measures].[Targeted] as
IIF(
[Measures].[Unbooked] > 0
and
[Measures].[Booked] > 0
and
[Measures].[Completed] > 0,
1,
Null
)
Select
Non Empty {
[Measures].[Completed],
[Measures].[Unbooked],
[Measures].[Booked]
} on 0,
Non Empty {
{
[Job Code].[Code].[Code].AllMembers *
[Vehicle].[Vehicle Number].[Vehicle Number].AllMembers *
{StrToMember(@FromDate, CONSTRAINED):StrToMember(@ToDate, CONSTRAINED)}
{
+
NonEmpty(
{
[Job Code].[Code].[Code].AllMembers *
[Vehicle].[Vehicle Number].[Vehicle Number].AllMembers *
{NULL:StrToMember(@FromDate, CONSTRAINED).Lag(1)}
},
[Measures].[Targeted]
)
} on 1
From [Standard Reports - Depot Work Analysis])
我有一个 MDX 查询,它让我知道每辆车有多少 Completed/Booked/Unbooked 维护工作
SELECT NON EMPTY { [Measures].[Completed],
[Measures].[Unbooked],
[Measures].[Booked]} ON COLUMNS,
NON EMPTY { (
[Job Code].[Code].[Code].ALLMEMBERS*
[Vehicle].[Vehicle Number].[Vehicle Number].ALLMEMBERS*
[Job Group Target Completion Date].[Date].[Date].ALLMEMBERS
) } ON ROWS
FROM ( SELECT ( STRTOMEMBER(@FromDate, CONSTRAINED) : STRTOMEMBER(@ToDate, CONSTRAINED) )
FROM [Standard Reports - Depot Work Analysis])
其中@FromDate 和@ToDate 是我的[工作组目标完成日期] 维度的成员。当作业共享作业代码和目标日期时,它们被分组到 "Job Groups"。
我该如何扩展它,以便我要么获得目标日期之间的所有工作组(就像现在一样),要么获得并非所有工作都已完成的所有工作组(即 [Measures].[Unbooked] > 0或 [Measures].[Booked] > 0) 但目标是在给定的日期范围内完成。
我想你想要像下面这样的东西:
With
Member [Measures].[Targeted] as
IIF(
[Measures].[Unbooked] > 0
and
[Measures].[Booked] > 0
and
[Measures].[Completed] > 0,
1,
Null
)
Select
Non Empty {
[Measures].[Completed],
[Measures].[Unbooked],
[Measures].[Booked]
} on 0,
Non Empty {
{
[Job Code].[Code].[Code].AllMembers *
[Vehicle].[Vehicle Number].[Vehicle Number].AllMembers *
{StrToMember(@FromDate, CONSTRAINED):StrToMember(@ToDate, CONSTRAINED)}
{
+
NonEmpty(
{
[Job Code].[Code].[Code].AllMembers *
[Vehicle].[Vehicle Number].[Vehicle Number].AllMembers *
{NULL:StrToMember(@FromDate, CONSTRAINED).Lag(1)}
},
[Measures].[Targeted]
)
} on 1
From [Standard Reports - Depot Work Analysis])