繁体   English   中英

将一个小时的可用性计数与每个类别的上一小时和下一小时进行比较-DeliveryDate

[英]Compare an hour's Availability Count with previous and next hour per category-DeliveryDate

我有一个包含产品类别、DeliveryDate、AvailbilityCount(此 DeliveryDate 有多少产品可用)、RequestTime(用户检查可用性的日期、时间 - 日期将是一个常数,因为它是一天的数据)的数据。

我想确定哪个类别和交付日期,AvailbilityCount 在白天下降到 0,并且在请求之前和之后不是 0(基于时间)。 我附上了样本数据(表 1)及其预期的 output(表 2)。

样本数据为:

Category    DeliveryDate    RequestTime AvailablilityCount
A   9/4/21  7/4/21 12:00    3
A   9/4/21  7/4/21 2:00     2 
A   9/4/21  7/4/21 18:00    2
B   10/4/21 7/4/21 1:00     4 
B   10/4/21 7/4/21 5:00     0
B   10/4/21 7/4/21 6:00     4 
A   9/4/21  7/4/21 19:00    0 
A   9/4/21  7/4/21 20:00    2 
C   9/4/21  7/4/21 12:00    2 
C   9/4/21  7/4/21 13:00    3
C   9/4/21  7/4/21 0:00     4 
C   9/4/21  7/4/21 17:00    2 
C   9/4/21  7/4/21 19:00    2 
C   9/4/21  7/4/21 12:00    2 
A   10/4/21 7/4/21 12:00    3
A   10/4/21 7/4/21 2:00     3 
D   9/4/21  7/4/21 12:00    2 
D   9/4/21  7/4/21 1:00     0 
D   9/4/21  7/4/21 14:00    4 
D   9/4/21  7/4/21 1:00     0
E   10/4/21 7/4/21 2:00     0 
E   10/4/21 7/4/21 11:00    0 
E   10/4/21 7/4/21 14:00    0 
F   9/4/21  7/4/21 3:00     3 
F   9/4/21  7/4/21 11:00    0
F   9/4/21  7/4/21 11:30    4 
F   9/4/21  7/4/21 12:00    4

说明如下: 最终 Output 说明 *Category Delivery Date Count

21 年 9 月 4 日 1

对于交货日期为 4 月 9 日的 A 类,在 19 小时,AvailbilityCount 为 0,而其前一小时和下一小时(18 小时和 20 小时)不为 0。
21 年 10 月 4 日 1

对于交货日期为 4 月 10 日凌晨 5 点的 B 类,AvailbilityCount 为 0,因为在此之前和之后(凌晨 1 点和 6 点)的可用性计数不为 0。因为,在凌晨 2 点之间没有交货日期的类别 B 的记录& 凌晨 4 点,之前的时间是凌晨 1 点。”
21 年 9 月 4 日 2 日

计数将为 2,因为在凌晨 1 点有 2 条值为 0 的记录。


类别 C 将不在 output 中,因为AvailbilityCount 整天不为0。
E 类将不在 output 中。 解释:有 3 条记录,时间分别为 2AM、11AM、2PM。 凌晨 2 点 (AvailbilityCount = 0) 的记录不会出现在 output 中,因为在凌晨 2 点之前没有可比较的记录,即使在凌晨 2 点之后有一条 AvailbilityCount = 0 的记录。 上午 11 点的记录(AvailbilityCount =0)不会是 output,因为之前(上午 2 点)和之后(下午 2 点)的可用性计数也是 0。下午 2 点的记录不会是 output,因为在 2 点之后没有记录来比较,即使它之前有一条记录,AvailbilityCount = 0。"
F 21 年 9 月 4 日 1 类 F 将在 output 中。 有 4 条记录,时间分别为 3AM、11AM、11:30AM、12PM。 凌晨 3 点和中午 12 点的记录不会出现在 output 中,因为没有可比较的前后记录。 上午 11 点的记录将在 output 中,因为上午 3 点和下午 12 点的值不为 0。上午 11:30 的记录将被绕过。 所以,基本上我们会在每个小时取最小值并相互比较。*

您的数据中有一点不清楚,即request_time的 AM/PM。 一旦你解决了这个问题,你会得到几乎相同的 output。

另一件事是, tableau在处理table calculations或查找功能时并不是很擅长。 如果您打算使用 R 或 python 之类的编程语言,那将是一件很容易的事。

请在画面中进行如下-

  • 不用说正确处理数据中的 AM/PM,因为在D类别表或任何其他软件中不会知道 1:00 实际上是1 PM ,而在其他一些行中,您正在以 24 小时格式编写它。
  • 通过以下计算创建一个新的 CF
INT((LOOKUP(Min([Availablility Count]), -1) <> 0) AND 
(LOOKUP(min([Availablility Count]), 1) <> 0) and
(LOOKUP(min([Availablility Count]), 0) = 0))
  • 在表格计算中进行以下设置

在此处输入图像描述

  • 生成这样的视图

在此处输入图像描述

视图中显示的1是您想要的 output 行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM