【问题标题】:Casting String->Fixed precision Decimal铸造字符串->固定精度十进制
【发布时间】:2018-01-19 10:40:45
【问题描述】:

我在 Hive 中遇到以下问题:我有一个存储为文本文件的表,其中所有字段都是 STRING 类型。我想将此表转换为 ORC 表,但必须将某些 STRING 字段转换为精度 = 3 的十进制。问题是初始字符串字段中没有逗号,所以我想看看是否有一种方法可以告诉 Hive 将此小数点放在字符串末尾前 3 位:-)。

所以我的 HiveSql 命令如下所示:

CREATE my_orc_table(entry1 STRING, entry2 DECIMAL(10,3)) STORED AS ORC;
INSERT INTO TABLE my_orc_table SELECT * FROM my_text_table;

所以问题是,如果我的 TextTable 的 entry2 中有 00050000,我想在我的 ORC 表中获得 50.0。目前我有 50000(我想 Hive 将逗号放在字符串的末尾,这很合乎逻辑,但不是我想要的)。

我尝试谷歌了一下,但我并没有真正找到解决方案。

谢谢你:-)!

【问题讨论】:

    标签: hive hiveql


    【解决方案1】:

    怎么样..

    select cast(entry2 AS DECIMAL)/1000.0
    

    【讨论】:

    • 谢谢你:-)。但是你把这个选择命令放在哪里呢?在 Hive 中更新表是不可能的,是吗?所以我应该改变我的 Insert Into 查询?
    • 好的,我想我可以这样做:INSERT INTO TABLE my_orc_table(entry 1, entry 2) SELECT entry1, entry2/1000 FROM my_text_table;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2015-06-14
    • 2014-05-05
    • 2021-12-11
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多