performance - Hive - 在 where 子句中使用 date_add
问题描述
我有一个按日期分区的表。要查询最近 10 天的数据,我通常会编写如下内容:
SELECT * FROM table WHERE date = date_add(current_date, -10);
一位同事说,与使用简单的日期字符串相比,这会降低查询的效率。是这样吗?有人可以向我解释一下吗?有没有办法将动态日期写入高效的 where 子句?
解决方案
这里唯一的问题可能是分区修剪。在某些 Hive 版本中,分区修剪可能不适用于功能。您可以通过执行EXPLAIN EXTENDED <your select query>
命令轻松地自行检查。它将打印所有要查询的分区路径。
在这种情况下,使用预先计算的外壳值并将其作为参数传递:
date_var=$(date +'%Y_%m_%d' --date "-10 day")
#call your script
hive -hivevar date_var="$date_var" -f your_script.hql
并在脚本中使用变量:
SELECT * FROM table WHERE date = '${hivevar:date_var}';
如果分区修剪效果很好,你根本不需要费心。
推荐阅读
- python - 奇怪的窗户。苹果系统。蟒蛇,pygame
- javascript - React Native Android 文件不存在
- android - Android Spinner setOnItemSelectedListener 不会触发,但它显示来自 API 的正确值
- python - 如何将 Anaconda 管理员(提升)命令控制台启动到 Windows 10 UserProfile 目录,而不是“c:\Windows\System32”
- node.js - 节点js猫鼬找到一个字段增量
- python - Python Telegram API 在尝试编辑消息媒体时引发无用的错误
- list - SwiftUI - 使列表分隔线扩展到触摸屏边缘
- spring-boot - mvn clean install Ubuntu 终端
- python - 将 Pandas df 混合数据列解析为日期时间
- html - 根据另一个div中的类将类添加到div