Еженедельные дельты с течением времени - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь отследить разницу в количестве лицензий для каждой функции для арендатора.Мои данные структурированы так:

╔══════╦══════════╦══════════╦══════════╗
║ Date ║ Customer ║ Feature1 ║ Feature2 ║
╠══════╬══════════╬══════════╬══════════╣
║ 5/16 ║ A        ║      500 ║      400 ║
║ 5/23 ║ A        ║     1000 ║      300 ║
╚══════╩══════════╩══════════╩══════════╝

Я хочу, чтобы я мог видеть различия и различия для Feature1 и Feature2 (и Feature3 и т. Д.) Каждую неделю.В моем примере функция Feature1 клиента A имеет разницу 500 между 5/16 и 5/23.

Первоначально предполагалось создать столбец для расчета предыдущей недели для каждой записи и попробовать оттуда.Я понимаю, что создание вычисляемого столбца для разницы для объекта таким образом приведет к круговой зависимости:

FeatureDelta = CALCULATE (MAX (Table [Feature1])), фильтр (Table, Table [Date] = ранее(Таблица [Prv Week]) && Таблица [Customer] = EARLIER (Table [Customer]))) - CALCULATE (MAX (Table [Feature1])) *

Мне нужно немало функцийпоказать дельты для.Есть ли способ сделать это в PowerBI?

1 Ответ

0 голосов
/ 23 мая 2018

Попробуйте использовать MAXX(FILTER(...),...) вместо CALCULATE(MAX(...),...).

Delta1 = 
    VAR PrevDate = MAXX(FILTER(Table2, Table2[Date] < EARLIER(Table2[Date])), Table2[Date])
    RETURN IF(ISBLANK(PrevDate),
               BLANK(),
               Table2[Feature1] -
               SUMX(FILTER(Table2, Table2[Date] = PrevDate), Table2[Feature1]))

Вместо этого вы можете использовать CALCULATE, если удалите контекст строки, вызывающий циклическую зависимость.

Delta1 = 
    VAR PrevDate = CALCULATE(MAX(Table2[Date]),
                       ALLEXCEPT(Table2, Table2[Customer]),
                       Table2[Date] < EARLIER(Table2[Date]))
    RETURN IF(ISBLANK(PrevDate),
               BLANK(),
               Table2[Feature1] -
               CALCULATE(SUM(Table2[Feature1]),
                   ALLEXCEPT(Table2, Table2[Customer]),
                   Table2[Date] = PrevDate))

Я предполагаю, что вы хотите удержать клиента от контекста строки.Если нет, вы можете заменить ALLEXCEPT(Table2, Table2[Customer]) просто ALL(Table2).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...