Hive基础篇-04

数据仓库架构

        源数据落地区【SDF,source data file】

        数据仓库层【DW,data warehouse】

        数据集市层【DM,data market】

 数据仓库层(DW)内部架构

        源数据层【DWB,data warehouse base】

        细节数据层【DWD,data warehouse detail】

        汇总数据层【DWS,data warehouse summary】

        DWD与DWS是并列关系,虽然DWS由DWD计算得来

        数据仓库层(DW)

                水平划分:源数据层 → 细节数据层 → 汇总数据层

                垂直划分:流量域、产品域、财务域、内容域……

数据仓库建模

发展阶段

        简单报表阶段:解决日常工作中业务人员需要的报表

        数据集市阶段:根据业务部门的需求定制多维度报表,提供决策数据

        数据仓库阶段:提供跨部门的业务报表数据,提供全方位的数据支持

数据建模的意义

        进行全面的业务梳理,改进业务流程

        提供全方位的视角,消灭信息孤岛和数据差异

        解决业务变动和数据仓库的灵活性

        帮助数据仓库系统本身的建设

数据建模的方式

        业务建模 → 领域概念建模 → 逻辑建模 → 物理建模

        范式建模法

                第一范式:无重复的列

                第二范式:字段完全依赖主键

                第三范式:不能出现依赖传递(两个表中不能出现相同的列,除了主键)

        维度建模法

                概念说明

                事实表:将一个事实建立为一张表(比如一个订单,一个商品)

                维度表:事实表所依赖的一张表(在事实表中常以一个id字段连接一个维度表)

                星形建模法:维度表不会连接次级维度表

                雪花建模法:维度表以相同的方式连接次级维度表

                追求简便可以使用星形建模法,但会有数据冗余;追求严谨可以使用雪花建模法

                实体建模法不常用

                        由实体与实体之间的关系组成

数据分析 

hive对数据分析的支持

        hive数据分析函数:分析函数,窗口函数,增强Group(用的很少)三类,以及用于辅助表达的over从句。 因为明细数据和聚合数据不能同时出现在一张表中,所以需要hive数据分析函数。

分析函数(不支持与window子句联用,即rows between)

        ntile:用于数据分片排序,并返回当前分片值。不均匀的时候,依次增加前面分片序列的数量。

        row_number:用于排序,按照顺序,不关心是否有相等的情况,从1开始逐条给数据加1 后的序列号。

        rank:用于排序,按顺序关心相等情况,如遇到相等情况,名次会留下空位。如122446

        dense_rank:用于排序,关心相等情况,如遇到相等情况,名次不会留下空位。如122334

窗口函数

        lag:函数lag(col,n,default)用于统计窗口往上第N行值。

                第一个参数为 列名,第二个参数为往上第n行(可选,默认为1),第三个参数为默认值(当往 上第n行为null中,取默认值,如不指定,则为null)

        lead: 与LAG作用相反,函数形式如LEAD(col,n,DEFAULT)

                用于统计窗口内往下第n行值。

                第一个参数为列名,第二个参数为往下第n行(可选,默认为1),第三个参数为默认值(当往下第n行为NULL时候,取默认值,如不指定,则为NULL)

        FIRST_VALUE: 取分组内排序后,截止到当前行,第一个值

        LAST_VALUE:与FIRST_VALUE相反,取分组内排序后,截止到当前行,最后一个值

over()从句:指定分析窗口函数的细化落维规则

        与标准的聚合函数联用,如sum() over()

        与匹配的分析窗口联用,如row_number()over()

        使用PARTITION BY语句,使用一个或者多个原始数据类型的列

        使用PARTITION BY与ORDER BY语句,使用一个或者多个数据类型的分区或者排序列

使用窗口规范,窗口规范支持以下格式:

        rows between:即为window子句或称窗口子句,属于物理截取,即物理窗口,从行数上控制截取数据的大小多少。

        range between: 即为window子句或称窗口子句,属于逻辑截取,即逻辑窗口,从列值上控制窗口的大小多少。

        preceding:window子句之往前

        following:window子句之往后

        current row:window子句之当前行

        unbounded:window子句之起点,UNBOUNDED PRECEDING 表示从前面的起点。  

        UNBOUNDED following:表示到后面的终点。

注意:order by子句后边如果没有跟着多大窗口,则默认为range between unbounded preceding and current row

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值