过滤维度成员并根据过滤器调整 '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];