【数仓】Hive数仓的explode()炸裂函数详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了【数仓】Hive数仓的explode()炸裂函数详解相关的知识,希望对你有一定的参考价值。

参考技术A 我们知道数仓不满足第一范式,也就是说数仓中的字段是可再分的,不满足原子性,即DDL可以定义一个字段类型为数组。因此才有了explode()函数,用于给这个字段展开降维。

explode()可以把指定的数组字段拆分降维展开为多行。类似于UDTF函数,作用于单/多个数据行,并且产生多个数据行,以一个表作为输出。

但这样无法同时查询多列,即select name,explode(array) from table会报错。
原因时当使用UDTF函数的时候,Hive只允许对拆分字段进行访问。
要同时查询多列只能:

lateral view explode() 是把要拆分的字段array拆分后以多行存储在t表中的item字段中(当然也可以另起一个临时表)。

如果一行数据有两列需要炸裂展开,可以这样写:

这样得到的行数是 n * length(array1) * length(array2)

数仓的概念及架构

目录


一、数仓的概念(数据仓库)

1、对比记忆:

① 数据库的概念:

其实就是一种软件,用来存放数据

② 数仓的概念(全方面的数据完整保存):

是一个面向主题的、集成的、相对稳定的、反应历史变化数据的集合,用于支持管理决策

属性数据库数仓
面向内容事务主题、分析
数据存储当前最新数据历史数据
模型建设三范式星型模型

③银行主题

④集成:

数据仓库的中的信息不是从各个业务系统中简单抽取出来的,而是经过一系列加工、整理、汇总的过程,因此数据仓库中的信息是关于整个企业的一致的全局信息

⑤时间变化:

数据仓库内的信息并不只是反映企业当前的状态,而是记录从过去到当前阶段的信息,通过这些信息,对企业的发展和未来趋势做出定量分析和预测

⑥效率足够高:

数据仓库的分析一般分为日、周、月、季、年等,可以看出,日为周期要求的效率最高,要求24小时甚至12小时以内,目前普遍的数据展现方式T+1(今天抽昨天数据),当日处理昨日业务数据M+1,Q+1,Y+1(月、季、年)

⑦数据质量

基于数仓的应用所面对的一般为企业决策层用户,
所以数仓的提供的各类信息,肯定要准确的数据;由于源数据存在脏数据,所以数仓的流程通常分为多个步骤,数据抽取、清洗、转换、装载、查询、展现等;数据清洗主要对脏数据和不规范数据进行统一标准化(准确性,完整性)

⑧扩展性:

有的大型数据仓库系统架构设计复杂,是因为考虑到了未来3-5年的扩展性,这样的话,未来不用花太多时间去重建数据仓库系统,就能很稳定运行。主要体现在数据建模的合理性,数据仓库方案中多出一些中间层,使海量数据流有足够的缓冲,不至于因为数据源的变动而导致用户应用功能的频繁变动

2、数仓的用途

① 整合公司的所有业务数据,建立统一的数据中心
②产生业务报表、用于决策
③为网站运营提供运营上的数据支持
④可以作为各个业务的数据源,形成业务数据互相反馈的良性循环
⑤分析用户行为数据,通过数据挖掘来降低投入成本,提高投入效果
⑥开发数据产品,直接或间接地为公司盈利

3、数仓的相关技术


解释:
①维度:指一种视角,而不是一个固定数字;是一个判断说明评价和确定一个事物多方位、角度、多层次的条和概念
②维度可以是地域,时间、币种、机构等
③度量:真实的数据

DW的相关技术:

二、数据库和数仓区别

差异项业务系统 OLTP数据仓库OLAP
特征操作处理信息处理
面向事物分析
用户基层人员经理、主管、分析人员
功能日常操作长期信息需求、决策支持
DB设计基于ER模型,面向应用星形/雪花模型,面想主题
数据当前的、最新的历史的、跨时间维护
汇总原始的、高度详细汇总的、统一的
工作单元短的、简单事物复杂查询
访问读/写大多为读
关注数据进入信息输出
操作主键索引操作大量的磁盘扫描
用户数数百到数亿数百
DB规模GB到TB>TB PB EB
优选高性能,高可用性高灵活性
度量事物的吞吐量查询吞吐量、响应时间

二、数仓的架构

1、数仓系统架构图


解释
①数据源:业务系统(核心CBS,客户ECIF,客户关系CRM,信贷,存款,财务,反洗钱,中间业务,国际结算,银行卡)
②缓冲层:一是临时存放数据;二是标准化处理(数据类型统一,统一命名规范,删除无用字段,天剑时间戳,空值的处理)
③基础层:根据客户需求将ODS数据进行集成,按照不同行业主题进行分类,形成业务宽表
④汇总层:根据客户需求,将宽表按照按照不同的维度进行汇总
⑤应用层:可视化展示,为下游系统提供数据

2、数仓系统架构图

以上是关于【数仓】Hive数仓的explode()炸裂函数详解的主要内容,如果未能解决你的问题,请参考以下文章

Hive数仓-数据倾斜优化

Hive数仓建设手册

Hive数仓建设手册

hadoop离线day08--数据仓库Apache Hive

hadoop离线day08--数据仓库Apache Hive

最佳实践ClickHouse在携程酒店数仓的实践