hive-sql语法
文章平均质量分 75
村口蹲点的阿三
抱狙蹲点
展开
-
实现开窗count distinct 历史累计截止日期去重统计
解决问题:hive中count(distinct ) over() 无法使用场景累计去除统计,实际经常使用到的场景比如会员每日历史累计消费,项目每日累计营收等。案例:数据准备:用户轨迹用户访问日志表 test_visit_tabcookieid(用户id) uvdate(访问时间) pagename(浏览页面) pv(访问次数)cookie1 2022-02-01 A_page 1cookie1 2022-02-01 B_page 2cookie1 2022-02-0..原创 2022-02-24 18:32:20 · 7584 阅读 · 0 评论 -
hive explain 执行计划详解看懂执行过程
HIVE简介讲explain之前,先了解大家常说的用hive查询取数和etl的过程,但是在讲hive查询取数过程,又得先了解大家又常说的hadoop集群到底是干什么的?一句话概括:Hadoop就是存储海量数据和分析海量数据的工具。Hadoop是由java语言编写的,在分布式服务器集群上存储海量数据并运行分布式分析应用的开源框架,其核心部件是HDFS与MapReduce。 HDFS是一个分布式文件系统:引入存放文件元数据信息的服务器Namenode和实际存放数据的服务器Datanode,对数据进原创 2021-10-01 12:01:53 · 3560 阅读 · 1 评论 -
HIVE HDFS对NULL值处理
hive 写入null后在hdfs 中显示\N 存储,如果直接读取hdfs则会直接读到\N数值如何解决这个问题,需要对表属性中的null值存储进行修改,具体的表serialization.null.format可以在desc formatted 查询具体表属性Storage Desc Params: serialization.format 1 serialization.null.format N 场景构建:临时表创建CREATE T原创 2021-10-01 10:23:20 · 1654 阅读 · 0 评论 -
hive 开窗函数OVER(PARTITION)详解(二)
窗口函数有哪些?窗口函数可以分为以下 3 类:聚合(Aggregate):AVG(),COUNT(),MIN(),MAX(),SUM()...sum(col) over() : 分组对col累计求和 count(col) over() : 分组对col累计计数 min(col) over() : 分组对col求最小 max(col) over() : 分组求col的最大值 avg(col) over() : 分组求col列的平均值取值(Value):FIRST_VALUE(),LAS...原创 2021-09-27 16:53:50 · 1499 阅读 · 0 评论 -
hive 开窗函数OVER(PARTITION)详解(一)
什么是窗口函数?窗口函数(Window Function)是 SQL2003 标准中定义的一项新特性,并在 SQL2011、SQL2016 中又加以完善,添加了若干处拓展。窗口函数不同于我们熟悉的普通函数和聚合函数,它为每行数据进行一次计算:输入多行(一个窗口)、返回一个值。在报表等分析型查询中,窗口函数能优雅地表达某些需求,发挥不可替代的作用。窗口函数出现在 SELECT 子句的表达式列表中,它最显著的特点就是OVER关键字。语法定义如下:window_function (expres...原创 2021-09-23 11:01:00 · 2475 阅读 · 0 评论 -
Hive lateral view 用法-行转列
Hive: lateral view 用法lateral view 的语法格式lateralView: LATERAL VIEW udtf(expression) tableAlias AS columnAlias (','columnAlias)* fromClause: FROM baseTable (lateralView)*用法描述lateral view 要与UDTF函数一起使用,比如 explode() 函数。这里的UDTF函数是指用户自定义的表生成函数(英文全称:use.原创 2021-09-22 19:29:37 · 646 阅读 · 0 评论 -
HIVE left semi join & inner join区别
left semi join 详解LEFT SEMI JOIN以一种高效的方式实现了不相关的IN/EXISTS子查询语义。 在Hive 0.13中,IN/NOT IN/EXISTS/NOT EXISTS操作符被支持使用子查询,所以大多数join操作不再需要手动执行。 使用LEFT SEMI JOIN的限制是,右边的表只能在连接条件(on子句)中引用,而不能在WHERE或select子句等中引用。示例SELECT a.key, a.valueFROM aWHERE a.key in (SELECT原创 2021-09-22 15:41:35 · 685 阅读 · 0 评论 -
hive 动态分区与混合分区写入
hive分区测试:hive分区建立,静态、动态、混合分区,在混合中静态分区要在动态分区之前。删除时间段分区在partition()里面逻辑符用逗号, 比如时间段分区-- 批量删除分区数据alter table tmp_test.tmptable drop partition(dt>='20191101',dt<='20191130')分区数据写入创建一个分区测试表use tmp_test;drop table if exists tmp_test.cs_原创 2021-09-22 10:09:38 · 811 阅读 · 0 评论 -
HIVE 转义字符与特殊字符处理
Hadoop和Hive都是用UTF-8编码的,hive用java写的,所以同Java一样都是'\'转义很多函数会用到转义字符,比如split、regexp_replace等但是有时候需要两个转义字符"\\",或者四个转义字符“\\\\”单转义符'\':常规的为'\'进行字符串的转义 双转移符'\\':正则表达式匹配或者split函数中包含转义符 四个转义符'\\\\':split函数中存在转义符'\'为分隔符 分号:';'无法识别和转义,需要使用ASCII码处理(只要使用到了函数就会报错)原创 2021-09-18 15:27:32 · 9379 阅读 · 0 评论 -
hive正则匹配:regexp_replace、regexp_extract、regexp
hive正则匹配:regexp_replace、regexp_extract、regexp一、regexp语法介绍regexp语法: A REGEXP B操作类型: strings描述: 功能与RLIKE相同regexp_extract语法: regexp_extract(string subject, string pattern, int index)返回值: string说明:将字符串subject按照pattern正则表达式的规则拆分,返回index指定的字符。原创 2021-09-16 03:03:16 · 27123 阅读 · 0 评论 -
hive 字符串提取&json格式解析
前言在数据存储时研发端经常为了方便很多字段为了冗余存储了文本格式:json或者固定分隔符,但是数仓和数据分析在处理的时候又要进行取出单独的某个字段,进行使用,本文会详解下平时在工作中遇到的问题与处理办法。字符串固定分隔符处理案例:字符串以:|*|分隔,k-v以:分隔,取出其中scene_ids字段值字符串:|*|cityId:201|*|qId:4890f057-8c8d-4fd6-8029-9ec8a374ab3b|*|st:poi|*|sId:62778388|*|scene_ids:6,0原创 2021-09-13 10:17:46 · 5973 阅读 · 0 评论