如果列为空,如何在配置单元中获得不同的行

fumotvh3  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(327)

我正在使用配置单元生成输出,并尝试在输出中获得不同的行。
我正在使用 select distinct c1,c2,c3,c4 from table .
我以下表中的行为例

C1       C2    C3    C4

Value1 value2      value4

Value1 value2      value4

这里,列c3是空白的,预期的输出只是其中的一列。但是,即使使用distinct关键字,我也无法获得一行作为输出。我在输出中看到了这两个记录。
请帮助我,如果有人曾经面对过这个问题,如果你有一个可能的解决办法。

yhuiod9q

yhuiod9q1#

是的,就是这样,很难调试。列c3可能包含既不是null也不是“”的值。你应该考虑 casting c3列。

select distinct col1,cast(col2 as string),col3 from test_nulls;
myzjeezk

myzjeezk2#

distinct的概念是:它指定从结果集中删除重复行。
假设您在多个列上使用distinct,它将考虑每个列的唯一值。
例子:

hive> SELECT col1, col2 FROM t1
    1 3
    1 3
    1 4
    2 5
hive> SELECT DISTINCT col1, col2 FROM t1
    1 3
    1 4
    2 5
hive> SELECT DISTINCT col1 FROM t1
    1
    2

在您的例子中,任何列都有可能有不同的值,这就是为什么您得到两行作为输出。
请参考Hive

相关问题