Создание вычисляемого столбца (не агрегированного), который изменяет значение в зависимости от контекста SSAS, табличного DAX

Данные: у меня есть единственная строка, которая представляет годовую подписку на продукт, у нее есть общие startDate и endDate, есть также третья дата, которая равна startdate + 1 месяц и называется endDateNew. У меня также есть несвязанная таблица дат (называемая таблицей X).

Результат, который я ищу: мне нужен новый столбец с названием «Категоризация», который будет возвращать «Новый», если дата, выбранная в таблице X, находится между startDate и endDateNew, и «Существующий», если дата находится между startDate и Дата окончания.

Проблема: кажется, что столбец оценивается немедленно, без учета контекста даты из несвязанной таблицы дат - я вроде как ожидал, что это произойдет в Visual Studio (где предполагается, что контекст - это все записи? ), но при предварительном просмотре в Excel оно передает то же значение.

Бит, который работает: у меня есть агрегат (количество активных подписчиков), который правильно считает подписку активной в течение месяцев, выбранных в таблице X.

Эквивалент SQL на отдельную дату:

case 
 when '2015-10-01' between startDate and endDateNew then 'New'
 when '2015-10-01' < endDate then 'Existing'
end as Category

где значение будет рассчитываться для каждой даты в таблице X

Спасибо!

Росс


person Ross    schedule 10.12.2015    source источник


Ответы (2)


Вычисляемые столбцы оцениваются только во время обновления модели / процесса. Это сделано намеренно. Невозможно изменить вычисляемый столбец на основе изменений во время выполнения в контексте фильтра из сводной таблицы.

person greggyb    schedule 10.12.2015

Росс,

Вычисляемые столбцы работают иначе, чем в Excel. Оптимально значение известно, когда запись впервые добавляется в модель. Ваш пример похож на медленно меняющееся измерение.

Есть несколько возможных решений. Вот два с половиной:

Полная обработка данных за последние 32 дня каждый раз, когда вы обрабатываете таблицу подписок (что может быть неприемлемо неэффективным).

OR

Создайте новую таблицу «Subscription scd» с первичным ключом из таблицы подписок и вашим единственным вычисляемым столбцом «Срок подписки в днях». Как аутригер. Эту таблицу можно обрабатывать более эффективно, чем повторную обработку таблицы подписок, поэтому обрабатывайте таблицу подписок только как инкрементальные и вместо этого выполняйте полную обработку этой таблицы для данных за последние 32 дня.

OR

Решите, какие меры интересны в контексте «новый / существующий», и напишите для них явные меры, используя динамический фильтр в столбце даты в показателях.

например. Определять

'Sum of Sales - New Subscriptions',
'Sum of Sales - Existing Subscriptions', 
'Distinct Count of New Subscriptions - Last 28 Days', etc
person daniel    schedule 11.01.2016