Параметр диапазона в запросе MDX - PullRequest
1 голос
/ 14 декабря 2011

У меня правильный MDX-запрос:

SELECT NON EMPTY { [Measures].[IssueOpened] } ON COLUMNS, 
NON EMPTY { ([Projects].[Id].[Id].ALLMEMBERS * [Priorities].[Id].[Id].ALLMEMBERS ) } ON ROWS 
FROM [Reports]
WHERE [CreatedOn].[Date].&[2010-01-01T00:00:00]:[CreatedOn].[Date].&[2010-02-01T00:00:00]

Мне нужно создать SSRS-отчет с фильтром по измерению CreatedOn.

Вот мое нерабочее решение:

  • Я преобразовываю запрос в:

    SELECT NON EMPTY { [Measures].[IssueOpened] } ON COLUMNS, 
    NON EMPTY { ([Projects].[Id].[Id].ALLMEMBERS * [Priorities].[Id].[Id].ALLMEMBERS ) } ON ROWS 
    FROM (SELECT (STRTOSET(@CreatedOnDate, CONSTRAINED) ) ON COLUMNS
    FROM [Reports])
    
  • Параметр CreatedOnDate (тип = дата / время)

  • Заданное значениепараметра CreatedOnDate в значение:

    ="[CreatedOn].[Date].[" + Format(CDate(Parameters!CreatedOnDate.Value), "yyyy-MM-dd") + "T00:00:00]"
    

Но когда я запускаю отчет, я получаю:

The restriction imposed by the CONSTRAINED flag in the STRTOSET function were violated

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Почему-то параметр не тот, что вы думаете.Флаг CONSTRAINED приведет к генерации ошибки, если строка не является членом при использовании функции StrToSet MDX (проверьте ошибочный пример):

Вы можете попробовать без флага CONSTRAINED или узнать значениевашего параметра:

WITH 
 MEMBER myParam AS "[CreatedOn].[Date].[" + 
                   Format(CDate(Parameters!CreatedOnDate.Value), "yyyy-MM-dd") 
                   + "T00:00:00]"
SELECT
  [Measures].[myParam] on 0
FORM [Reports]

Если немного поиграть с этим, вам будет легче обнаружить проблему.

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

Должно работать, если вы используете STRTOMEMBER для каждой стороны диапазона

STRTOMEMBER("[CreatedOn].[Date].&[2010-01-01T00:00:00]", constrained):STRTOMEMBER("[CreatedOn].[Date].&[2010-02-01T00:00:00]", constrained)
...