gpt4 book ai didi

hive - 如何在 Hive 中处理逗号分隔的十进制值?

转载 作者:行者123 更新时间:2023-12-03 21:29:07 32 4
gpt4 key购买 nike

我有一个 CSV 文件和元数据。此 CSV 中的列由管道分隔 |象征。样本数据如下:

name|address|age|salary|doj
xyz | abcdef|29 |567,34|12/02/2001

这里 salary列是十进制类型,但不使用 period .作为小数点分隔符, comma ,用来。

我创建了 Hive 外部表,如下所示,对于此数据,Hive 显示 NULLsalary柱子。
create external table employee as(
name string,
address string,
age int,
salary decimal(7,3),
doj string
) ROW FORMAT DELIMITED FIELDS TERMINATED BY '|'
LOCATION 's3://bucket/folder_having_many_csv_files/';

如果我更改 salary 的数据类型列到 String然后正如预期的那样,Hive 工作正常。

我想知道如何告诉 Hive 这个特定列的类型是 DECIMAL和小数点分隔符是 comma (,)而不是 period (.)象征。

最佳答案

您可以轻松地将薪水作为字符串构建表格,并在顶部的 View 中替换逗号。这可能是最容易做的事情,因为数据很大而且很可能是其他人拥有的。

create view table employee_decimal as
select name
, address
, age
, cast(regexp_replace(salary, ',', '.') as decimal(7,3)) as salary
, doj
from employee;

关于hive - 如何在 Hive 中处理逗号分隔的十进制值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246004/

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