sql - hive 中的分组/窗口化

标签 sql hadoop hive hiveql pyspark-sql

在下图中,第一个是有问题的表(提供的脚本),第二个是预期的输出。
在C列中,我们有不同的项目,例如T1,T2,T3,这些记录将按组显示,T1记录然后是T2或T3。两者之间不应有任何间隙,T1将开始和结束,然后只有T2项可以出现。但是如果T1在其他项目之后重新出现,我想换个 Angular 考虑。在 hive / Spark 中获得结果的选项有哪些?

我尝试在一列中使用等级,然后在其他列中使用下一个值,并尝试进行一些比较,但这没有帮助。

任何指针,请

<code>enter image description here</code>

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')

最佳答案

这是一个空白问题。我将建议将相邻行的每个“岛”放入单独的行中。

一种方法(在这种情况下有效)是使用行号的不同之处:

select a, c, min(b), max(b)
from (select t.*,
             row_number() over (partition by a order by b) as seqnum,
             row_number() over (partition by a, c order by b) as seqnum_2
      from t
     ) t
group by a, c, (seqnum - seqnum_2);

如果需要,可以将其分为多个列。但是,我认为这只会使问题感到困惑,因为您可能不知道给定的a / c组合有多少个组。

关于sql - hive 中的分组/窗口化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59871799/

相关文章:

SQL 多个 SELECT 运行速度非常慢

python - SQLAlchemy 按引用关系的混合属性排序

sql - 仅选择组内连续 2 行的最小唯一值

php - MSSQL/dblib 的 PDO 日期时间格式

sql - Hive 中聚合 ID-属性-值记录

hadoop - 错误 org.apache.hadoop.hdfs.server.datanode.DataNode : RECEIVED SIGNAL 15: SIGTERM

hadoop - 我的hadoop群集,不同的主机使用不同的用户,如何配置从属服务器?

java - 如何重新排列wordcount hadoop输出结果并按值排序

apache-spark - apache spark 和 hadoop 之间的 Jar 冲突

hadoop - Hive无法检测到当前的名称节点