Пользователь пытается проверить сумму продаж на одного продавца. Пример данных:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 2250
Это выглядит нормально, но у нас есть следующая иерархия Company > Class > Group > Subgroup
в кубе, и если пользователь пытается использовать эту иерархию в фильтрах - общий итог завершается неудачно (если какой-либо атрибут не отмечен в этой иерархии). Пример:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 350
Я уже сталкивался с той же проблемой, когда пытался отфильтровать атрибут Date: если не каждый день месяца был выбран, он также показывал неверный общий итог.
У вас есть идея, почему это происходит и как это исправить?
Объем продаж - это физическая мера (не рассчитанная мера), она выбирается из представления SQL (то же самое происходит с каждым фактом).
Я задавал тот же вопрос здесь , но никто не мог ответить на него.
Я пытался удалить все вычисления MDX (области), но все равно общий итог был неверным.
EDIT
Я заметил, что проблема возникает при такой фильтрации:
1 элемент выбран на первом уровне иерархии, 1 элемент на 2-м уровне и 1 элемент на 3-м уровне иерархии, как на рисунке выше.
Если 3-й уровень не отфильтрован, он показывает хороший общий итог.
РЕДАКТИРОВАТЬ 2
Я пытался отследить на SSAS, он возвращает точно такой же вывод, как в Excel. При использовании измерения Salesperson в строках было создано следующее MDX:
SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS,
NON EMPTY { ([Salesperson].[Salesperson].[Salesperson].ALLMEMBERS ) }
DIMENSION PROPERTIES MEMBER_CAPTION,
MEMBER_UNIQUE_NAME ON ROWS FROM (
SELECT ( { [Item].[Class - Group - Subgroup].[Class].&[XXX]&[1.],
[Item].[Class - Group - Subgroup].[Group].&[XXX]&[2.]&[2.2.],
[Item].[Class - Group - Subgroup].[Subgroup].&[XXX]&[2.]&[2.3.]&[2.3.1.] }
) ON COLUMNS FROM ( SELECT ( { [Company].[Company].&[XXX] } ) ON COLUMNS
FROM [Sales]))
WHERE ( [Company].[Company].&[XXX], [Item].[Class - Group - Subgroup].CurrentMember ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
Этот MDX сгенерирован без измерения Salesperson:
SELECT NON EMPTY { [Measures].[Sales Amount] } ON COLUMNS
FROM ( SELECT ( { [Item].[Class - Group - Subgroup].[Class].&[XXX]&[1.],
[Item].[Class - Group - Subgroup].[Group].&[XXX]&[2.]&[2.2.],
[Item].[Class - Group - Subgroup].[Subgroup].&[XXX]&[2.]&[2.3.]&[2.3.1.] } ) ON COLUMNS
FROM ( SELECT ( { [Company].[Company].&[XXX] } ) ON COLUMNS
FROM [Sales])) WHERE ( [Company].[Company].&[XXX], [Item].[Class - Group - Subgroup].CurrentMember ) CELL PROPERTIES VALUE, BACK_COLOR, FORE_COLOR, FORMATTED_VALUE, FORMAT_STRING, FONT_NAME, FONT_SIZE, FONT_FLAGS
Я заметил, что даже если я не использую какое-либо измерение в строках (в примерах выше я использовал измерение Salesperson), оно показывает неверный общий итог.
Например, это показывает:
Sales Amount
350
А при использовании измерения Salesperson в строках:
Salesperson Sales Amount
001 1000
002 500
003 750
Grand Total: 350