Я пытаюсь выяснить, как я могу создать вычисляемую меру, которая производит подсчет только уникальных фактов в моей таблице фактов. Моя таблица фактов в основном хранит события с исторической точки зрения. Но мне нужна мера, чтобы отфильтровать избыточные события.
Используя продажи в качестве примера (так как весь материал вокруг OLAP всегда использует продажи в примерах):
Таблица фактов продаж магазинов СОБЫТИЯ. Когда продажа совершается впервые, она имеет уникальную ссылку на продажу, которая является столбцом в таблице фактов. Однако уникальная продажа может быть изменена (товары добавлены или возвращены) или полностью отменена. В таблице фактов эти изменения в продаже хранятся в виде разных строк.
Если я создаю показатель подсчета с использованием SSAS, я получаю подсчет всех событий продаж, что означает, что уникальная продажа будет учитываться несколько раз за каждое внесенное в нее изменение (что в некоторых отчетах желательно). Однако я также хочу показатель, который производит количество уникальных продаж, а не событий, а не только на основе подсчета уникальных продаж продаж. Если пользователь выполняет фильтрацию по дате, он должен увидеть уникальные продажи, которые все еще существуют на эту дату (если продажа была отменена к этой дате, если вообще не должна быть представлена в подсчете).
Как бы я сделал это в MDX / SSAS? Кажется, мне нужно, чтобы запрос подсчета работал из подмножества из запроса, который находит последнее изменение в продаже, основываясь на измерении времени.
В SQL это будет примерно так:
SELECT COUNT(*) FROM SalesFacts FACT1 WHERE Event <> 'Cancelled' AND
Timestamp = (SELECT MAX(Timestamp) FROM SalesFact FACT2 WHERE FACT1.SalesRef=FACT2.SalesRef)
Возможно ли или у исполнителя событий есть подзапросы в MDX?