#powerbi #dax #powerbi-desktop #measure
#powerbi #dax #powerbi-рабочий стол #мера
Вопрос:
У меня есть отчет, который извлекает еженедельные данные. У меня есть таблица недель, которая содержит недели, даты и связи, настроенные с приведенными ниже таблицами.
У меня есть итоговая таблица очередей;
У меня есть таблица консьержей;
Часы работы консьержа отличаются изо дня в день, поэтому я сохраняю время начала и окончания в таблице, чтобы мы могли обновлять его динамически.
Я пытаюсь создать меру для вычисления количества взаимодействий, которые у нас были, между часами в таблице ConciergeHours. Имейте в виду, что это еженедельный отчет, поэтому в любой день недели часы могут отличаться.
Вычисление, которое мы выполняем, это;
Количество взаимодействий, принятых в LinkConciergeVQ очереди (итоговая таблица очередей) между начальным и конечным часами в таблице консьержей, МИНУС количество взаимодействий, предлагаемых в LinkVQ очереди (итоговая таблица очередей) между начальным и конечным часами в таблице консьержей
В настоящее время у меня мера выглядит следующим образом. Это работает, но промежутки между часами не соблюдаются должным образом, что, как я понимаю, было бы результатом минимального, МАКСИМАЛЬНОГО.
m_deflections =
CALCULATE (
SUM ( QueueSummary[s_accepted] ),
QueueSummary[queue] = "LinkConciergeVQ",
filter(QueueSummary, [hour] >= min(ConciergeHours[starthour])),
filter(QueueSummary, [hour] < max(ConciergeHours[endhour]))
)
- CALCULATE (
SUM ( QueueSummary[s_offered] ),
QueueSummary[queue] = "LinkVQ",
filter(QueueSummary, [hour] >= min(ConciergeHours[starthour])),
filter(QueueSummary, [hour] < max(ConciergeHours[endhour]))
)
Надеюсь, я правильно объяснил это.
Если кто-нибудь может предложить какую-либо помощь !?
Большое спасибо
Ответ №1:
Не уверен, что я понимаю ваши отношения между таблицами, но если это 1: * от консьержей до очередей через дату, тогда я думаю, вы можете использовать эту меру, или, по крайней мере, она ставит вас на правильный путь, я надеюсь:
m_deflections =
var s_accept =
SUMX(
'ConciergeHours',
var startH = 'ConciergeHours'[startHour]
var endH = 'ConciergeHours'[endHour]
return
CALCULATE(
SUM('QueueSummary'[s_accepted]),
'QueueSummary'[hour] >= startH amp;amp; 'QueueSummary'[hour] < endH
)
)
var s_offered =
SUMX(
'ConciergeHours',
var startH = 'ConciergeHours'[startHour]
var endH = 'ConciergeHours'[endHour]
return
CALCULATE(
SUM('QueueSummary'[s_offered]),
'QueueSummary'[hour] >= startH amp;amp; 'QueueSummary'[hour] < endH
)
)
return
s_accepted - s_offered
Ответ №2:
Я бы свернул 2 пары функций фильтра в один ФИЛЬТР для каждого ВЫЧИСЛЕНИЯ. Это применит фильтры к starthour и endhour в комбинации (amp;amp; означает И), где я ожидаю, что в настоящее время они применяются как логика OR, поэтому не имеют никакого эффекта.
В соответствии с этим:
m_deflections =
CALCULATE (
SUM ( QueueSummary[s_accepted] ),
QueueSummary[queue] = "LinkConciergeVQ",
FILTER (
QueueSummary,
[hour] >= MIN ( ConciergeHours[starthour] )
amp;amp; [hour] < MAX ( ConciergeHours[endhour] )
)
)
- CALCULATE (
SUM ( QueueSummary[s_offered] ),
QueueSummary[queue] = "LinkVQ",
FILTER (
QueueSummary,
[hour] >= MIN ( ConciergeHours[starthour] )
amp;amp; [hour] < MAX ( ConciergeHours[endhour] )
)
)
Комментарии:
1. К сожалению, это не сработало. Даже когда я фильтрую по дням, кажется, что он по-прежнему извлекает минимальные и максимальные значения всей таблицы ConciergeHours, а не конкретную дату.
2. Вероятно, ответ от OscarLar ближе.