MDX - Использование IIF для воздействия на множества в перекрестном соединении - PullRequest
1 голос
/ 16 декабря 2011

У меня есть перекрестное соединение, которое выглядит так

SELECT  
  {[Measures].[Respondent Count]} ON COLUMNS
 ,{
      [Groups In Rows].[Group].ALLMEMBERS*
      [Questions In Rows].[By ShortCode].[Option].ALLMEMBERS*
      [Questions In Columns].[By ShortCode].[Option].ALLMEMBERS
  } ON ROWS
FROM [cube]

Я хочу иметь возможность динамически удалять перекрестные соединения в группах в строках в соответствии с параметром, чтобы в псевдо-MDX мы имели

SELECT  
  {[Measures].[Respondent Count]} ON COLUMNS
 ,
IIF(@UseGroups = "yes",
{     [Groups In Rows].[Group].ALLMEMBERS*
      [Questions In Rows].[By ShortCode].[Option].ALLMEMBERS*
      [Questions In Columns].[By ShortCode].[Option].ALLMEMBERS
  },
{
      [Questions In Rows].[By ShortCode].[Option].ALLMEMBERS*
      [Questions In Columns].[By ShortCode].[Option].ALLMEMBERS
} ON ROWS
FROM [Cube]

Возможно ли что-нибудь подобное?

1 Ответ

0 голосов
/ 16 декабря 2011

Поскольку вы используете нотацию @UseGroups, я предполагаю, что вы ссылаетесь на параметр служб Reporting Services.

Вы можете использовать выражение для запроса и построить запрос в отношении параметра:

="SELECT { [Measures].[Respondent Count] } ON COLUMNS, "
&"       { "
& Iif(@UseGroups = "yes",
      "[Groups In Rows].[Group].ALLMEMBERS*",
      "[Groups In Rows].[Group].All")
&"         [Questions In Rows].[By ShortCode].[Option].ALLMEMBERS* "
&"         [Questions In Columns].[By ShortCode].[Option].ALLMEMBERS "
&"       } ON ROWS "
&"  FROM [Cube]"

Вы должны включить член All для ложной ветви функции Iif из-за проблем с метаданными.

...