gpt4 book ai didi

hadoop - Hive 在多列上对 null 的奇怪处理?

转载 作者:可可西里 更新时间:2023-11-01 16:25:57 24 4
gpt4 key购买 nike

这个查询:

SELECT count(distinct
field1,
field2,
field3,
field4)
FROM SOME_TABLE

返回与此查询不同(更小)的计数:

SELECT count(distinct
coalesce(field1,"null"),
coalesce(field2,"null"),
coalesce(field3,"null"),
coalesce(field4,"null"))
FROM SOME_TABLE

我希望结果是相同的。对此有解释吗?

最佳答案

您看到不同结果的原因有两点:

  • COUNT(DISTINCT(...) 仅在所有指定字段均为非空时计算不同的值。
    • 这列在 the documentation 中, 但当有多个字段时,它的措辞有点含糊。
  • 当你合并你的 fieldn 值时,你是在说“当 fieldn 为空时,给我字符串“null”,否则给我 fieldn

我最近也试图验证我对此的假设,但找不到任何明确说明的地方。但是假设你有一个这样的表(下面的空值是空值,而不是字符串空值):

-----------------
|field1 |field2 |
-----------------
|foo |null |
|null |foo |
-----------------

然后:

  • count(field1) = 2
  • count(distinct field1) = 1
  • count(distinct coalesce(field1, 'bar')) = 2('foo' 和 'bar' 不同)
  • count(distinct field1, field2) = 0(没有非空的组合)

关于hadoop - Hive 在多列上对 null 的奇怪处理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29100717/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com