`

hive转换科学计数法

阅读更多
    hive中的科学计数法如何转换回数字,搜了半天终于找到了一篇好文章,这里记录转换代码为自己日后参考。(转自:https://blog.csdn.net/zreodown/article/details/15506637)



case
  --处理非科学计数法表示的字符串
  when length(regexp_extract('字符串','([0-9]+\\.)([0-9]+)(E-*[0-9]+)',2))=0
then '字符串'
  --处理整数
  when length(regexp_extract('字符串','([0-9]+\\.)([0-9]+)(E[0-9]+)',2))<=cast(regexp_extract('字符串','(E)([0-9]+)',2) as int)
    then rpad(regexp_replace(regexp_extract('字符串','([^E]+)',1),'\\.',''),cast(regexp_extract('字符串','(E)([0-9]+)',2) as int)+1,'0')
  --处理小数
  when length(regexp_extract('字符串','([0-9]+\\.)([0-9]+)(E[0-9]+)',2))>cast(regexp_extract('字符串','(E)([0-9]+)',2) as int)
    then concat(substr(regexp_replace(regexp_extract('字符串','([^E]+)',1),'\\.',''),1,cast(regexp_extract('字符串','(E)([0-9]+)',2) as int)+1),'\.',
    substr(regexp_replace(regexp_extract('字符串','([^E]+)',1),'\\.',''),cast(regexp_extract('字符串','(E)([0-9]+)',2) as int)+2))
  --处理类似“3.4E-6”这种字符串
  when '字符串' regexp 'E-'
    then concat('0.',repeat('0',cast(regexp_extract('字符串','(E)(-)([0-9]+)',3) as int)-1),regexp_replace(regexp_extract('字符串','(.+)(E)',1),'\\.',''))
  else '字符串'
end




例如要处理“1.5602200465E8”这样一个字符串:

select
case
  when length(regexp_extract('1.5602200465E8','([0-9]+\\.)([0-9]+)(E-*[0-9]+)',2))=0 then '1.5602200465E8'
   when length(regexp_extract('1.5602200465E8','([0-9]+\\.)([0-9]+)(E[0-9]+)',2))<=cast(regexp_extract('1.5602200465E8','(E)([0-9]+)',2) as int)
     then rpad(regexp_replace(regexp_extract('1.5602200465E8','([^E]+)',1),'\\.',''),cast(regexp_extract('1.5602200465E8','(E)([0-9]+)',2) as int)+1,'0')
   when length(regexp_extract('1.5602200465E8','([0-9]+\\.)([0-9]+)(E[0-9]+)',2))>cast(regexp_extract('1.5602200465E8','(E)([0-9]+)',2) as int)
    then concat(substr(regexp_replace(regexp_extract('1.5602200465E8','([^E]+)',1),'\\.',''),1,cast(regexp_extract('1.5602200465E8','(E)([0-9]+)',2) as int)+1),'\.',
    substr(regexp_replace(regexp_extract('1.5602200465E8','([^E]+)',1),'\\.',''),cast(regexp_extract('1.5602200465E8','(E)([0-9]+)',2) as int)+2))
   when '1.5602200465E8' regexp 'E-'
     then concat('0.',repeat('0',cast(regexp_extract('1.5602200465E8','(E)(-)([0-9]+)',3) as int)-1),regexp_replace(regexp_extract('1.5602200465E8','(.+)(E)',1),'\\.',''))
   else '1.5602200465E8'
end
from dual;

结果:156022004.65
分享到:
评论

相关推荐

    HIVE安装及详解

    * Hive Query Compiler:将SQL查询转换为MapReduce任务 * Hive Execution Engine:执行MapReduce任务 * Hive Storage Handler:用于存储数据 各组件的基本功能: * Hive Metastore:存储HIVE的元数据 * Hive Query...

    hive客户端安装_hive客户端安装_hive_

    在大数据处理领域,Hive是一个非常重要的工具,它提供了一个基于Hadoop的数据仓库基础设施,用于数据查询、分析和管理大规模数据集。本教程将详细讲解如何在Linux环境下安装Hive客户端,以便进行数据操作和分析。 ...

    hive

    6. **优化器**:Hive 内置的查询优化器可以自动转换 SQL 查询为高效的 MapReduce 任务。它考虑了各种因素,如表大小、数据分布、JOIN 操作等,以生成最优的执行计划。 7. **数据生命周期管理**:Hive 提供了数据...

    db2转换hive的函数列表

    DB2和HIVE的函数相互转换,大部分函数都实现了的。

    hive相关jar包

    3. **Hive SerDes(Serialization/Deserialization)**:SerDes负责将数据在Hive的表结构和Hadoop的HDFS文件格式之间进行转换。不同类型的文件格式(如TextFile、Parquet、ORC等)需要对应的SerDes。 4. **Hive ...

    kettle8.1Hive连接包

    总的来说,Kettle8.1 Hive 连接包是数据工程师、分析师和数据科学家的强大工具,它简化了与 Hive 的集成,使用户能够在 Pentaho Kettle 平台上执行复杂的数据整合任务。通过使用这个连接包,企业可以充分利用 Hive ...

    Hive3.1.2编译源码

    使用hive3.1.2和spark3.0.0配置hive on spark的时候,发现官方下载的hive3.1.2和spark3.0.0不兼容,hive3.1.2对应的版本是spark2.3.0,而spark3.0.0对应的hadoop版本是hadoop2.6或hadoop2.7。 所以,如果想要使用高...

    hive-jdbc hive jdbc驱动

    hive-jdbc

    Hive驱动1.1.0.zip

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询和管理存储在Hadoop分布式文件系统(HDFS)中的大量结构化数据。Hive 1.1.0是Hive的一个版本,提供了...

    Hive_JDBC.zip_hive java_hive jdbc_hive jdbc pom_java hive_maven连

    在大数据处理领域,Apache Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL(HQL,Hive Query Language)查询存储在Hadoop集群中的大型数据集。Hive JDBC(Java Database Connectivity)是Hive提供的一种...

    Hive总结.docx

    Hive是基于Hadoop平台的数据仓库解决方案,它主要解决了在大数据场景下,业务人员和数据科学家能够通过熟悉的SQL语言进行数据分析的问题。Hive并不存储数据,而是依赖于HDFS进行数据存储,并利用MapReduce、Tez或...

    hive-site.xml

    hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+hadoop配置文件hive+...

    apache-hive-2.3.9-bin.tar大数据HIVE.zip

    4. **编译与执行计划**:Hive将HQL语句转换为MapReduce任务,或者在更现代的Hadoop版本中,转换为Tez或Spark任务。这使得Hive能充分利用Hadoop集群的并行计算能力。 5. **优化器**:Hive的优化器(如CBO,Cost-...

    Hive优化方法整理

    2. 解决方法:把数字类型转换成字符串类型,使用 cast 函数进行类型转换。 Hive 参数调优 1. 调整 Hive 的 reducer 个数,设置 set hive.exec.reducers.max=200; 2. 调整 Hive 的 map 任务个数,设置 set mapred....

    Ambari下Hive3.0升级到Hive4.0

    在大数据领域,Apache Ambari 是一个用于 Hadoop 集群管理和监控的开源工具,而 Hive 是一个基于 Hadoop 的数据仓库系统,用于处理和分析大规模数据集。本话题聚焦于如何在 Ambari 环境下将 Hive 3.0 升级到 Hive ...

    Hive表生成工具,Hive表生成工具Hive表生成工具

    Hive表生成工具,Hive表生成工具Hive表生成工具

    hive数仓、hive SQL 、 hive自定义函数 、hive参数深入浅出

    - 其他参数:如hive.exec.compress.output控制是否压缩输出,hive.auto.convert.join决定自动转换内连接的条件。 通过以上内容的学习,你将能熟练掌握Hive在大数据处理中的运用,理解其数仓设计原则,编写高效的...

    连接hive依赖的jar包_hive连接方式

    在大数据处理领域,Hive是一个基于Hadoop的数据仓库工具,它可以将结构化的数据文件映射为一张数据库表,并提供SQL查询功能,使得用户可以使用SQL语句来处理存储在Hadoop分布式文件系统(HDFS)上的大数据。...

    Hive教程.pdf

    - **HiveSQL转换为MapReduce过程**: - 解释器将HiveSQL转换为逻辑计划。 - 编译器将逻辑计划转换为物理计划。 - 优化器对物理计划进行优化。 - 执行器根据优化后的物理计划执行MapReduce作业。 - **Hive解释器**...

Global site tag (gtag.js) - Google Analytics