MDX-запрос, возвращающий повторяющиеся строки в кубе табличного режима SSAS - PullRequest
0 голосов
/ 24 мая 2018

Я совершенно новичок в кубах и терминологиях SSAS (члены, иерархии и т. Д.) И запросах MDX, но я начал свой путь, чтобы изучить этот материал, поэтому извиняюсь, если мой вопрос очень ясен.

     SELECT NON EMPTY { } ON COLUMNS, { 
     [Suggestions].[Parent_id].[Parent_id] *--.ALLMEMBERS * 
     [Suggestions].[id].[id] * --.ALLMEMBERS * 
     [Suggestions].[Sugg - #].[Sugg - #] *-- .ALLMEMBERS * 
     [Suggestions].[Sugg - Assigned].[Sugg - Assigned] *  --.ALLMEMBERS * 
     [Suggestions].[Sugg - Assigned to].[Sugg - Assigned to]* --.ALLMEMBERS * 
     [Suggestions].[Sugg - Status].[Sugg - Status] *--.ALLMEMBERS   

     --[Parent_Details].[Unit_Name].[Unit_Name]  --.ALLMEMBERS
     } 
     DIMENSION PROPERTIES MEMBER_CAPTION, 
     MEMBER_UNIQUE_NAME ON ROWS 
     FROM ( SELECT ( { [Suggestions].[Sugg - Assigned to].&[UNIT] } ) ON COLUMNS 
     FROM ( SELECT ( STRTOSET('SG123', CONSTRAINED) ) ON COLUMNS 
     FROM ( SELECT ( { [Suggestions].[Sugg - Status].&[Pending Inputt] } ) ON COLUMNS 
     FROM [BOI_Tracker-Stats]))) 
     CELL PROPERTIES VALUE

У меня вышеупомянутый запрос MDX, который выполняется.Я сгенерировал запрос из инструмента конструктора запросов MDX в SSMS, и у меня были только простые модификации вручную.

В запросе, если я закомментировал строку [Parent_Details].[Unit_Name].[Unit_Name] --.ALLMEMBERS, я получил правильное количество строк.

Основной вопрос.

Если я откомментирую его, чтобы вернуть столбец Unit_Name , мои строки будут продублированы.Оригинальные 100 правильных строк теперь, потому что тысячи строк с повторяющимися значениями во всем.Любое тело знает, что я должен высматривать, что является причиной этого.Похоже, что применяется неправильное соединение.

Другие вещи, которые я хотел бы понять.

1. Дизайнер запросов сгенерировал запрос вформат

[Suggestions].[Parent_id].[Parent_id].ALLMEMBERS *.Если я закомментирую .ALLMEMBERS * так, что запрос будет просто [Suggestions].[Parent_id].[Parent_id] без .ALLMEMBERS *, результаты будут такими же.Так в чем же смысл .ALLMEMBERS *

2. Я также заметил, что столбец, который я хочу выбрать, повторяется дважды, как

Suggestions].[Parent_id].[Parent_id], почему этотак? почему его нельзя просто сгенерировать как Suggestions].[Parent_id]

1 Ответ

0 голосов
/ 25 мая 2018

Если вы выбираете из разных измерений, вы в основном умножаете результаты.Если вы думаете об этом, это правильное поведение.В вашем случае у вас есть [Предложения] и [Parent_Details] .Это разные измерения.В вашем запросе вы хотите, чтобы результаты имели и то и другое:

Для каждого члена [Предложение] получите всех членов [Сведения о родителе] и добавьте их в результат.Таким образом, набор результатов становится следующим:

[Suggestion-1][Parent_Details-1][Measures...]
[Suggestion-1][Parent_Details-2][Measures...]
[Suggestion-2][Parent_Details-1][Measures...]
[Suggestion-2][Parent_Details-2][Measures...]
[Suggestion-3][Parent_Details-1][Measures...]
etc.

(уровни, отличные от измерения [Предложения], не умножают меры)

Это правильное поведение, когда вы об этом думаете, потому что еслиВы добавляете эти два измерения, которые вы, вероятно, хотите знать примерно так: «Каковы меры для этого предложения и этих родительских деталей?»И этот точный ряд будет правильным в наборе результатов.Все зависит от того, какой результат вы хотите получить (что вы просите).

Умножение имен зависит от вашего дизайна куба.Первый ряд - уровень, а второй - член.Например, если вы создадите иерархию, она не будет выглядеть так.

...