Недавно у меня была задача по визуализации данных в Google Data Studio. Много графиков и таблиц с данными, сгруппированными по месяцам. Но из дашборда нужно было убрать данные за текущий месяц.

Я захотел решить эту задачу без изменения SQL запросов, созданий представлений и т. д. Короче, сделать все силами Google Data Studio.

Итак, месяц указан в виде даты — первого числа каждого месяца:

И нужно убрать при выводе из таблицы дату, относящуюся к текущему месяцу.

Первое, что пришло в голову — создать дополнительное поле (cur_date), которое содержит в себе дату первого числа текущего месяца в виде формулы:

DATE(YEAR(CURRENT_DATE()), MONTH(CURRENT_DATE()), 1)

И сделать еще одно поле, которое будет определять с помощью выражения CASE, равна ли дата в поле period дате в поле текущего месяца cur_date. Выглядеть это должно так:

CASE
  WHEN period = cur_date THEN 1
  ELSE 0
END

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

Тогда мне пришла другая идея — взять разницу между датой указанного period и датой текущего месяца cur_date:

ABS(YEAR(CURRENT_DATE())-YEAR(period))+ABS(MONTH(CURRENT_DATE())-MONTH(period))

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

Оставить комментарий