gpt4 book ai didi

hadoop - 如何检查配置单元中的第一个非空值

转载 作者:可可西里 更新时间:2023-11-01 15:21:01 26 4
gpt4 key购买 nike

如何检查hive中的第一个非空值

例如。

选择 ('',5) 应该得到 5

选择 (5,'') 应该得到 5

Select ( '',NULL) 应该返回 NULL

选择 ('','') 应该得到 ''

请帮忙,我知道合并将适用于查找第一个非空值。

最佳答案

NULL转换为字符串'NULL',空为NULL并使用合并,然后转换回来.像这样:

create temporary macro empty2null(s string)
case when s='' then null
when s is null then 'NULL'
else s
end;

create temporary macro NULL2empty (s string)
case when s='NULL' then null
when s is null then ''
else s
end;

select NULL2empty(coalesce(empty2null(''),empty2null(5)));

唯一不便的是,你必须将每一列都包装到empty2null()中,除了像5这样的常量,它只是为了检查

测试:

hive> create temporary macro empty2null(s string)
> case when s='' then null
> when s is null then 'NULL'
> else s
> end;
OK
Time taken: 0.97 seconds
hive>
> create temporary macro NULL2empty (s string)
> case when s='NULL' then null
> when s is null then ''
> else s
> end;
OK
Time taken: 0.02 seconds
hive>
> select NULL2empty(coalesce(empty2null(''),empty2null(5)));
OK
5
Time taken: 7.08 seconds, Fetched: 1 row(s)
hive> select NULL2empty(coalesce(empty2null(''),empty2null('')));
OK

Time taken: 3.96 seconds, Fetched: 1 row(s)
hive> select NULL2empty(coalesce(empty2null(''),empty2null(null)));
OK
NULL
Time taken: 0.952 seconds, Fetched: 1 row(s)
hive> select NULL2empty(coalesce(empty2null(5),empty2null('')));
OK
5
Time taken: 0.067 seconds, Fetched: 1 row(s)

关于hadoop - 如何检查配置单元中的第一个非空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53179374/

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