一、需求描述

  1. 今日下午在对hive库表进行数值统计,发生一件很有意思的一件事,统计求和的结果出现科学技术法。

  2. 出现的原因是因为hive sum函数的返回值为double,累加的结果超过了double的范围。
    ·语法: sum(col), sum(DISTINCT col)
    ·返回值: double
    二、解决方案

  3. 我这边主要利用的是Hive函数中regexp_extract、regexp_replace以及rpad三个组合完成本次的科学技术法转换操作。

  4. 函数语法介绍
    ·函数名称:正则表达式解析函数
    ·语法1:regexp_extract(string subject, string pattern, int index)
    ·返回值:string
    ·函数名称:正则表达式替换函数
    ·语法2:regexp_replace(string A, string B, string C)
    ·返回值:string
    ·函数名称:右补足函数
    ·语法3:rpad(string str, int len, string pad)
    ·返回值:string
    具体Hive SQL片段如下:

rpad(regexp_replace(regexp_extract(sum(in_hive_num), '([^E]+)', 1), '\\.', ''),
cast(regexp_extract(sum(in_hive_num), '(E)([0-9]+)', 2) as int) + 1, '0') as num

完整Hive SQL查询语句如下:

select day_id,province_code,rpad(regexp_replace(regexp_extract(sum(num), '([^E]+)', 1), '\\.', ''),cast(regexp_extract(sum(num), '(E)([0-9]+)', 2) as int) + 1, '0')
from (select day_id,hour_id,province_code,rpad(regexp_replace(regexp_extract(sum(in_hive_num), '([^E]+)', 1), '\\.', ''),cast(regexp_extract(sum(in_hive_num), '(E)([0-9]+)', 2) as int) + 1, '0') as numfrom default.dwm_lbs_fusion_hour_day_numwhere day_id = 20211125group by day_id, hour_id, province_code) a
group by day_id, province_code;

替换前,测试案例运行结果如截图所示:

替换后,测试案例运行结果如截图所示:

Hive科学技术法转换相关推荐

  1. java采用匈牙利命名法_【Java】工具类,如何将匈牙利命名法转换成驼峰命名法-Go语言中文社区...

    一.概念介绍 1.1.匈牙利命名法:user_id,字母均小写,不同单词间用下划线分割: 1.2.驼峰命名法:userId,除了第一个单词的首字母小写,其余单词的首字母均大写,单词之间没有符号,仅仅通 ...

  2. 科学计算机自动显示小数,卡西欧计算器FX-82MS怎么能让计算器永久显示小数计数而不是科学技术法啊?好烦啊,每次都是显示科学技术法,我试过SHI...

    题目: 卡西欧计算器FX-82MS怎么能让计算器永久显示小数计数而不是科学技术法啊?好烦啊,每次都是显示科学技术法,我试过SHIFT+MODE+2了啊,屏幕显示MODE CLEAR 0然后要我输入东西 ...

  3. HIVE 的时间转换函数

    HIVE 的时间转换函数. 1,select unix_timestamp() 可以得到当前时间的时间戳. select unix_timestamp(时间格式) 可以得到当前时间的时间戳.两个时间戳 ...

  4. PHP科学计数法转换成数字

    /** * 科学计数法转换成数字 * @param $num * @param int $double * @return int */ function sctonum($num, $double ...

  5. [js] 写一个方法把科学计数法转换成数字或者字符串

    [js] 写一个方法把科学计数法转换成数字或者字符串 function c(a) { return a.replace(/^(\d+)(?:.(\d+))*eE(\d+)/,(_,a,a1,p,n)= ...

  6. 【IPv4】十进制点分表示法转换

    IPv4 十进制点分表示法转换 文章目录 IPv4 十进制点分表示法转换 一. IPv4 地址表示 二. 二进制表示法转换为十进制点法 其他相关文章 一. IPv4 地址表示 IPv4 地址是由 32 ...

  7. python科学计数法转换_对比Python学习Go 基本数据结构

    公众号文章不方便更新,可关注底部「阅读原文」博客,文章随时更新. 本篇是「对比 Python 学习 Go」[1] 系列的第三篇,本篇文章我们来看下 Go 的基本数据结构.Go 的环境搭建,可参考之前的 ...

  8. python科学计数法转换_柳小白Python学习笔记35 Excel之科学计数法类型转换及数据选取1...

    昨天学习了使用pandas模块如何查看Excel工作表"wz"的基本信息.今天学习,转换数字科学计数法格式及提取需要处理的数据,接下来就进入今天的学习吧. 一.转换科学计数法格式 ...

  9. excel 科学计数法转换成文本完整显示_避免万次暴击,巧办法解决数字和文本之间的快速转化...

    很多朋友在在数据整理的过程中都遇到过下图这种情况,大量数字内容,因为数字内容较长,excel以科学计数法进行了显示,多数时候我们会选中列设置单元格格式为文本,但单元格内容并不会转化为文本,需要对每个单 ...

最新文章

  1. BIOS英文报错详解;你虽会做系统,但你会看BIOS英文报错吗,仅供大家参考学习。...
  2. C++实现大数的加法
  3. Activiti最全入门教程
  4. RabbitMQ管理(5)——集群管理
  5. HTTP over QUIC重命名为“HTTP / 3”协议
  6. 解决使用adprep升级windows2003/win2008/win2012域时遇到的问题
  7. 数据结构与算法笔记(四) 循环链表和双向链表
  8. matlab2c使用c++实现matlab函数系列教程-logspace函数
  9. python for 加速_适合练习的10个Python项目,每个项目都不到500行代码
  10. hypermesh中怎么设置支反力(反作用力)
  11. mysql如何防止sql注入
  12. 日语简历在线做成下载的网站(收藏)不同职业日语简历模板下载免费
  13. Discuz模版制作流程
  14. Redis:配置文件
  15. html表格列表模板,前端基础 - HTML(二) 表格、表单、列表
  16. 一款易用的视频云是如何迅速积累客户的?
  17. python识别图片文字、并返回文字坐标_PyAutoGui 图片识别+定位+截图函数文档
  18. ArcGIS快速分别导出大量范围线的坐标到报盘Excel格式
  19. JavaWeb-smbms项目
  20. 【成电860考研】《软件工程》-anki卡片知识合集-504张卡片-28000字-上岸资料整理

热门文章

  1. 10款经典的web前端特效的预览、源码及效果图
  2. matlab膨胀检测,matlab腐蚀膨胀算法
  3. [案例]华为数据中心专业服务助力襄阳“云谷”战略
  4. 安装使用日语分词工具-----kuromoji
  5. [html] 点击html界面button,实现http请求发送,原界面不做跳转
  6. python实现图片拼接长图_Python 拼接多张尺寸大小不一样的图片制作长图
  7. WordXML格式初步分析
  8. 思维导图:精益数据分析
  9. #3使用html+css+js制作网页 制作登录网页
  10. i18n实现SpringBoot后端多语言化(前后端分离)