Перекрестное объединение столбцов с одинаковой иерархией

У меня есть куб данных SQL со следующей иерархией

Я хочу пересечь присоединиться к складскому отделу и коду склада Desc. Я написал MDX следующим образом

SELECT NON EMPTY 
{ [Measures].[Total  Value]} 
DIMENSION PROPERTIES CHILDREN_CARDINALITY, 
PARENT_UNIQUE_NAME ON COLUMNS, 
NON EMPTY 
{      
   [Combined].[Drill Down Path 4].[Warehouse Division].MEMBERS*   [Combined].[Drill Down Path 4].[Code Warehouse Desc].MEMBERS
} 
DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [InventoryAge]
WHERE ( [Calendar].[Report Days].[All Members].&[All].&[WantInReport].& [2].&[20141031] )

Это дает мне ошибку следующим образом

Query (13, 8) The Drill Down Path 4 hierarchy is used more than once in the Crossjoin function.

Может ли какой-либо орган предложить лучший способ сделать это

Пожалуйста, найдите иерархию календарей

2 ответа

Решение

Вам не нужно пересекать иерархию (это невозможно), чтобы делать то, что вам нужно. Просто запросите самый низкий уровень, вы также получите все родители

SELECT NON EMPTY 
{ [Measures].[Total  Value]} 
DIMENSION PROPERTIES CHILDREN_CARDINALITY, 
PARENT_UNIQUE_NAME ON COLUMNS, 
NON EMPTY 
{      
     [Combined].[Drill Down Path 4].[Code Warehouse Desc].allMEMBERS
} 
 DIMENSION PROPERTIES MEMBER_CAPTION ON ROWS FROM [InventoryAge]
 WHERE ( [Calendar].[Report Days].[All Members].&[All].&[WantInReport].& [2].&[20141031] )

PS. Возможно, вы не сможете увидеть их в средстве просмотра результатов запросов SSMS, но они появятся, если вы используете запрос в браузере кубов или как набор данных в SSRS/ другом инструменте

Вы можете передать последнюю дату в вашем наборе, используя Tail(Существующий [Календарь]. [Дни отчета]. [Все участники].&[Все].&[WantInReport].members, 1).item(0)

Или вы можете использовать Format(Now()), который дает вам строковое представление текущей системной даты. Однако это зависит от локали, поэтому вам, вероятно, нужно удалить точки / косые черты. Смотрите здесь

Другие вопросы по тегам