HiveSQL高级进阶技巧
目录
- 1.删除
- 2.更新:
- 3.行转列:
- 4.列转行:
- 5.分析函数:
- 6.多维分析
- 7.数据倾斜
- groupby:
- join:
掌握下面的技巧,你的SQL水平将有一个质的提升!
1.删除
正常hive删除操作基本都是覆盖原数据;
insert overwrite tmp
select * from tmp where id != '666';
2.更新:
更新也是覆盖操作;
insert overwrite tmp
select id,label,if(id = '1' and label = 'grade','25',value) as value
from tmp where id != '666';
3.行转列:
思路1:
先通过concat函数把多列数据拼接成一个长的字符串,分割符为逗号,再通过explode函数炸裂成多行,然后使用split函数根据分隔符进行切割;
-- Step03:最后将info的内容切分
select id,split(info,':')[0] as label,split(info,':')[1] as value
from
(
-- Step01:先将数据拼接成“heit:180,weit:60,age:26”select id,concat('heit',':',height,',','weit',':',weight,',','age',':',age) as value from tmp
) as tmp
-- Step02:然后在借用explode函数将数据膨胀至多行
lateral view explode(split(value,',')) mytable as info;
思路2:使用union all函数,多段union
select id,'heit' as label,height as value
union all
select id,'weit' as label,weight as value
union all
select id,'age' as label,age as value
4.列转行:
思路1:多表join,进行关联
select
tmp1.id as id,tmp1.value as height,tmp2.value as weight,tmp3.value as age
from
(select id,label,value from tmp2 where label = 'heit') as tmp1
join
on tmp1.id = tmp2.id
(select id,label,value from tmp2 where label = 'weit') as tmp2
join
on tmp1.id = tmp2.id
(select id,label,value from tmp2 where label = 'age') as tmp3
on tmp1.id = tmp3.id;
思路2:使用max(if) 或max(case when ),可以根据实际情况换成sum函数
select
id,
max(case when label = 'heit' then value end) as height,
max(case when label = 'weit' then value end) as weight,
max(case when label = 'age' then value end) as age
from tmp2
group by
id;
思路3:map的思想,先拼接成map的形式,再取下标
select
id,tmpmap['height'] as height,tmpmap['weight'] as weight,tmpmap['age'] as age
from
(select id,str_to_map(concat_ws(',',collect_set(concat(label,':',value))),',',':') as tmpmap from tmp2 group by id
) as tmp1;
5.分析函数:
select id,label,value,lead(value,1,0)over(partition by id order by label) as lead,lag(value,1,999)over(partition by id order by label) as lag,first_value(value)over(partition by id order by label) as first_value,last_value(value)over(partition by id order by label) as last_value
from tmp;
select id,label,value,row_number()over(partition by id order by value) as row_number,rank()over(partition by id order by value) as rank,dense_rank()over(partition by id order by value) as dense_rank
from tmp;
6.多维分析
select col1,col2,col3,count(1),Grouping__ID
from tmp
group by col1,col2,col3
grouping sets(col1,col2,col3,(col1,col2),(col1,col3),(col2,col3),())
select col1,col2,col3,count(1),Grouping__ID
from tmp
group by col1,col2,col3
with cube;
7.数据倾斜
groupby:
select label,sum(cnt) as all from
(select rd,label,sum(1) as cnt from (select id,label,round(rand(),2) as rd,value from tmp1) as tmpgroup by rd,label
) as tmp
group by label;
join:
select label,sum(value) as all from
(select rd,label,sum(value) as cnt from(select tmp1.rd as rd,tmp1.label as label,tmp1.value*tmp2.value as value from (select id,round(rand(),1) as rd,label,value from tmp1) as tmp1join(select id,rd,label,value from tmp2lateral view explode(split('0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9',',')) mytable as rd) as tmp2on tmp1.rd = tmp2.rd and tmp1.label = tmp2.label) as tmp1group by rd,label
) as tmp1
group by label;
相关文章:
HiveSQL高级进阶技巧
目录 1.删除2.更新:3.行转列:4.列转行:5.分析函数:6.多维分析7.数据倾斜groupby:join: 掌握下面的技巧,你的SQL水平将有一个质的提升! 1.删除 正常hive删除操作基本都是覆盖原数据&…...
【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用
【Flutter】Flutter 动画深入解析(1):掌握 AnimationController 的使用 文章目录 一、前言二、AnimationController 简介三、AnimationController 的主要功能四、Ticker 提供者五、AnimationController 的生命周期六、与 AnimationController 一起使用的 Future七、实际业务…...
安装富文本组件
安装vue-ueditor-wrap3.x: vue-ueditor-wrap3.x:一个“包装”了 UEditor 的 Vue 组件,支持通过 v-model 来绑定富文本编辑器的内容,让 UEditor 的使用简单到像 Input 框一样。省去了初始化 UEditor、手动调用 getContentÿ…...

Tomcat下载地址(详细)
Apache Tomcat - Apache Tomcat 8 Software Downloadshttps://tomcat.apache.org/download-80.cgi2.找到Archives 3.选择下载的把版本 4.选择具体下载那个版本 5. 6.一般选择tar.gz结尾的压缩包...

领星ERP如何无需API开发轻松连接OA、电商、营销、CRM、用户运营、推广、客服等近千款系统
领星ERP(LINGXING)是一款专业的一站式亚马逊管理系统,帮助卖家构建完整的数据化运营闭环。,致力于为跨境电商卖家提供精细化运营和业财一体化的解决方案。 官网:https://erp.lingxing.com 集简云无代码集成平台&…...

