业务实战记录(3):Tableau计算用户注册之后6个月内订单数异常

一、前言

年初的时候,业务人员提了一个需求,需要查看今年之后每个月注册的用户,6个月内的订单数(当月开始往后计算6个月),并分别展示当月、次月到第5个月的订单数统计,由于还需要看用户的详情信息,所以把所有用户的订单数据拉到Tableau面板上,通过Tableau公式进行聚合统计。
注:实际需求并不是统计订单数,而且统计其他业务需求,由于背景信息较复杂,改用订单数类比。

二、需求实现

数据拉完放到面板上,然后通过以下公式统计:

//6个月总订单数
//原公式
count(if MONTH([支付时间])<=MONTH(DATEADD('month',5,[注册时间])) then [订单id] end )

验证了一下数据,没问题,然后交差了。

这几天,运营人员在反馈一些其他问题的时候,突然发现,这一列数据神奇的变成0了,虽然8月份明明是有订单数据的。
后来看了一下公式,推算一下,8+5=13,嗯,变成明年的1月份了,单独取月份对比的时候,8<1不成立,所以数据都没了。
image.png
怎么解决呢?
其实很简单,tableau提供了一个时间截断公式,截断后的部分取最小值,举个例子就明白了,比如有一个时间:2022-08-10 08:22:33

  • 截取年份,则月日时分秒都取最小值,即2022-01-01 12:00:00 AM(tableau的0点显示为12点AM);
  • 截取月份,则日时分秒都取最小值,即2022-08-01 12:00:00 AM
  • 截取日份,则时分秒都取最小值,即2022-08-10 12:00:00 AM
  • 官方的举例是使用季度(如下图),季度是一个隐含条件,一季度使用1月1日,二季度使用4月1日,三季度使用7月1日,四季度使用10月1日。所以2022-08-10 08:22:33截取季度就是2022-07-01 12:00::00 AM

image.png
测试结果如下:
image.png
所以修改后公式如下:

//6个月总订单数
//修改后公式
count(if DATETRUNC('month',[支付时间])<=DATETRUNC('month',DATEADD('month',5,[注册时间])) then [订单id] end)

就是将MONTH()函数替换为DATETRUNC()即可。

三、小结

//6个月总订单数
//原公式
count(if MONTH([支付时间])<=MONTH(DATEADD('month',5,[报名日期])) then [order_id] end )
//修改后公式
count(if DATETRUNC('month',[使用时间])<=DATETRUNC('month',DATEADD('month',5,[日期])) then [order_id] end)

在处理时间问题上,经常会有一些意向不到的“惊喜”,通过这些“惊喜”可以不断丰富我们的经验,完善我们的认知,“且行且珍惜”。

数据表和Tableau上的一些测试都在资源(Tableau计算用户注册之后6个月内订单数)中,需要的小伙伴自行下载(免费)查看。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xin学数据

为你点亮一盏灯,愿你前进无阻。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值