Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

《离线数据仓库设计与开发》课件 v3.0 PDF 下载


分享到:
时间:2021-01-07 18:23来源:http://www.java1234.com 作者:小锋  侵权举报
《离线数据仓库设计与开发》课件 v3.0 PDF 下载
失效链接处理
《离线数据仓库设计与开发》课件 v3.0 PDF 下载

本站整理下载:
相关截图:


主要内容:

.1 编写SQL步骤

1)先找到目标表;
2)分析一下,需要哪些表能满足目标表的所有字段;
3)即准备所有输入表;
4)SQL编写内容:
插入表语句:
(1)insert overwrite table 目标表名称 : 考虑SQL是否支持重新运行,覆盖之前的计算结果;
(2)insert into table 目标表名称 : 考虑SQL是否支持重新运行,追加之前的计算结果;
(3)考虑目标表是否需要分区,采用静态分区,还是动态分区;
查询表语句:
(1)考虑是否需要多表join,如果需要多表join,先把整体框架搭建出来,再具体编写各个子查询语句;

SELECT
目标表需要查询的字段
FROM
(
   子查询1
) tmp1
JOIN
(
  子查询2
) tmp2
ON 等值连接条件
(2)当统计次数时,使用聚合函数count();
(3)当统计求和时,使用聚合函数sum();
(4)当处理累积表时,首先获取旧表(目标表)数据,再获取新表(输入表)数据,然后二者进行join操作;
(5)当统计累积度量值时,旧表度量值 + 新表度量值   
(6)累积表中获取首次时间,当旧表时间为null时,取当前时间,旧表时间不为null时,取旧表时间;
(7)累积表中获取末次时间(最近时间),新的id不为空时,取当前时间,新的id为空时,取旧表时间;
(8)天数和次数的转换:if(new.login_count > 0 , 1 , 0)
(9)使用group by时条件注意:1.分组字段;2.常量;3.聚合函数;
(10)累积30天等指标,在新数据表new中进行累加 where最近30天
(11)当子查询较多时,可以封装子查询,构建临时表,然后直接在查询过程中引用临时表即可。

WITH
tmp1 AS (
SELECT 字段
FROM 表名
WHERE 过滤条件
GROUP BY 字段
),
tmp2 AS (
SELECT 字段
FROM 表名
WHERE 过滤条件
GROUP BY 字段
)
 
SELECT 字段
FROM
tmp1
JOIN
tmp2
ON 等值连接条件;
(12)首先编写建表语句,然后编写表数据装载语句,同时封装表操作shell脚本.

1.2 /bin/bash^M: 坏的解释器问题解决

注意:解决Linux环境下执行脚本时报错:/bin/bash^M: 坏的解释器: 没有那个文件或目录
https://blog.csdn.net/ouyang_peng/article/details/86488451

sed -i 's/\r$//' hdfs_to_ods_db.sh
问题::没有那个文件或目录
解决:相同的解决方式;

1.3 数据仓库构建业务流程


------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