根据日期和客户名称导出重新订购的计算

问题描述 投票:0回答:1

我正在尝试按日期和客户名称推导重新订购的计算。输出以“周”为单位。如果也可以轻松地在“天”和“月”之间切换。

例如。 “万豪酒店的订单间隔时间平均为 xx 周,洛杉矶万豪酒店的订单间隔时间平均为 xx 周”。

还需要能够计算“今天的最后订单”。因此,例如,如果客户的最后一个订单是“2023 年 1 月 1 日”并且他们再也没有订购过,我想计算从那天到今天之间的时间(current_timestamp)

本质上是一个 Datediff,但在考虑客户名称和客户名称子项时无法使其正常工作。

订购日期 客户姓名 客户_名称_子
2022 年 5 月 20 日 万豪 洛杉矶
2022 年 5 月 20 日 万豪 纽约
2022 年 5 月 26 日 万豪 洛杉矶
2022 年 5 月 27 日 万豪 迈阿密
2022 年 6 月 10 日 万豪 洛杉矶
2022 年 6 月 16 日 万豪 迈阿密
2022 年 6 月 22 日 万豪 洛杉矶
2022 年 6 月 29 日 万豪 迈阿密
2022 年 7 月 6 日 万豪 洛杉矶
2022 年 7 月 8 日 万豪 迈阿密
2022 年 7 月 13 日 万豪 迈阿密
2022 年 7 月 20 日 万豪 迈阿密
2022 年 7 月 28 日 万豪 迈阿密
2022 年 8 月 3 日 万豪 洛杉矶
2022 年 8 月 30 日 万豪 洛杉矶
2022 年 9 月 14 日 万豪 洛杉矶
2022年10月18日 万豪 洛杉矶
2022年12月22日 万豪 洛杉矶
2023 年 1 月 9 日 万豪 洛杉矶
datediff tableau-desktop
1个回答
0
投票

使用的方法是 Dense_Rank 函数和 PARTITION with Lookup:

Dense_Rank:

  • 这会根据客户价值给出每个订单日期的排名数字,以了解最先和最后出现的订单

    {PARTITION [客户名称]:{ ORDERBY [订单日期] ASC:RANK_DENSE()}}

^ 标记为 Order_Rank_Customer 的列

分区/查找:

  • 这使用 Dense_Rank 作为参考来了解客户的第一个/最后一个日期。这会带回特定客户的先前订单,以生成我标记为“先前订单日期”的列

    { 分区 [客户名称]: { ORDERBY [Order_Rank_Customer] DESC: LOOKUP([订单日期],1)}}

自上次订单以来的天数:

  • 这是一个带有 ABS(绝对值)的简单 DATEDIFF,因为它会生成负数

    ABS(DATEDIFF('天',[订单日期],[最后重新订购日期客户]))

© www.soinside.com 2019 - 2024. All rights reserved.