Я пытаюсь понять, как я могу создать вычисляемую меру, которая производит подсчет только уникальных фактов в моей таблице фактов. Моя таблица фактов в основном хранит события с исторической точки зрения. Но мне нужна мера для фильтрации избыточных событий.
Использование продаж в качестве примера (Поскольку все материалы по 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?