Вы можете рассчитать количество дней с момента первой покупки для каждой транзакции, а затем суммировать транзакции, где количество дней составляет <= 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 как минимальная дата для клиента. Другими словами, если вы хотите использовать таблицу календаря, я бы предложил изменить дизайн вашей модели данных.