Django实战项目-学习任务系统-自定义URL拦截器
接着上期代码框架,6个主要功能基本实现,剩下的就是细节点的完善优化了。 首先增加URL拦截器,你不会希望没有登录用户就可以进入用户主页各种功能的,所以增加URL拦截器可以解决这个问题。 Django框架本身也有URL拦截器࿰…...
[已解决]该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系。
问题 调整hvie 的参数后导致该主机与 Cloudera Manager Server 失去联系的时间过长 思路 主机离家出走了! 出现问题后立马参数修改回来; 但是还是发现有这样的报错: 网上百度,各种操作,大概总结为2点:…...

通过在Z平面放置零极点的来设计数字滤波器
文章来源地址:https://www.yii666.com/blog/393376.html 通过在Z平面放置零极点的来设计数字滤波器 要求:设计一款高通滤波器,用在音频信号处理过程中,滤掉100Hz以下的信号。 实现方法:通过在Z平面放置零极点的来设…...
linux环境docker部署nginx对生产日志按日切割并压缩处理
linux环境docker部署nginx对生产日志按日切割并压缩处理 1、脚本文件 # 创建脚本文件 mkdir log_slice_task.sh # 编辑脚本文件 vim log_slice_task.sh#! /bin/bash # 定时切割日志脚本 LOG_ACCESS_FILE"/日志文件路径/access.log" LOG_FAIL_FILE"/日志文件路…...

【Spring Boot】发送邮件功能
发送邮件功能 一.pom.xml文件添加邮件依赖二.发送邮件信息(1)固定配置在application.yml(2)发送邮箱配成活(3)底层发送邮件方法(4)QQ邮箱开通smtp服务(5)网易…...
ELK问题整理
ELK问题整理 1、logstash启动报错 $ journalctl -xe | grep logstash Sep 13 16:37:23 am02 logstash[298460]: could not find java; set JAVA_HOME or ensure java is in PATH Sep 13 16:37:23 am02 systemd[1]: logstash.service: main process exited, codeexited, sta…...

《黑客帝国:破解编程密码》——探索编程世界的奥秘
文章目录 前言黑客帝国代码雨UbuntuLinux世界的奥秘如何在Ubuntu中查看系统信息科普推荐书籍后记 前言 在电影《黑客帝国》问世后,它不仅带来了震撼视觉体验,更在技术和编程领域产生了深远的影响。这部电影,让人们对计算机和编程的认识进一步…...

【优选算法系列】【专题六模拟】第一节.1576. 替换所有的问号和495. 提莫攻击
文章目录 前言一、替换所有的问号 1.1 题目描述 1.2 题目解析 1.2.1 算法原理 1.2.2 代码编写二、提莫攻击 2.1 题目描述 2.2 题目解析 2.2.1 算法原理 2.2.2 代码编写总结 前言 一、替换所有的问号 1.1…...

路由器基础(十二):IPSEC VPN配置
一、IPSec VPN基本知识 完整的IPSec协议由加密、摘要、对称密钥交换、安全协议四个部分组成。 两台路由器要建立IPSecVPN连接,就需要保证各自采用加密、摘要、对称密钥 交换、安全协议的参数一致。但是IPSec协议并没有确保这些参数一致的手段。 同时,IP…...

Python 获取cpu、内存利用率
获取cpu、内存利用率 # -*- coding: latin1 -*- import psutil cpuPercent 0 psutil.cpu_percent() while True:vm psutil.virtual_memory()memoryPercent vm.percentcpuPercent psutil.cpu_percent(1) *10print("cpuPercent:"str(cpuPercent)" %")prin…...

Apache ECharts简介和相关操作
文章目录 一、Apache ECharts介绍二、快速入门1.下载echarts.js文件2.新建index.html文件3.准备一个DOM容器用于显示图表4.完整代码展示5.相关配置 三、演示效果四、总结 一、Apache ECharts介绍 Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观…...
怎么看待工信部牵头推动人形机器人发展
1,工信部牵头,而不是科技部牵头,有些蹊跷,科技部应该比工信部更了解科技发展趋势,工信部比科技部更了解工业发展趋势,这是用工业倒逼科技进步。 2,人的优势不是身体,而是精神&#…...

Hikari源码分析
总结 连接池关系 1、HikariDataSource构建函数->生成HikariPool对象->调用HikariPool的getConection得到连接 2、HikariPool包含ConcurrentBag 3、ConcurrentBag保存连接:三个集合threadList、sharedList、handoffQueue 4、ConcurrentBag管理连接࿱…...

修改YOLOv5的模型结构
YOLOv5 模型结构 C3模块结构图 修改目标 修改目标是移除C3模块concat后的卷积操作 YOLOv5的模型存储在项目目录下的models目录中。 一些以yaml为后缀的文件保存了一些模型的超参数,通过不同的参数,形成了yolov5s,yolov5n,yolov5l等不同参数等级&#…...
React 与 React Native 区别
React 与 React Native 区别 同样的实现一个点击按钮,更换姓名和年龄的值的功能。两部分代码不同 React代码 import React, { useState } from react import ./Button.cssexport function UseStateWithoutFunc() {const [name, setName] useState(何遇)const [a…...

(十)学生端搭建
本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表
1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...