栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

hive数仓数据重复性检查

hive数仓数据重复性检查

这里写目录标题
  • 一、如何快速确认某一字段是否有重复值
    • 1、cnt 没有去重,order_cnt 去重, 如果得到结果相同,则表是没有重复
    • 2、根据待确认字段进行分组,订单号不能有大于1的情况,就代表没有重复
    • 3、如果数据有重复,如何查找出来重复的字段信息呢?
  • 二、如何去除重复值
    • 2.1 hive表中某些数据是整行的重复,而且字段过多时:
    • 2.2 两行数据只有一个字段不一样:
    • 2.3 当表中字段不多,而且数据是某些字段重复,可通过row_number():
    • 2.4 在某些情况中我们不是需要全部字段,而是仅仅过滤出某些不重复的字段:
  • 三、row_number() OVER (PARTITION BY COL1 ORDER BY COL2)

一、如何快速确认某一字段是否有重复值

因为Hive中没有主键,mysql严格要求主键,可以将待确认字段作为主键。

1、cnt 没有去重,order_cnt 去重, 如果得到结果相同,则表是没有重复
select
count(*) cnt ,count(distinct order_id) order_cnt
from orders
//结果:
cnt order_cnt
3421083 3421083 
2、根据待确认字段进行分组,订单号不能有大于1的情况,就代表没有重复
select
order_id,count(1) 
from orders
group by order_id
having count(1)>1
//结果:
order_id   count(1) 

# 表示没有重复值
3、如果数据有重复,如何查找出来重复的字段信息呢?
select
pripid,count(1) 
from orders
group by pripid
having count(1)>1

二、如何去除重复值 2.1 hive表中某些数据是整行的重复,而且字段过多时:
insert overwrite table stu_tab
select distinct * from stu_tab;

通过过滤不同的行,将原表进行覆盖。

2.2 两行数据只有一个字段不一样:


根据情况我们将含有2的那行数据进行删除;

insert overwrite table sys_cus_hz_20210127
select distinct * from sys_cus_hz_20210127 where consumlevel != 2;
2.3 当表中字段不多,而且数据是某些字段重复,可通过row_number():
insert overwrite table emp_tab
select id,name,sal from (
select * ,
row_number() over(partition by id order by sal desc) rank
from emp_tab)t1
where t1.rank=1;
2.4 在某些情况中我们不是需要全部字段,而是仅仅过滤出某些不重复的字段:
select distinct id from stu_tab;
#单个字段去重
select distinct id,name from stu_tab;
#多个字段之间通过逗号去重
三、row_number() OVER (PARTITION BY COL1 ORDER BY COL2)

这行代码的意思是先对COL1列进行分组,然后按照COL2进行排序,row_number()函数是对分组后的每个组内记录按照COL2排序标号,我们最后取的时候就拿标号为1的一条记录,即达到我的需求。

SELECt 
*, 
Row_Number() OVER (partition by deptid ORDER BY salary desc) rank
FROM employee 

SELECt *
from( select
*,
Row_Number() OVER (partition by deptid ORDER BY salary desc) as rank
FROM employee) t1
where t1.rank=1

只保留rank=1的数据。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/652028.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号