【学习笔记】Hive

Hive 作为数仓应用工具,对比 RDBMS(关系型数据库) 有3个“不能”:

  • 不能像 RDBMS 一般实时响应,Hive 查询延时大;

  • 不能像 RDBMS 做事务型查询,Hive 没有事务机制;

  • 不能像 RDBMS 做行级别的变更操作(包括插入、更新、删除)。

另外,Hive 相比 RDBMS 是一个更“宽松”的世界,比如:

  • Hive 没有定长的 varchar 这种类型,字符串都是 string;

  • Hive 是读时模式,它在保存表数据时不会对数据进行校验,而是在读数据时校验不符合格式的数据设置为NULL。

查看数据库基本信息 hive (myhive)>desc database myhive2;
查看数据库更多详细信息 hive (myhive)>desc database extended myhive2;

查询表结构  desc score5;

CURRENT_DATE 当前日期

语法: to_date(string timestamp) 返回值: string 说明: 返回日期时间字段中的日期部分。 hive> select to_date('2021-03-28 14:03:01') from tableName; 2021-03-28

语法: date_add(string startdate, int days) 返回值: string 说明: 返回开始日期startdate增加days天后的日期。 hive> select date_add('2020-12-08',10) from tableName; 2020-12-18

语法: date_sub (string startdate, int days) 返回值: string 说明: 返回开始日期startdate减少days天后的日期。 hive> select date_sub('2020-12-08',10) from tableName; 2020-11-28

  • 子查询需要加上别名 否则报错cannot recognize input near 'xx' 'xx' 'xx'

select * from (select * from table) ;

  • 解析json格式

Hive   get_json_object(column_name,'$.first_level_key_name.second_level_key_name')

Presto   json_extract_scalar(json,'$.book')

  • 字符串操作

字符串拼接:CONCAT(string A, string B…)

指定分割字符的拼接:CONCAT_WS(separator, str1, str2,...)

判断子串在字符串中第一次出现的位置:instr(str,substr) 从1开始计数,如果substr在str中不存在则返回0

字符串截取:

substr(string A, int start) substring(string A, int start) 返回字符串A从start位置(从1计数)到结尾的字符串

substr(string A, int start, int len),substring(string A, intstart, int len) 返回字符串A从start位置开始,长度为len的字符串

拼接一列中的字符串:concat_ws('_',collect_set(col1)) presto代替方法:array_join(array_distinct(array_agg(order_id)), ',')

  • 正则替换   regexp_replace(get_json_object(param_json, '$.par'), '\n', '') AS query

  • 正则匹配   regexp_extract_all(data, '-?\d+(.\d+)(eE?\d+)?')

  • sql查询含有换行符‘\n’的字符串导出的结果会有问题,字段实际上并不是空

原因:hive将'\n'换行符识别成结束符,导致一条数据分成多行

解决方法:替换掉'\n'换行符

img

img

  • 批量插入数据

insertoverwritetableapp.jr_search_app_fund_zfb_tag_f_d PARTITION(dt ='{zfb_dt_str}')
select'004685','金元顺安元启','季季新高,持有体验极佳'UNIONALL
select'002910','易方达供给改革','业绩常红,3年2倍'
  • 类型转换cast

  • cast(字段名 as 转换的类型 ),其中类型可以为:CHAR[(N)] 字符型、DATE 日期型、DATETIME 日期和时间型、DECIMAL float型、TIME 时间型

  • case-when用法

(CASE source_idWHEN'1'THEN'理财'WHEN'7'THEN'权益'ELSE'其他'END) AS source_name
  • lateral view与explode:列转行

SELECTfund_code,num_label
FROMdmc_fund_rank_info_i_det_dLATERAL VIEW explode(split(perfo_filt_cond,",")) tmp AS num_label
  • presto列转行

SELECTuuid,user_pin,data,prob
FROMdmc_model_score_multiply_ltv_smooth_i_det_dCROSS JOIN UNNEST(regexp_extract_all(data, '-?\d+(\.\d+)([eE][+-]?\d+)?')) AS t(prob)
WHEREdt = '2024-01-08'AND user_pin = 'xxx'
 
  • with as用法:代替嵌套的子查询

with a as (select * from test)

select * from a;

  • if用法

IFNULL:判断第一个表达式是否为NULL,如果为NULL则返回第二个参数的值,如果不为NULL则返回第一个参数的值。

IF(expr1 , expr2 , expr3):expr1的值为TRUE,则返回值为expr2;expr1的值为FALSE,则返回值为expr3

  • ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN)函数:row_number()从1开始,为每一条分组记录返回一个数字

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/861011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

76. 最小覆盖子串(困难)

76. 最小覆盖子串 1. 题目描述2.详细题解3.代码实现3.1 Python3.2 Java 1. 题目描述 题目中转:76. 最小覆盖子串 2.详细题解 在s中寻找一个最短的子串,使之包含t中的所有字符,t中可能存在多个相同字符,寻找的子串也应至少含有…

格式化输出软件

一个给图片修改名字的小软件 功能: 输入文件名字,生成一个”当前时间文件名“的格式化内容到剪贴板方便改名 主界面有个复选框,勾选后会生成”文件名当前时间“的内容 演示: 输入无效字符时 代码: import sys from…

ctr/cvr预估之DeepFM模型

ctr/cvr预估之DeepFM模型 在数字营销的浪潮中,点击率(CTR)和转化率(CVR)预估已成为精准广告投放和个性化推荐系统的核心。随着深度学习技术的蓬勃发展,传统的机器学习方法,如逻辑回归和因子分解…

