[英]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 之类的编程语言,那将是一件很容易的事。
请在画面中进行如下-
D
类别表或任何其他软件中不会知道 1:00 实际上是1 PM
,而在其他一些行中,您正在以 24 小时格式编写它。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.