首页 > 解决方案 > 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 子句传递正确的值。任何想法??有时它给了我正确的结果,但有时却不是。

标签: hive

解决方案


您无需使用Having clause限制记录。记住MAX is aggregate functionMAX() OVER () is analytical function。等效于QUALIFYROW_NUMBER()和限制记录的ROW_NUMBER()使用Sub Query.


推荐阅读