SSAS - измерение даты, показывающее будущие значения там, где это не подходит

Я моделирую куб, содержащий данные инвентаризации. Для простоты мы пытаемся сохранить одно измерение даты. Некоторые из этих мер содержат уровень запасов.

Конечные пользователи используют Excel для просмотра данных из служб анализа. Что я хочу сделать, так это запретить этому измерению показывать значения там, где заканчиваются фактические операции с акциями.

В кубе есть другие меры, которые требуют информации о будущем, поэтому удаление всех записей дат в будущем не допускается.

Упрощенный пример меры:

CREATE [Measures].[Quantity On Hand];
SCOPE ([Measures].[Quantity On Hand]); 
    this = Aggregate(null:[Transaction Date].[Year - Quarter - Month].CurrentMember,  [Measures].[Quantity Purchased])
            - Aggregate(null:[Transaction Date].[Year - Quarter - Month].CurrentMember,  [Measures].[Quantity Sold]) 
    FORMAT_STRING(this) = "#,#.00;-#,#.00; ";
END SCOPE;

Измерение даты содержит будущие даты.

Могу ли я сделать так, чтобы измерение [Transaction Date] перестало отображать информацию после последней транзакции в этом показателе (самая высокая дата транзакции в таблице фактов)?


person Bas    schedule 30.03.2012    source источник


Ответы (1)


Вы должны иметь возможность использовать функцию CLOSINGPERIOD(Dim,Measure). Он отобразит последний член измерения времени, в котором используется мера. В вашем случае это последняя запись для количества приобретенных или проданных количеств. Используйте это как проверку, чтобы не рассчитывать даты в будущем.

Кроме того, если вы никогда не загружаете даты в будущем, вы также можете использовать «сегодня» в качестве проверки на отсутствие загрузки будущих дат: StrToMember("[Time].[Day].&[" + Format(Now(), "yyyyMMdd") + "]") - где yyyyMMdd - это формат, который вы используете на дневных уровнях.

person cairnz    schedule 02.04.2012