在下图中,第一个是有问题的表(提供的脚本),第二个是预期的输出。在c列中,我们有不同的项目,如t1、t2、t3,记录将分组提供,t1记录,然后t2或t3。这些之间不应该有任何差距,t1将开始和结束,然后只有t2项目可以出现。但如果t1在其他项目之后再次出现,我想换个Angular 考虑。在hive/spark中实现结果的选项是什么?
我尝试在一列中使用rank,然后在其他列中使用next value,并尝试运行一些比较,但没有帮助。
有什么指示吗
CREATE TABLE TEST_A (A STRING, B STRING, C STRING);
INSERT INTO TEST_A (A, B, C) VALUES ('a','1-Jan','T1'), ('a','2-Jan','T1'),('a','3-Jan','T2'),('a','4-Jan','T3') ,('a','5-Jan','T1'),('a','6-Jan','T1')
1条答案
按热度按时间brqmpdu11#
这是一个缺口和岛屿问题。我将提议把相邻行的每个“岛”放在一个单独的行中。
一种方法——在本例中有效——是使用行号的差异:
如果你真的想的话,你可以把它分成多列。然而,我认为这只是混淆了问题,因为你可能不知道有多少组为一个给定的
a
/c
组合。