Я борюсь с тем, что я считаю действительно глупой проблемой.
Я пытаюсь получить значения "MTD target" из произвольного выбора даты. У меня есть таблица out, которая имеет много измерений + дата, а также целевая таблица, которая дает мне постоянное целевое значение в день для каждого месяца. Моя цель состоит в том, чтобы получить количество дней, выбранных в каждом КАЖДОМ месяце, и умножить его на соответствующую дневную цель для соответствующего месяца.
Например, дневная цель месяца 1 - 2, дневная цель месяца 2 - 4. I у меня 4 дня в месяце 1 и 3 дня в месяце 2. Моя совокупная цель должна быть 2 * 4 + 3 * 2 = 14.
Я могу сделать это в течение одного месяца без проблем. Но как только у меня выбран диапазон дат, который пересекает 2 или более месяцев, все это превращается в ад.
Таблица «out» имеет дату, страну и другие измерения. Таблица 'target' имеет размерность года, месяца и страны.
Я пытаюсь получить некоторое объединение и умножение, что-то вроде SUM (month_country * selected_days)
Вот меры DAX Я пробовал:
mtd_inv_tgt :=
CALCULATE (
SUM ( targets[daily_spend] ),
FILTER (
targets,
targets[market] = FIRSTNONBLANK ( out[co_market], "" )
&& targets[yyyymm] >= MIN ( out[yyyymm] )
&& targets[yyyymm] <= MAX ( out[yyyymm] )
)
)
* DISTINCTCOUNT ( out[date] )
mtd_inv_tgt :=
SUMX (
FILTER (
targets,
targets[market] = FIRSTNONBLANK ( out[co_market], "" )
&& targets[yyyymm] >= MIN ( out[yyyymm] )
&& targets[yyyymm] <= MAX ( out[yyyymm] )
),
targets[daily_spend] * DISTINCTCOUNT ( out[date] )
)
Это прекрасно работает, если выбранные даты принадлежат одному месяцу. Если я выберу 2 месяца, это добавит ежедневные расходы за 2 месяца, а затем умножит их на число дат, охватывающих 2 месяца. Как и в приведенном выше примере, это будет (2 + 3) * (4 + 2) = 30, что, очевидно, неверно.
Предостережение: я не могу использовать SUMX для таблицы out, потому что Есть много записей на дату + страну, в то время как цели - одна запись в месяц + страна.