【数仓】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()炸裂函数详解的主要内容,如果未能解决你的问题,请参考以下文章
hadoop离线day08--数据仓库Apache Hive