Tableau-在不更改基础数据的情况下更改轴显示值

时间:2019-04-09 16:07:45

标签: tableau

我正在逐年比较两种不同产品的销售业绩。数据是从单个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 

(受博客文章here启发的计算字段)

最终结果如下图:

YoY chart

我要弄清楚的是,是否有一种方法可以更改x轴的显示,以便它列出当前年份的周末日期而不是星期几;例如将“第1周”显示为“ 1/4/19”,将“第2周”显示为“ 1/11/19”,依此类推。将数据类型更改为周不起作用,因为它将数据分成两部分,如下所示: enter image description here 并且我正在尝试使线条彼此重叠,以方便用户进行比较。

我同意日期的微小变化(2019年的第1周以1/4/19结尾,而2018年的第1周以1/5/18结尾)。目的是使最终用户能够对本周和去年的表现进行快速,粗略的比较。

1 个答案:

答案 0 :(得分: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()放到颜色上(在您的情况下,嵌套的IF可能是单独的计算)(在下面的示例中[Profit ]。)结果是,每个星期数都会汇总到用作维度的上述计算中。您需要将图表类型更改为“折线”,并且可能还需要right click the axis > rotate label

enter image description here