Фильтровать элементы измерения и настраивать элемент "Все" на основе фильтра

У меня есть следующий оператор MDX, который приводит к списку клиентов на склад, которые имеют непустое значение для jobs.cubic. Это утверждение также отфильтровывает клиентов, чей member_caption начинается с 'PLU'.

Если я включу элемент "Все" в иерархию клиентов, он объединит всех клиентов, включая клиентов, отфильтрованных фильтром "PLU".

Можно ли выбрать для клиентов, как я указал в выписке, а также вернуть элемент "Все" минус значения для клиентов, отфильтрованные фильтром "PLU".

В идеале я хотел бы получить общее количество ("Все" клиенты) для каждого депо в качестве первого ряда для каждого депо.

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];

1 ответ

Решение

Сначала вы можете переместить отфильтрованный набор в 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];
Другие вопросы по тегам