【问题标题】:MAX() OVER () with order by 2 columns function producing inconsistent results HiveMAX() OVER () with order by 2 columns 函数产生不一致的结果 Hive
【发布时间】:2019-12-06 02:01:15
【问题描述】:

团队,

我在 hiveQL 代码中使用了 MAX() OVER () 和 order by 2 columns 函数,但它产生了不一致的结果。有没有想过为什么会这样?

这是我试图将 Teradata 代码转换为 Hive 代码的东西,在 Teradata 中,我们有 MAX() OVER () 以及按 2 列排序的函数,并且我们再次使用了下面部分中的“限定”列的函数条件为 IS NULL,我可以在 Hive 中重新创建函数,并使用Having 子句来满足需要,但我怀疑 MAX() OVER () with order by 2 columns 函数是罪魁祸首,它没有为 Have 子句传递正确的值.任何想法??有时它会给我正确的结果,但有时却不是。

【问题讨论】:

    标签: hive


    【解决方案1】:

    您无需使用Having clause 来限制记录。记住 MAX is aggregate functionMAX() OVER () is analytical functionQUALIFY 等价于 ROW_NUMBER() 并限制记录使用 ROW_NUMBER()Sub Query.

    【讨论】:

    • 感谢您回复我。您能否分享一些示例,下面是我目前编写的内容... select max(col1) over partition by (col2,col3) Order by(col1,col4) DESC ROWS 在前面的 1 和前面的 1 之间作为 col2 的 col5 组, col3 具有 col5 为空
    • 该示例的任何更新或任何人共享上述示例。谢谢
    猜你喜欢
    • 2021-03-22
    • 2019-03-21
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2011-03-07
    • 2020-08-06
    相关资源
    最近更新 更多