Power BI - показатель DAX для расчета продаж в первые 31 день - «DATEADD» ожидает непрерывный выбор - PullRequest
0 голосов
/ 03 ноября 2018

Две таблицы. Sales_Fact & DateKey. Дата вступления.

Таблица DateKey динамическая в зависимости от продаж:

DateKey = CALENDAR(MIN(Sales_Fact[Date]),MAX(Sales_Fact[Date]))    

Таблица продаж имеет следующую структуру.

Customer PurchaseDate  FirstTimePurchaseDate  Amount
A        2018/04/11       2018/02/26           500
b        2018/04/11       2018/03/01           300
c        2018/04/11       2018/04/11           400
A        2018/04/12       2018/02/26           100
b        2018/04/12       2018/03/01           200
c        2018/04/12       2018/04/11           400

Я хочу рассчитать общую сумму покупки на одного клиента через 31 день после совершения первой покупки. В таблице «Продажи» указаны непрерывные даты за последние 2 года, без «даты покупки».

Следующая мера возвращает DATEADD, ожидает непрерывный выбор ... ошибка

First 31 days  = CALCULATE(SUM(Sales_Fact[Amount]),DATESBETWEEN(Sales_Fact[PurchaseDate],MIN(Sales_Fact[FirstTimePurchaseDate]),DATEADD(Sales_Fact[PurchaseDate],31,DAY)))

Как следует написать выражение DAX, чтобы эта мера работала?

Спасибо

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете рассчитать количество дней с момента первой покупки для каждой транзакции, а затем суммировать транзакции, где количество дней составляет <= 31: </p>

=
SUMX (
    FILTER (
        Sales_Fact,
        Sales_Fact[PurchaseDate] - Sales_Fact[FirstTimePurchaseDate] <= 31
    ),
    Sales_Fact[Amount]
)

Тот же результат может быть достигнут путем создания вычисляемого столбца «Продажи» для количества дней с момента первой покупки:

Days Since First Purchase = Sales_Fact[PurchaseDate] - Sales_Fact[FirstTimePurchaseDate]

Мера "Первые 31 день" очень проста:

= CALCULATE ( SUM(Sales_Fact[Amount]), Sales_Fact[Days Since First Purchase] <= 31)

Относительно ошибки, которую вы получаете - это другая проблема. DATEADD - это функция анализа времени. Такие функции обычно работают с календарными измерениями, а не с таблицами фактов (именно потому, что измерение имеет непрерывные даты, а таблицы фактов - нет). В вашем случае все усложняется наличием двух дат вместо одной, поэтому для вашего текущего подхода к работе вам нужно иметь две календарные таблицы, а не одну (т. Е. «Календарь покупок» и «Календарь покупок в первый раз»). Еще лучше, вы можете изменить дизайн таблицы фактов продаж, чтобы иметь только одну дату («Дата покупки»). Первая дата покупки может быть помечена в столбце или определена в DAX как минимальная дата для клиента. Другими словами, если вы хотите использовать таблицу календаря, я бы предложил изменить дизайн вашей модели данных.

...