2015-07-15 7 views
0

Мы пытаемся выполнить вычисление использования% в DAX, и я не могу понять форумлу. Вот установка:DAX Usilization% - Формула измерения

Таблица изображения здесь: http://imgh.us/dax.png

Таблица 1: Существует [табель] Таблица для наших ресурсов (R1, R2, R3, R4). Каждая запись в расписании содержит дату и количество заряженных часов.

Таблица 2: таблица [ресурс] с ресурсом [дата найма] и [дата окончания].

Таблица 3: Существует таблица [calendar] с доступными часами для каждой даты. Будни уже 8 ч/день, в выходные дни есть 0 час/день

Для любого данного контекста фильтра необходимо вычислить:

Использование% = (часы заряжена)/(часы, доступные)

Это не так сложно, за исключением того факта, что (часы доступны) должны включать только даты между [датой найма] и [датой окончания] для каждого сотрудника. Получение этого для работы на совокупном уровне было очень сложным для нас, поскольку расчет должен учитывать каждый диапазон дат каждого сотрудника.

Ближайший мы получили это:

[hours available] := SUMX(DISTINCT(timesheet[resource_key]), SUM(calendar[utility_hours])) 

[hours charged] := SUM(timesheet[bill_hours]) 

[Utilization %] := [hours charged]/[hours available] 

Однако это не выполняет фильтрацию диапазона ресурсов прокат/дата термин, который требуется.

Спасибо за любую помощь, которую вы можете предложить!

ответ

1

Ваша оценка за [часы] должна быть пересмотрена, поэтому вместо суммирования всех часов работы в календаре она суммируется только по фильтруемому набору строк, где календарная дата находится между датой начала и датой окончания соответствующего ресурса.

[hours available]:=SUMX(DISTINCT(timesheet[resource_key]),CALCULATE(SUM(calendar[utility_hours]),FILTER('calendar',calendar[date_key]>=FIRSTDATE(resources[hire_date_key])),FILTER('calendar',calendar[date_key]<=LASTDATE(resources[termination_date_key])))) 

Вы можете изменить индикатор «> =» и «< =» в зависимости от того, желаете ли вы включить даты начала и окончания в расчет.

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

[hours available]:=SUMX(resources,CALCULATE(SUM(calendar[utility_hours]),FILTER('calendar',calendar[date_key]>=FIRSTDATE(resources[hire_date_key])),FILTER('calendar',calendar[date_key]<=LASTDATE(resources[termination_date_key])))) 

Но вы также должны изменить [часов заряжена], чтобы дать нули, а чем заготовки, добавив ноль:

[hours charged]:=SUM(timesheet[bill_hours])+0 
+0

Это становится все ближе! См. Изображение результатов, [здесь] (http://imgh.us/dax2.png). По приведенной выше формуле ресурсы R1 и R3 имеют использование в течение месяца 201503, однако они не включаются в [доступные часы]. Кстати, вот моя формула для использования%. '[Usilization%]: = IF (ISBLANK ([часы доступны]) || [часы доступны] = 0, BLANK(), [часы выставлены счета]/[часы доступны])'. Есть ли способ уточнить это, чтобы ресурсы, не включенные в 'DISTINCT (timesheet [resource_key])', все еще включены в [часы доступны]? – rocketfish

+0

Существует более простой способ обработки вашего использования%. Если вы используете [Утилизация%]: = DIVIDE ([часы выставлены счет], [часы доступны]), тогда это делает разумный разрыв, учитывая Бланки и Целое в [часы доступны] для вас. Теперь я посмотрю на другой вопрос. –

Смежные вопросы