Таблица — изменение отображаемых значений оси без изменения базовых данных

#tableau-api

#таблица-api

Вопрос:

Я ежегодно сравниваю показатели продаж двух разных продуктов. Данные извлекаются из одной таблицы SQL Server и разделяются на текущий и предыдущий год путем фильтрации по следующему вычисляемому полю:

 IF year([Friday of Week Sold]) = YEAR(TODAY())-1 THEN 
    IF [Product Type] = "A" THEN "PY Product A"
    ELSEIF [Product Type] = "B" THEN "PY Product B"
    END
ELSEIF year([Friday of Week Sold]) = YEAR(TODAY()) THEN 
    IF [Product Type] = "A" THEN "CY Product A"
    ELSEIF [Product Type] = "B" THEN "CY Product B"
    END
END 
  

(вычисляемое поле, вдохновленное сообщением в блоге здесь)

Конечным результатом является приведенная ниже диаграмма:

Годовой график

я пытаюсь выяснить, есть ли способ изменить отображение оси x так, чтобы в нем отображались даты окончания недели текущего года, а не номер недели; например, отображать «Неделя 1» как «1/4/19», «Неделя 2» как «1/11/19» и т. Д. Изменение типа данных на week не работает, поскольку затем данные разделяются на две части следующим образом: введите описание изображения здесьи я пытаюсь, чтобы строки накладывались друг на друга, чтобы пользователям было легко сравнивать.

Я согласен с незначительным отклонением в датах от этого (неделя 1 в 2019 заканчивается 1/4/19 по сравнению с неделей 1 2018, заканчивающейся 1/5/18). Цель состоит в том, чтобы позволить конечным пользователям быстро и грубо сравнить наши показатели на этой неделе с показателями прошлого года.

Ответ №1:

Это не самое элегантное решение, но оно работает:

 if DATEPART('week',[Order Date],'Friday') = 1 Then #1/4/2019# 
ELSEIF DATEPART('week',[Order Date],'Friday') = 2 Then #1/11/2019#
ELSEIF DATEPART('week',[Order Date],'Friday') = 3 Then #1/18/2019# 
ELSEIF DATEPART('week',[Order Date],'Friday') = 4 Then #1/25/2019#
ELSEIF DATEPART('week',[Order Date],'Friday') = 5 Then #2/1/2019#
ELSEIF DATEPART('week',[Order Date],'Friday') = 6 Then #2/8/2019#
ELSEIF DATEPART('week',[Order Date],'Friday') = 7 Then #2/15/2019#
ELSEIF DATEPART('week',[Order Date],'Friday') = 8 Then #2/22/2019#
[...52...]
END
  

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

Конечный продукт потребует, чтобы вы поместили YEAR() меры, которую вы хотели бы иметь в качестве своих линий, в color (в вашем случае, вероятно, вложенный IF будет отдельным вычислением) (в приведенном ниже примере [Прибыль].) В результате каждый номер недели включается в вышеуказанное вычисление, которое используется в качестве измерения. Вам нужно будет изменить тип диаграммы на «Line», и вы, вероятно, тоже захотите right click the axis > rotate label .

введите описание изображения здесь