在 hive 中返回上周数据

Posted

技术标签:

【中文标题】在 hive 中返回上周数据【英文标题】:Return last week data in hive 【发布时间】:2015-09-10 14:03:06 【问题描述】:

我是 hive 和 sql 的新手。

如果我们今天运行带有计数字段的查询,那么它应该获取最近 7 天的数据(例如 - 如果我在星期一运行带有计数字段的查询,那么我应该得到从上周星期一到星期日的总计数) 我表中的日期格式为20150910。 (yyyyMMdd)。

请帮我解决这个问题。

【问题讨论】:

Subtract 7 days from today的可能重复 使用 trunc 和 weekofyear 函数 感谢您的快速转身......您能否提供完整的查询功能,因为我是一个安静的新 tohive 和 sql 【参考方案1】:

在这种情况下,您可以使用 date_sub()。像这样的东西应该可以工作......

select * from table
where date_field >= date_sub(current_date, 7)

假设当前日期的数据尚未加载。如果您也想排除当天的数据,则必须将其也包含在过滤条件中

 and date_field <= date_sub(current_date, 1)

current_date 可以工作如果你的 hive 版本 > 0.12 否则,您可以使用 to_date(from_unixtime(unix_timestamp())) 从 unix 显式提取日期

【讨论】:

嗨 Anil- 我试过: select * from table1 where cpd_dt >= date_sub(to_date(from_unixtime(unix_timestamp())), 7) and cpd_dt 我认为问题是因为类型不匹配。尝试将从 to_date 获得的日期转换为日期数据类型你有今天的数据吗?如果是,您是否尝试检查 select * from table1 where cpd_dt = cast(to_date(from_unixtime(unix_timestamp())) as date) 如果可行,您应该能够相应地使用查询 Anil 我对上面的铸造日期查询进行了运行。它说没有操作结果。我在 09/09 之前加载了数据。意味着我没有加载今天和昨天的数据。我的要求是,如果我在星期三使用计数字段运行查询,它应该获取从上周星期一到本周星期一的 1 周数据。 @Ramya 有趣的是,随着时间的推移,您的需求会发生新变化;) 有几种方法可以完成这项工作。其中之一是在 conf 中定义 week_start_date 和 week_end_date 然后获取数据。另一种方法是使用 shell 命令生成日期。两者都是可行的。但让我知道您是否能够使用该命令获取任何日期的数据。如果是,您使用的是什么命令? @Anil..感谢您抽出宝贵时间回应我的要求。实际上我正在构建一个包含来自 7 个表的 27 列的数据集。大多数列都是计数的并带有过滤条件。我不知道如何用许多表达方式完成这项任务并加入他们。如果你能帮助我,请告诉我,以及如何分享我迄今为止工作的蜂巢查询。是否接受电子邮件中的分享在这里。

以上是关于在 hive 中返回上周数据的主要内容,如果未能解决你的问题,请参考以下文章

上周总结

hive中用not in查询正确数据,返回值为空

Autodesk Forge 数据管理 API 获取***文件夹请求现在返回 404 Not Found 今天始终如一,但上周工作

Beeline-Hive 在数据顶部返回带有空白行的 CSV

hive执行select count(*) 返回0,但是select * 有数据

如果与函数一起使用,Hive 不返回任何值