#amazon-quicksight
Вопрос:
Я работаю над проектом по подсчету численности сотрудников в компании. У меня есть исторические данные об общем количестве сотрудников компании, агрегированные ежемесячно до октября, и ежедневные данные с ноября. мы ежедневно получаем общее количество сотрудников в системе на рекордном уровне, и для исторических данных у меня есть сотрудники в компании на конец месяца, это также рекордный уровень, т. е. для каждого сотрудника у меня есть запись. Например : Для исторических данных(до ноября 2021 года), если число сотрудников на конец месяца в октябре 2021 года составляет 50,у нас есть 50 записей с датой «20211031», а за сентябрь, если у нас 45 сотрудников на конец месяца, у нас есть 45 записей с датой 20210930, но с ноября у нас есть эти записи ежедневно.т. е. если сотрудникам 1 ноября 51, у нас есть 51 запись, и если 2 ноября, если его 52, у нас будет 52 записи с этой датой.
Я хочу подсчитать, сколько людей в системе ежемесячно. Для исторических это легко, так как у нас есть только 1 дата. для получения новых ежедневных данных, если нам нужны сотрудники за ноябрь, нам нужно получить данные на эту дату. и если мы перейдем к декабрю, нам нужно будет показать дату окончания месяца предыдущего месяца как количество сотрудников за последний месяц, а количество сотрудников за текущий день месяца как количество сотрудников за текущий месяц.
Вот как выглядят данные
Emp_id,name,count_value,date,Type 34567,xxxx,1,2021/09/30,HC 5678,yyyy,1,2021/09/30,HC 34567,xxxx,1,2021/10/31,HC 5678,yyyy,1,2021/10/31,HC 1234,,zzzz,1,2021/10/31,HC 34567,xxxx,1,2021/11/01,HC 5678,yyyy,1,2021/11/01,HC 1234,,zzzz,1,2021/11/01,HC 34567,xxxx,1,2021/11/02,HC 5678,yyyy,1,2021/11/02,HC 1234,,zzzz,1,2021/11/02,HC
Это формула, которую я написал
sumIf({count_value}, ifelse(((extract('YYYY',${Date})= 2020) or (extract('YYYY',${Date})= 2021 and extract('MM',${Date})lt;11)),(type = 'HC'), ifelse((extract('YYYY',${Date})gt;2020 and extract('MM',${Date})gt;10), (type= 'HC' and date = now()),(type= 'HC'))))
Чего нам здесь не хватает, так это количества сотрудников на конец месяца за ноябрь, если месяц перенесется на декабрь. По этой логике мы получаем только текущую дату подсчета сотрудников за все годы после ноября 2021 года
Ответ №1:
Я добавил несколько строк в ваши данные, чтобы у нас был декабрь, чтобы проверить вашу проблему. Мое решение состояло в том, чтобы создать два вычисляемых поля:
- максимальная дата в месяц
maxOver(date,[month],PRE_AGG)
- количество за дату
sumOver({count_value},[date],PRE_AGG)
И просто составьте из них таблицу (скриншот): Количество за дату по максимальной дате за месяц Таблица быстрого обзора
Это дает вам количество сотрудников на Максимальную дату каждого месяца, таким образом, конец месяца за прошлые месяцы и сегодняшние данные за текущий месяц.
Вы можете либо добавить код фильтра в формулу подсчета для типа=’HC’, либо применить фильтр к визуальному элементу. Обратите внимание, что вам, возможно, придется изменить «ПРЕДВАРИТЕЛЬНУЮ» часть вычисляемых полей в зависимости от того, как вы выполняете фильтрацию, Ура.