SSAS - измерение даты, показывающее будущие значения, где это не уместно - PullRequest
0 голосов
/ 30 марта 2012

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

Конечные пользователи используют 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] перестало отображать информацию после последней транзакции в этом показателе (самая высокая дата транзакции в таблице фактов)?

1 Ответ

1 голос
/ 02 апреля 2012

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

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

...