Агрегирование и фильтрация в MAQL

#gooddata

#хорошие данные

Вопрос:

Я пытаюсь создать метрику, ориентированную на максимальное количество рабочих дней и сотрудников. Не могли бы вы помочь мне понять, чего мне не хватает? У меня есть следующее:

  • Факт с именем Рабочий день (значения 1 и 0).
  • Размеры, прилагаемые к факту: Компания, Сотрудник, Дата

Компании, по сути, являются нашими дочерними компаниями в разных странах, где действуют разные праздничные дни, что приводит к различиям в максимальных доступных рабочих днях.

В своем отчете я хочу видеть показатели:

A: количество рабочих дней на одного сотрудника за выбранный период времени

B: количество МАКСИМАЛЬНЫХ рабочих дней, которые у любого сотрудника были в компании sae, и за один и тот же период времени (в основном, сколько рабочих дней было доступно, если конкретный сотрудник работал во все возможные дни)

C: % от A/B

У меня возникли проблемы с созданием показателя для B, в котором я хочу найти максимальное количество рабочих дней, которые были у любого сотрудника в той же компании в течение выбранного периода времени.

Ближе всего к тому, что мне нужно, это когда я определяю метрику B следующим образом:

SELECT MAX(SELECT SUM(Workdays) BY Employee WITHOUT PF EXCEPT Date (Worked Date)) BY Company ALL OTHER

Однако, как только я отфильтрую отчет для любой подгруппы (конкретного сотрудника, команды и т.д.), Выбор повлияет на значение показателя B. Например, если я отфильтрую одного сотрудника, который проработал всего 10 дней из максимальных 20, значение показателя B также покажет 10.

У вас есть какие-нибудь предложения, что я упускаю?

Я отдаю себе отчет в том, что, возможно, не лучшая идея определять максимальное количество рабочих дней на основе того, сколько дней кто-то проработал. Потому что вполне возможно, что, возможно, даже тот человек с самым большим номером был доступен не во все дни. В моей дорожной карте указано отказаться от этого подхода и импортировать шаблоны праздников для каждой компании, но сейчас я хотел бы рассмотреть этот подход.

Ответ №1:

Значение БЕЗ PF также должно быть применено к внешней МАКСИМАЛЬНОЙ метрике. Ваша метрика должна работать, когда вы перемещаете ее в самый конец метрики:

SELECT MAX(SELECT SUM(Workdays) BY Employee) BY Company ALL OTHER WITHOUT PF EXCEPT Date (Worked Date)

В зависимости от вашей конкретной модели вам может потребоваться включить компанию в свой отчет.

Другим решением (если у вас нет праздничных календарей) может быть подсчет рабочих дней как дней, в течение которых работал хотя бы один сотрудник компании (что-то вроде SELECT COUNT(Date (Worked Date)) BY Company, Date (Worked Date), ALL OTHER WHERE (SELECT SUM(Workdays)) gt; 0)