DAX суммирует разные DateTime

У меня проблема, я хотел бы суммировать рабочее время моего сотрудника на основе данных (время2 - время 1) ежедневно, и вот мой запрос:

Effective Minute Work Time = 24. * 60 * (LASTNONBLANK(time2,0) -FIRSTNONBLANK(time1,0))

Он работает ежедневно, но если я просматриваю еженедельные / ежемесячные данные, он показывает неправильную сумму, как показано ниже:

введите здесь описание изображения

Я хочу, чтобы сумма минут между днями в разное время (время2-время1)

Спасибо за вашу помощь :)


person Edoard Putro Sukantio    schedule 28.11.2015    source источник
comment
Имеет ли ваша модель данных одну строку на сотрудника в день или несколько строк на сотрудника в день? Находятся ли time1 и time2 в одной таблице?   -  person GregGalloway    schedule 30.11.2015
comment
В дополнение к GregGalloway's - если вы можете предоставить диаграмму модели и описание ограничений / гарантий в отношении ваших данных и / или образцов данных, это очень поможет нам в оказании вам помощи.   -  person greggyb    schedule 30.11.2015


Ответы (1)


У вас есть несколько подходов: сложный или более простой :). Сложнее (по крайней мере, для меня :)) использовать DAX для этого. Ты бы:

1) создать таблицу дат,

2) Используйте функцию вычисления DAX, чтобы оценить ваши последние непустые и первые непустые значения (вам может потребоваться использовать таблицу вычислений, но я не уверен; эксперты DAX вмешиваются). Затем вычтите одно против другого.

Это даст вам правильные значения для данного дня для данного человека. Вы можете обеспечить выполнение последнего условия, поставив флажок «имеет одно значение» на имени человека, чтобы ваша мера сообщала автору отчета, если он использует ее неправильно.

Сделать то же самое с финиками немного сложнее. В показанном вами примере вы включаете дату в группу строк. Но если вы передумали и хотите вместо этого иметь «общее количество часов, отработанных людьми» или «общее количество часов, отработанных всеми», вы еще не закончили моделирование.

Следующим шагом будет использование таблицы вычислений в сочетании с вычислением для создания меры, возвращающей итог. Вы воспользуетесь таблицей вычислений, чтобы оценить каждую дату и количество отработанных часов в этот день по отдельности. Затем вы воспользуетесь функцией Calculate, чтобы свести все это к одному числу. Если вы не будете осторожны с DAX (или созданием отчета), вы можете смешать, для какого человека вы подводите итоги, чтобы ваш первый / последний непустой пробел не был на уровне человека. Это быстро становится интенсивным.

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

person Lukasz P.    schedule 08.12.2015