在 HIVE 中从给定的开始和结束日期创建一个序列数组

Posted

技术标签:

【中文标题】在 HIVE 中从给定的开始和结束日期创建一个序列数组【英文标题】:Create a sequence array from a given start and end date in HIVE 【发布时间】:2015-10-07 07:25:30 【问题描述】:

我有一个以 id、start 和 end 作为列的数据表,例如:

标识 |开始 |结束

1 | 2011-01-01 | 2011-01-03

2 | 2011-02-13 | 2011-02-14

我想在 HIVE 中做的是将整个天范围作为一个数组添加到一个单独的列中,所以我想获得:

标识 |开始 |结束 |范围

1 | 2011-01-01 | 2011-01-03 | ['2011-01-01','2011-01-02','2011-01-03']

2 | 2011-02-13 | 2011-02-14 | ['2011-02-13','2011-02-14']

我尝试使用 collect_set() 但无法正常工作。你有什么建议吗?谢谢!

【问题讨论】:

是您数据集中的天数范围还是您需要根据startend 生成它们? @GoBrewers14 我需要先根据开始和结束生成它们,然后将它们插入新列中。 【参考方案1】:

我怀疑您需要创建一个自定义 UDF 来执行此操作,如果您有一些基本的 Java 知识,这并不难。请参阅此答案https://***.com/a/21197354/88839,它演示了如何从 UDF 返回数组。我还没有测试过,但如果我以后有时间我可能会试一试。

这里还有一些关于在没有 Maven 的情况下创建 UDF 的说明,但使用 Maven 可能更容易 - http://appsintheopen.com/posts/29-creating-a-basic-hive-udf

【讨论】:

以上是关于在 HIVE 中从给定的开始和结束日期创建一个序列数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 SQL 中从生效日期创建时间序列

给定日期范围(开始日期和结束日期),我如何计算天数,不包括 .Net 中指定的星期几?

如何在MS ACCESS中从另一个查询中传递PARAMETERS到查询中(不用VBA)?

获取给定周年、给定月份和给定周的开始和结束日期

从表中的开始日期和结束日期在 Postgres 中生成系列

从给定的开始日期获取结束日期基数