Рейтинг только за последний месяц - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть вычисляемое поле «Общий доход», которое объединяет доход от нескольких источников данных в Таблице. Основываясь на этом поле (поле агрегирования) ежемесячно, я хотел бы показать только ТОП 5 товаров с самым высоким доходом за последний месяц.

table screenshot

Как показано в приведенной выше таблице, элементы должны быть отфильтрованы (так как они являются ТОП-5 в марте) на основе данных о доходах за последний месяц (март). Как этого добиться, используя RANK()? Я не могу ранжироваться только за последний месяц, как сформулировано ниже, потому что он показывает ошибку, поскольку я не могу смешивать агрегатные и неагрегированные функции.

IF DATETRUNC('month'),ReportDate)=//March 1st date given// 
THEN RANK(Total Revenue)
END

1 Ответ

0 голосов
/ 25 апреля 2018

Мое решение - это своего рода обходной путь, но, похоже, оно работает:

  • Создайте вычисляемое поле по следующей формуле:

IF DATEPART('month', {MAX([date])}) = DATEPART('month', [date]) and DATEPART('year', {MAX([date])}) = DATEPART('year', [date]) THEN [revenue] ELSE 0 END

Часть {MAX([date])} в коде получает максимальную дату в ваших данных, она фиксируется с помощью символов { и }, так что на значение не влияют фильтры, разделы даты и т. Д. Если вы хотите месяц сортировки будет таким, каким мы находимся, тогда вы должны изменить эту часть на NOW()

Теперь у нас есть значение, содержащее только сумму за последний месяц, и мы можем отсортировать наш визуал с помощью этой Меры .

Вы можете перетащить свою новую меру (я назвал свою меру: «доход за последний месяц») к деталям и щелкнуть правой кнопкой мыши по своей таблетке item на Rows , отсортировав ее по новое поле.

И, наконец, перетащите элемент в фильтры и перейдите на вкладку Top , отфильтруйте данные по сумме показателя "доход за последний месяц".

Ниже на скриншоте показаны данные Excel и окончательная таблица Tableau:

enter image description here

...