过滤维度成员并根据过滤器调整 'All' 成员
filter dimension members and adjust 'All' member based on filter
我有以下 MDX 语句,它生成每个仓库的客户列表,这些客户的 jobs.cubic 值为非空。此语句还过滤掉 member_caption 以 'PLU' 开头的客户。
如果我包括客户层次结构的 'All' 成员,它会汇总所有客户,包括已被 'PLU' 过滤器过滤掉的客户。
是否可以像我在声明中那样为客户 select 以及 return 'All' 成员减去 [=20] 过滤掉的客户的值=] 过滤器。
理想情况下,我希望将每个仓库的总数('All' 客户)作为每个仓库的第一行。
SELECT
{[Measures].[Job Cubic]} ON 0
,NonEmpty
(
{
[Depot].[State - Depot].[214]
,[Depot].[State - Depot].[325]
,[Depot].[State - Depot].[447]
,[Depot].[State - Depot].[534]
,[Depot].[State - Depot].[611]
}
*
{
{
Filter
(
[Transport Customer].[Customer].[All Customers].Children
,
Left
(
[Transport Customer].[Customer].CurrentMember.Properties('Member_Caption')
,3
)
<> 'PLU'
)
}
}
,{[Measures].[Job Cubic]}
) ON 1
FROM [Transport KPIs]
WHERE
[Fiscal Date].[Year-Qtr-Month-Week-Date].[Month].&[Sep 16];
首先,您可以将过滤后的集合移动到 WITH
子句中 - 然后创建一个包含除过滤后的集合以外的所有客户的集合 - 然后您需要将此集合聚合到层次结构的计算成员中 [Transport Customer].[Customer]
.
WITH
SET [FilteredSet] AS
Filter(
[Transport Customer].[Customer].[All Customers].Children
,Left(
[Transport Customer].[Customer].CurrentMember.Member_Caption
,3
)
<> 'PLU'
)
SET [All_except_FilteredSet] AS
EXCEPT(
[Transport Customer].[Customer].[All Customers].Children
,[FilteredSet]
)
MEMBER [Transport Customer].[Customer].[All].[All_except_FilteredSet] AS
AGGREGATE([All_except_FilteredSet])
SELECT
{[Measures].[Job Cubic]} ON 0
,NonEmpty
(
{
[Depot].[State - Depot].[214]
,[Depot].[State - Depot].[325]
,[Depot].[State - Depot].[447]
,[Depot].[State - Depot].[534]
,[Depot].[State - Depot].[611]
}
*
{
[Transport Customer].[Customer].[All].[All_except_FilteredSet],
[FilteredSet]
}
,[Measures].[Job Cubic]
) ON 1
FROM [Transport KPIs]
WHERE
[Fiscal Date].[Year-Qtr-Month-Week-Date].[Month].&[Sep 16];
我有以下 MDX 语句,它生成每个仓库的客户列表,这些客户的 jobs.cubic 值为非空。此语句还过滤掉 member_caption 以 'PLU' 开头的客户。
如果我包括客户层次结构的 'All' 成员,它会汇总所有客户,包括已被 'PLU' 过滤器过滤掉的客户。
是否可以像我在声明中那样为客户 select 以及 return 'All' 成员减去 [=20] 过滤掉的客户的值=] 过滤器。
理想情况下,我希望将每个仓库的总数('All' 客户)作为每个仓库的第一行。
SELECT
{[Measures].[Job Cubic]} ON 0
,NonEmpty
(
{
[Depot].[State - Depot].[214]
,[Depot].[State - Depot].[325]
,[Depot].[State - Depot].[447]
,[Depot].[State - Depot].[534]
,[Depot].[State - Depot].[611]
}
*
{
{
Filter
(
[Transport Customer].[Customer].[All Customers].Children
,
Left
(
[Transport Customer].[Customer].CurrentMember.Properties('Member_Caption')
,3
)
<> 'PLU'
)
}
}
,{[Measures].[Job Cubic]}
) ON 1
FROM [Transport KPIs]
WHERE
[Fiscal Date].[Year-Qtr-Month-Week-Date].[Month].&[Sep 16];
首先,您可以将过滤后的集合移动到 WITH
子句中 - 然后创建一个包含除过滤后的集合以外的所有客户的集合 - 然后您需要将此集合聚合到层次结构的计算成员中 [Transport Customer].[Customer]
.
WITH
SET [FilteredSet] AS
Filter(
[Transport Customer].[Customer].[All Customers].Children
,Left(
[Transport Customer].[Customer].CurrentMember.Member_Caption
,3
)
<> 'PLU'
)
SET [All_except_FilteredSet] AS
EXCEPT(
[Transport Customer].[Customer].[All Customers].Children
,[FilteredSet]
)
MEMBER [Transport Customer].[Customer].[All].[All_except_FilteredSet] AS
AGGREGATE([All_except_FilteredSet])
SELECT
{[Measures].[Job Cubic]} ON 0
,NonEmpty
(
{
[Depot].[State - Depot].[214]
,[Depot].[State - Depot].[325]
,[Depot].[State - Depot].[447]
,[Depot].[State - Depot].[534]
,[Depot].[State - Depot].[611]
}
*
{
[Transport Customer].[Customer].[All].[All_except_FilteredSet],
[FilteredSet]
}
,[Measures].[Job Cubic]
) ON 1
FROM [Transport KPIs]
WHERE
[Fiscal Date].[Year-Qtr-Month-Week-Date].[Month].&[Sep 16];