时间序列比较
如何使用自定义表达式进行同比或逐月比较。
一个强大但也许不明显的东西自定义表达式让我们做的就是创造时间序列比较。例如,如果我们想比较2019年和2018年的每月收入或每天的用户数,我们可以使用Sumif
和Countif
聚合功能。
第一步:开始一个新问题
在导航栏的右上角,我们将单击+新的按钮,然后选择问题。我们将选择原始数据>示例数据库,然后选择orders
表。
第2步:添加第一个指标
在我们的例子中,我们要求和Subtotal
列在我们的orders
表中列出我们的总收入,然后按月份细分。但我们要做的另一件事是创建一个单独的指标对于我们希望看到的每一年Sumif
功能。(你可以很容易地使用Countif
函数,如果您希望对表中的行进行计数,而不是对列求和。)
加上我们的第一个指标总结面积笔记本编辑器我们点击按钮选择要查看的指标
然后向下滚动到自定义表达式选项。
在弹出的框中,我们将写下以下内容:
SumIf([Subtotal], between([Created At], "2019-01-01", "2019-12-31"))
这实际上是在说,“总结一下Subtotal
列,其中Created At列在2019年1月1日到2019年12月31日之间。”让我们单独看看这个表达式的具体部分:
- 第一部分
Sumif
函数是输入要求和的列的位置,用方括号括起来:[
Subtotal
]
. - 第二部分
Sumif
函数是我们编写条件以指定哪些行应该被求和的地方。我们在这里做的是使用between
函数指定我们只想将subtotal
对于2019年内的订单。我们在这里而不是在过滤器以便我们添加的每个额外指标都可以指定不同的时间范围。在between
功能,[
Create At
]
是表中用于指定时间范围的time列。引号中的第一个日期是我们范围的开始日期,第二个日期是结束日期。 - 在
between
我们必须用以下格式写出日期:YYYY-MM-DD
即,四个字符表示年份,然后两个字符表示月份,然后两个字符表示日期,所有字符之间用破折号隔开。请注意,您始终需要使用两个字符表示月份和日期:您必须填写“2019-01-01”,而不是“2019-1-1”。
然后我们点击完成加上我们的指标。
第三步:每增加一年就重复第二步
若要将其他年份添加到比较中,请单击+
按钮并为每年添加一个附加的自定义表达式。最简单的方法是复制步骤2中添加的第一个表达式,然后将其粘贴到每个新表达式中并修改between
功能。
或者从这里复制:
2018年:
SumIf([Subtotal], between([Created At], "2018-01-01", "2018-12-31"))
2017年:
SumIf([Subtotal], between([Created At], "2017-01-01", "2017-12-31"))
图3。使用自定义表达式向汇总节。
第四步:按月份划分
接下来我们需要点击选择要分组的列
选择我们的分组列。在大多数情况下,我们会选择一个时间列并选择按月
粒度选项。但在这种情况下,为了将系列叠加在一起,我们将选择每年的月份
选项。(如果你选择月
而不是每年的月份
,你会看到一个接一个的系列
为此,我们将悬停在Create At
日期列并单击按月
要显示其余的粒度选项,请选择每年的月份
.
第五步:可视化结果!
要查看结果,请单击可视化按钮在笔记本的底部。Metabase将自动以条形图的形式显示我们的结果,每年有不同的序列,并按每年的每个月进行细分。
如果您希望将其视为折线图,可以单击可视化按钮在屏幕左下角查看您的选项。
更进一步
你并不局限于与这种模式进行逐年比较。只需在之间
函数,以及日期分组的粒度。例如,我们可以计算人
表2019年3月,并与2018年3月用户进行比较,写下两个表达式:
- countif( between( [Created At], "2018-03-01", "2018-03-31") )
- countif( between( [Created At], "2019-03-01", "2019-03-31") )
然后我们将通过Create At
将粒度设置为“月日”,以便将两个系列重叠在一起。这是查询生成器:
结果是一个图表:
您可以使用图表底部的时间序列图标轻松调整分组: