第一个演示案例是季节同比图(Cycle Plot)的制作方法,因为季节性因素的影响,同比图将跨年相同时段数据放入同一区间进行对比,同时加入平均参考线。
//
Tableau的解决思路
//
将【销售】和【订单日期】分别放入【行】、【列】中,下钻日期胶囊至【月】级别,去掉【季度】级别。然后调整顺序,使【月】的位置先于【年】。
图2.1
在分析栏中将【参考线】拖至工作表中,添加依据区的参考线。
图2.2
在参考线对话框中,选择【平均值】,如图2.3。
图2.3
完成后,我们得到2015~2018年依据月份为区的同比图,相同的月份放置在同一个区,使同比效果更加清晰。
图2.4
//
Power BI的解决思路
//
彼得没有发现PowerBI库中有相似的可视化图,因此选择最接近的折线和堆积柱图作为案例。
仅仅导入线上销售表,彼得发现表中没有日期表,没有关系,直接创建新表并输入以下公式:
日期表=
VARBaseCalendar = CALENDAR ( "2015-1-1", "2019-1-1" ) //将日历做成一个变量BaseCalendar
RETURN
GENERATE (// GENERATE ( , )函数返回表1和表2的交叉表
BaseCalendar, //baseCalendar为表1
VAR Basedate = [Date]
VAR YearDate = YEAR ( Basedate)
VAR MonthNumber =MONTH (Basedate )
RETURN //返回单行表以及所写的列表达式
ROW (
"年", YearDate, "月", FORMAT ( Basedate, "mmm" ) ,"日",DAY(Basedate),
"月份数", MonthNumber, "年月", FORMAT ( Basedate, "yyyy-mmmm" ),
"日期键", YearDate & FORMAT([Date],"mm") &FORMAT([Date],"dd")
)
)
上面的"日期键", YearDate & FORMAT([Date],"mm") &FORMAT([Date],"dd"。语句非常关键,通过此创建的日期键作为关系键与销售表进行关联。
图2.5
在数据中选择【月】字段,依据【月份数】进行【按序排列】。
图2.6
创建一个新度量:SalesAmount = SUM([销售额])将度量和字段分别放入可视化图的设置中,得出依据不同年份堆积的柱图,如图2.7所示。
图2.7
创建平均值:其分子为销售额,分母为有销售记录的年份不重复计数。分子的计算如下:
Numof Sales Year = COUNTROWS(CALCULATETABLE(VALUES('日期表'[年]),'线上销售表'))
此处求得是线上销售表中的销售年不重复计数,而不是日期表中的不重复计数。
AvgSalesBy Year = [Sales Amount]/[Num of Sales Year]
图2.8
点评:相比下,本案例中Tableau的构图更加方便,最后的可视化月份比较更为直接。一般情况下,Tableau无需专门的日历表,日期字段可灵活在年、季、月、周、日中灵活切换。日期类型则可以为离散型或者连续型。