Metabase学习教程:仪表盘-6 时间段比较
-
如何进行时间段比较
我们通过不同的方法来比较一个指标在不同日期范围内的表现。
我们将研究不同的策略来比较两个不同时期的指标,比如将本周与上周、去年同期与上一周进行比较。我们将使用Metabase附带的示例数据库,这样您就可以继续学习了。这个示例数据库包含了2015年至2020年期间存在的一家完全真实、完全虚构的公司的订单信息。为了提高我们的查询生成器技能,我们对2018年与2019年订单的对比感兴趣。
本文基于上一篇文章时间序列比较,但这里我们讨论两种不同的策略:
• 在仪表盘上并排比较时间段
• 在同一图表上叠加两个时间序列
在仪表盘上并排比较时间段
图1.dashboard有两列,左边是Date 1,右边是Date 2,每个列都有连接到各自的筛选器小部件的卡片。第三个小部件连接到两列中的卡,以筛选产品类别。
此模式易于维护和扩展(通过修改卡或添加新卡),当您要比较多个指标时,它尤其有用。
第一步是创建一个问题。对于我们的数据,我们将选择Orders表。我们将汇总订单数量,并按月分组。然后我们将问题保存为“每月订单数”。
图2。我们的问题的笔记本视图,总结了按月份分组的订单计数
接下来,我们将把“每月订单”问题添加到一个新的仪表盘,并将该仪表盘称为“并排比较”,或其他任何方式。然后,我们将同样的问题“每月订单数”再次添加到仪表盘(即,作为第二张卡片),将其放在原始问题的右侧。
我们在这里要做的是在仪表盘中创建两个列:左栏有一个日期范围,右栏有第二个日期范围。我们会的安装过滤器为了控制卡片的日期范围,左栏(如图3所示)和另一个过滤器控制右栏的日期范围。
我们将为每个过滤器使用“Between”选项设置默认日期范围(您可以键入日期,而不是单击日历)。
• 日期1范围:2018年1月1日到2018年12月31日
• 日期2范围:2019年1月1日到2019年12月31日
图3。将日期1筛选器附加到左栏(而不是右栏)的每张卡片上。
保存更改,然后刷新页面以更新结果。我们还可以将其他筛选器附加到仪表盘,以便在两列中连接到卡片,例如,如果要按特定类别筛选订单。
您可以添加带有时间序列的附加卡,并将它们连接到该列对应的筛选器。
并列比较提示
请记住,这种模式在查看手机时会崩溃,因为Metabase会将每张卡折叠成一列。您仍然可以理解仪表盘,但它要求您仔细查看每张卡片的日期。
对每一列使用相同的问题
这样,如果你想修改问题,你只需要更新一个问题,两列都会得到更新。
确保两张卡片上的坐标轴相同
Metabase默认自动调整y轴以考虑这些值,但如果一张卡的最高值为500,而另一张卡的最高值为1000,则很难看到两张卡之间的差异。在仪表盘编辑模式下,将鼠标悬停在某个卡上,然后单击调色板图标以编辑可视化设置。单击轴线tab,关掉自动y轴范围并设置y轴最大值(应将最小值保留为0)。
图4。将y轴最大值设置为600。
使用目标线和/或趋势线
添加线条可以使人们更容易在图表中区分度量性能。在图1中,很明显,2019年的订单比2018年更经常超过目标。
将文本卡添加到组相关卡
为了使人们更容易理解拆分设置,我们可以添加文本卡,指示每个列对应于其中一个筛选器:左侧列对应日期1,右侧列对应日期2。在仪表盘编辑模式下,您可以通过将鼠标悬停在卡片上并单击调色板图标。例如,对于##日期1,我们设置了垂直对齐到“顶部”时水平对准切换到“中心”,然后关闭显示背景设置。
使用颜色区分列
您可以使用不同的颜色来区分每列中的卡。将鼠标悬停在一张卡片上,然后单击调色板图标更新卡的可视化设置。
有关仪表盘的更多提示,请查看BI仪表盘最佳实践.
在同一图表上叠加两个时间序列
现在开始一个完全不同的方法。这里我们将介绍两种模式:
• 使用自定义列对静态日期范围进行分组
• 使用自定义表达式将上周与前一周进行比较
使用自定义列对静态日期范围进行分组
在这里我们将使用Case语句来创建自定义列。我们可以使用之间表达式。在这里,我们将使用自定义表达式.
case(between([Created At], "2018-01-01", "2018-12-31"), "2018", between([Created At], "2019-01-01", "2019-12-31"), "2019")
这个表达式的意思是,对于结果中的每个记录(行),添加一个新列。如果Created At字段在2018年1月1日至2018年12月31日之间,在该记录的年份列中输入值“2018”。如果Created At日期介于2019年的范围内,用“2019”代替。否则,请将其留空。接下来,我们要过滤我们创建的“年份”列不是空的所有记录。
图5。查询编辑器包含一个名为“年”的自定义列,筛选出空的年份,并按年份对订单和组进行计数,并按年创建。
这里我们有两个时间序列,2018年和2019年,在同一个图表上:
图6.同一图表上的两个时间序列。
你也可以把它想象成条形图:
图7。与图6中的序列相同,但与条形图相同。
现在,如果要比较日期与当前日期的关系,可以使用interval函数case语句,但我们将介绍interval下一个。
使用自定义表达式将上周与前一周进行比较
在上一篇关于时间序列比较 CountIf聚合和between功能。这次我们要用interval函数,它允许我们指定相对于当前日期的持续时间。
示例数据库只有到2020年的数据(不确定公司发生了什么),所以您需要在自己的数据上尝试一下,但它的工作原理如下:
和Orders表作为我们的起始数据,我们将添加两个摘要(指标)。在总结节中,我们将使用一个名为“上周”的自定义表达式定义一个摘要:
CountIf(interval([Created At], -1, "week"))
在interval-speak中,0表示当前星期,所以我们写-1来仅在Created At因为那一排是从上周开始的。我们也可以将“周”改为“日”、“月”、“年”或其他间隔;检查数据库的文档,查看它支持哪些间隔。
接下来,我们将为“前一周”定义第二个摘要。
CountIf(interval([Created At], -2, "week") AND NOT interval([Created At], -1, "week"))
这里我们说的是只统计前两周的所有订单,除了(AND NOT)上周的订单。
最后,我们需要对总结进行分组。既然我们想看看上星期一和前一个星期一(以及一周中每隔一天)的表现,我们就想分组Created At通过星期几。