Quicksight: агрегация за последний день месяца - PullRequest
0 голосов
/ 18 февраля 2020

Я работаю над графиком, на котором ось X представляет собой дату, агрегированную по месяцам. ¿Можно ли агрегировать по дням, но показывать только последний день каждого месяца, используя фильтр o другим способом? Другая возможность, которую я вижу, состоит в том, чтобы создать вычисляемое поле, чтобы показать значение для последнего дня агрегированного периода, но я не смог этого сделать. Pos Возможно ли это?

Ответы [ 3 ]

0 голосов
/ 26 февраля 2020

вычисленное поле для отображения значения за последний день агрегированного периода, но я не смог этого сделать. Это возможно?

Используя предыдущий ответ, я использовал эту формулу в вычисляемом поле Quicksight, чтобы получить показатель для «последнего дня текущего месяца». Вы можете изменить сейчас (), чтобы получить последний день другого периода.

extract("DD",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",now()))))
0 голосов
/ 28 февраля 2020

я наконец-то решил это так, используя опубликованные формулы:

parseDate
(
concat
(
toString(extract("YYYY",addDateTime(1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
,"-"
,toString(extract("MM",addDateTime(1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
,"-"
,toString(extract("DD",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
)
,'yyyy-MM-dd')

И так как текущий месяц не закончился, поэтому у меня нет данных за последний день, я использую ifelse, как это:

ifelse(
parseDate(
concat(
toString(extract("YYYY",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
,"-"
,toString(extract("MM",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
,"-"
,toString(extract("DD",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date))))))
,'yyyy-MM-dd') 
>= now()
,addDateTime(-1,"DD",now())
,parseDate(concat(toString(extract("YYYY",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
,"-"
,toString(extract("MM",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
,"-"
,toString(extract("DD",addDateTime(-1,"DD",addDateTime(1,"MM",truncDate("MM",date)))))
)
,'yyyy-MM-dd')
)

И, наконец, я создал следующее вычисляемое поле:

sumIf(base,formatDate(date,'yyyy-MM-dd') = formatDate({fecha_last_day},'yyyy-MM-dd'))

Результат:

Значение, относящееся к последнему дню каждого месяца, и за текущий месяц последний день с данными

0 голосов
/ 20 февраля 2020

Я не совсем уверен, что вы пытаетесь сделать, чтобы дать лучшее руководство.

Если бы мне пришлось написать выражение для вычисления последнего дня месяца, я бы

  1. Используйте функцию truncDate для извлечения информации о месяце и году из даты.
  2. Добавьте 1 к месяцу, если это не декабрь.
  3. Получите первый день месяца (который всегда имеет 1 как день)
  4. Используйте addDateTime для вычитания одного дня

Например, с учетом даты 19.02.20 (в формате ММ / ДД / ГГГГ). 02 - номер месяца. 20 - номер года. Следующий месяц - 03. Начало этого месяца - 03.01.20. Последний день предыдущего месяца будет 29.02.20, который я получу, вычтя день с 1 марта.

...