【Python】Python异常处理及常见错误详解

Python是一种动态类型的高级编程语言,其简单易懂的语法和强大的功能使其成为当今最流行的编程语言之一。然而,在编写Python代码时,我们难免会遇到各种错误。理解和处理这些错误是每个Python开发者必备的技能。本文将深入探讨Python中的异常处…

会声会影2024破解版本激活码注册机免费安装包下载

今天我要来和大家安利一款让我彻底改变对视频创作认知的神器 —— 会声会影2024!✨🎉 会声会影全版本绿色安装包获取链接:(抓紧保存以防失效) https://pan.quark.cn/s/06e2f90a8526 会声会影最新一键安装包下载如下…

数据分析必备:12个“地表超强”数据可视化工具推荐!

数据可视化之所以流行,不仅是因为它简化了我们查看复杂数据的方式,更是因为数据可视化可以加快我们获取数据信息的速度。但对于初学者来说,使用数据可视化工具并不能快速启动。因此,本文专门为您列出了12个免费的数据可视化工具&a…

期货交易什么是锁仓,锁仓有什么利弊

锁仓是期货交易中的一种操作,指的是投资者在持有合约头寸的同时,通过建立相反的合约头寸来对冲风险,以保护自己的投资。锁仓可以通过买入或卖出相同数量的相同合约来实现,使投资者的净头寸为零。 此时无论行情上涨或者下跌&#…

互联网医院系统开发中的移动端应用设计

在现代医疗服务中,互联网医院系统逐渐成为提升患者体验和优化医疗资源的重要手段。而移动端应用作为互联网医院系统的关键组成部分,其设计和开发尤为重要。本文将从设计原则、技术架构和具体实现等方面探讨互联网医院系统中的移动端应用设计,…

Apple - View Programming Guide

本文翻译整理自:View Programming Guide(更新:2013-08-08 https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CocoaViewsGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40002978-CH1-SW1 文章目录…

threejs tween补间动画(七)

1.引入依赖 import * as THREE from three import { OrbitControls } from three/examples/jsm/controls/OrbitControls.js//引入相机轨道控制器 import { GLTFLoader } from three/examples/jsm/loaders/GLTFLoader.js//引入GLTF模型加载器 import { DRACOLoader } from thre…

汽车零部件制造企业如何选择合适的ESOP电子作业指导书系统

随着汽车产业的不断发展,汽车零部件制造企业在提高生产效率和产品质量方面面临着越来越大的挑战。为了解决这些问题,越来越多的汽车零部件制造企业开始采用ESOP电子作业指导书系统,以帮助他们管理和优化生产流程。但是,在选择合适…

【ppt技巧】有哪些方法可以实现?PPT转换为图片!

将ppt文件转换为图片都有哪些方法可以实现?其实很简单,一起来看一下如何操作吧! 方法一: 使用格式转换器,有些文件格式转换器,支持ppt转换为图片。 方法二: 不需要转换器,直接在…

Pixel手机中文网-全球最大的华人Pixel手机论坛

Pixel手机中文网,使用Pixel手机华人的聚集地,快来加入这个大家庭分享和创作吧 😃 googlepixel.cn

STM32之三:中断外部中断

目录 1. 什么是中断 1.1 中断概念 1.2 中断优先级 1.3 中断嵌套 2.STM32中断 2.1 NVIC中断优先级 3 外部中断 3.1 EXTI简介 3.2 EXTI中断/事件线 3.3 EXTI功能框图 3.4 中断和事件的区别? 3.5 什么时候用外部中断? 3.怎么使用STM32中断 3.…

stm32F4库函数c++和C混合编程笔记20240626

1、有时候需要用到c的一些特性,封装,类等等。 2、研究一下如何更改之前c工程的内容,实现混合编程。 操作 1、keil设置 2、要重新建立一个main文件,后缀名是cpp,cpp才能调用cpp. 后面如果要用到c特性的,需要…

msvcr100.dll丢失的解决方法,学会这几种方法都能快速解决dll丢失

一、 msvcr100.dll丢失原因分析 系统文件损坏 系统文件损坏是导致msvcr100.dll丢失的常见原因之一。这种情况可能由多种因素引起,包括但不限于: 磁盘错误:磁盘的物理损坏或逻辑错误可能导致系统文件损坏。 病毒或恶意软件攻击&#xff1a…

【探索Linux】P.35(传输层 —— UDP协议)

阅读导航 引言一、UDP协议端格式二、UDP的特点三、UDP的缓冲区四、基于UDP的应用层协议温馨提示 引言 在上一篇文章中,我们深入探讨了网络协议的应用层,揭示了各种协议如何协同工作以确保信息在网络中正确、高效地传递。从HTTP到FTP,每一层协…

6.二叉树.题目2

6.二叉树.题目2 题目9.找树左下角的值10.路径总和11.从中序与后序遍历序列构造二叉树12.最大二叉树13.合并二叉树14.二叉搜索树中的搜索15.验证二叉搜索树16.二叉搜索树的最小绝对差 总结 题目 9.找树左下角的值 题目链接 给定一个二叉树,在树的最后一行找到最左边…

【LeetCode】二、链表相关:移除与反转链表

文章目录 1、链表结构2、leetcode203:移除链表元素3、leetcode206:反转链表 1、链表结构 和数组不同,此时不需要连续的内存空间,如下为单端链表,无pre指针 时间复杂度: 和数组相反,访问元素时…