У нас есть решение с двумя кубами, построенное в AS 2008, которое работает следующим образом: промышленный куб, который содержит данные виджетов для всех клиентов, и клиентский куб, который содержит данные виджетов и разделяет несколько (но не все) измерений с промышленностью , В отраслевом кубе есть все, в том числе вызывающий клиент, поэтому, когда клиент выбирает отраслевой показатель, мы хотим, чтобы результаты включали всех остальных. Клиенты представлены в промышленном кубе в измерении «клиенты», в котором есть только два члена: ключ и имя клиента. Показатель подсчета в промышленном кубе называется [I Widget Count], а в клиентском кубе аналогичным показателем является [Count Widget].
Такое выражение MDX прекрасно работает в редакторе запросов:
WITH SET [Industry] AS Except( [Cube Clients].[Client].[All].Children
, [Cube Clients].[Client].[Client 05] )
MEMBER [Measures].[Industry Widget Count] AS sum( [Industry], [I Widget Count] )
SELECT ({ [Widget Count]
, [Industry Widget Count]
, [I Widget Count] }) on 0
FROM [Client 05 Cube]
Кажется, все в порядке, показатели для клиентов и отрасли идеальны. Добавление общих или не общих размеров к оси 1 также работает, и все кажется великолепным.
Как только я добавляю набор в сам куб, функции суммирования перестают давать правильные ответы. Итак, на экране рассчитанных мер я добавил:
CREATE DYNAMIC SET CURRENTCUBE.[Industry]
AS Except( [Cube Clients].[Client].[All].Children
, [Cube Clients].[Client].[Client 05] ) ;
CREATE MEMBER CURRENTCUBE.[Measures].[Industry Widget Count]
AS sum( [Industry], [I Widget Count] ),
VISIBLE = 1 ;
При просмотре этой меры в кубе счет полностью неверен. Правильное число (без ограничений на размерность) составляет около 10 000 000, а браузер показывает 30. Я попытался просмотреть окно трассировки, чтобы увидеть, могу ли я прочитать код, который используется кубом для генерации динамической суммы, но это не так. виден.
Кто-нибудь знает, почему это происходит?