hive - MAX() OVER () with order by 2 columns 函数产生不一致的结果 Hive
问题描述
团队,
我在 hiveQL 代码中使用了 MAX() OVER () 和 order by 2 columns 函数,但它产生了不一致的结果。任何想法为什么它会这样?
这是我试图将 Teradata 代码转换为 Hive 代码的东西,在 Teradata 中,我们有 MAX() OVER () 以及按 2 列排序的函数,并且我们再次使用具有“限定”以下部分中的列的函数,条件为IS NULL,我可以在 Hive 中重新创建该函数,并使用 Have 子句来满足需要,但我怀疑 MAX() OVER () with order by 2 columns 函数是罪魁祸首,它没有为 Have 子句传递正确的值。任何想法??有时它给了我正确的结果,但有时却不是。
解决方案
您无需使用Having clause
限制记录。记住MAX is aggregate function
和MAX() OVER () is analytical function
。等效于QUALIFYROW_NUMBER()
和限制记录的ROW_NUMBER()
使用Sub Query.
推荐阅读
- excel - 根据多个条件计算excel中的唯一值
- gdb - 当前目录是否始终在 gdb 的搜索路径中
- amazon-web-services - 您可以从 AWS Batch 调用 Lambda 作业吗?
- node.js - 如何使用 discord.js 机器人 dm 用户
- kubernetes - 检索 kubernetes 部署 yaml
- woocommerce - woocommerce 在订单视图中添加自定义工具提示
- python - 开发一个 python/pyspark 程序来显示类似的单词
- php - 带有连接的 MySQL 查询在 Phpmyadmin 中有效,但在 php 中无效
- ipad - 锚链接不在 iPad 上滚动
- reactjs - 如何在 Reactjs 中更改单个按钮的文本