Беспокойство MDX Query - PullRequest
       17

Беспокойство MDX Query

0 голосов
/ 08 февраля 2012

У меня есть запрос MDX, с которым я боролся некоторое время, и просто не могу заставить его работать правильно !!Болевая точка - это подзапрос, который пытается получить только те задания, которые имеют статус anythign, НО "Закрыто" (DIM PROJECT]. [Статус работы]. & [Закрыто]}. Я знаю / думаю, что, возможно, мне не хватаетгде-нибудь круглые скобки возможно ???

Может, второй набор глаз поможет ???

SELECT 
  NON EMPTY 
    {
      [Measures].[Estimate Extended Amount]
     ,[Measures].[Estimate Line Total]
     ,[Measures].[Estimate Markup Amount]
    } ON COLUMNS
 ,NON EMPTY 
    {
        [DIM PROJECT].[Client - Division - Product - Component].[Job Component Number].ALLMEMBERS*
        [DIM PROJECT].[Component Description].[Component Description].ALLMEMBERS*
        [DIM PROJECT].[Client PO Number].[Client PO Number].ALLMEMBERS*
        [DIM PROJECT].[Job Status].[Job Status].ALLMEMBERS*
        [DIM PROJECT].[Project Start Date].[Project Start Date].ALLMEMBERS*
        [DIM PROJECT].[Project End Date].[Project End Date].ALLMEMBERS*
        [DIM FUNCTION].[Function Category].[Function Category].ALLMEMBERS*
        [DIM ESTIMATE].[Estimate Number].[Estimate Number].ALLMEMBERS*
        [DIM ESTIMATE].[Estimate Status].[Estimate Status].ALLMEMBERS
    }
  DIMENSION PROPERTIES 
    MEMBER_CAPTION
   ,MEMBER_UNIQUE_NAME
   ON ROWS
FROM 
(
  SELECT 
    {[DIM ESTIMATE].[Estimate Status].&[Approved]} ON COLUMNS
  FROM (-{[DIM PROJECT].[Job Status].&[Closed]} ON COLUMNS
  (
    SELECT 
      StrToSet
      (@DIMPROJECTProduct
       ,CONSTRAINED
      ) ON COLUMNS
    FROM 
    (
      SELECT 
        StrToSet
        (@DIMPROJECTDivision
         ,CONSTRAINED
        ) ON COLUMNS
      FROM 
      (
        SELECT 
          StrToSet
          (@DIMPROJECTClient
           ,CONSTRAINED
          ) ON COLUMNS
        FROM [ESTIMATES]
      )
    )
  )
)
WHERE 
  (
    IIF
    (
        StrToSet
        (@DIMPROJECTClient
         ,CONSTRAINED
        ).Count
      = 1
     ,StrToSet
      (@DIMPROJECTClient
       ,CONSTRAINED
      )
     ,[DIM PROJECT].[Client].CurrentMember
    )
   ,IIF
    (
        StrToSet
        (@DIMPROJECTDivision
         ,CONSTRAINED
        ).Count
      = 1
     ,StrToSet
      (@DIMPROJECTDivision
       ,CONSTRAINED
      )
     ,[DIM PROJECT].[Division].CurrentMember
    )
   ,IIF
    (
        StrToSet
        (@DIMPROJECTProduct
         ,CONSTRAINED
        ).Count
      = 1
     ,StrToSet
      (@DIMPROJECTProduct
       ,CONSTRAINED
      )
     ,[DIM PROJECT].[Product].CurrentMember
    )
  )
CELL PROPERTIES 
  VALUE
 ,BACK_COLOR
 ,FORE_COLOR
 ,FORMATTED_VALUE
 ,FORMAT_STRING
 ,FONT_NAME
 ,FONT_SIZE
 ,FONT_FLAGS;

1 Ответ

2 голосов
/ 08 февраля 2012

Я не совсем уверен, что вы пытаетесь сделать, но кажется, что вы, возможно, слишком усложнили свой запрос.Я думаю, что вы ищете функцию, КРОМЕ:

Except([DIM PROJECT].[Job Status].[All].Children,[DIM PROJECT].[Job Status].&[Closed])

Это даст вам все статусы работы, кроме закрытых.Если вы поместите его в предложение where (ymmv с моим упрощением), оно может выглядеть следующим образом:

SELECT 
NON EMPTY 
{
  [Measures].[Estimate Extended Amount]
 ,[Measures].[Estimate Line Total]
 ,[Measures].[Estimate Markup Amount]
} ON COLUMNS
,NON EMPTY 
{
    [DIM PROJECT].[Client - Division - Product - Component].[Job Component Number].ALLMEMBERS*
    [DIM PROJECT].[Component Description].[Component Description].ALLMEMBERS*
    [DIM PROJECT].[Client PO Number].[Client PO Number].ALLMEMBERS*
    [DIM PROJECT].[Job Status].[Job Status].ALLMEMBERS*
    [DIM PROJECT].[Project Start Date].[Project Start Date].ALLMEMBERS*
    [DIM PROJECT].[Project End Date].[Project End Date].ALLMEMBERS*
    [DIM FUNCTION].[Function Category].[Function Category].ALLMEMBERS*
    [DIM ESTIMATE].[Estimate Number].[Estimate Number].ALLMEMBERS*
    [DIM ESTIMATE].[Estimate Status].&[Approved]
}
DIMENSION PROPERTIES 
MEMBER_CAPTION
,MEMBER_UNIQUE_NAME
ON ROWS
FROM [ESTIMATES]
WHERE 
( StrToSet(@DIMPROJECTProduct),
  StrToSet(@DIMPROJECTDivision),
  StrToSet(@DIMPROJECTClient), 
  Except([DIM PROJECT].[Job Status].[All].Children,[DIM PROJECT].[Job Status].&[Closed]))

Если ваши параметры оказываются одиночными, вы, вероятно, можете просто использовать StrToMember в предложении where.

...