小白的数据仓库学习笔记 2024/5/20 18:25
文章目录
ETL
数据抽取、转换、加载
dim
打开
创建项目(选这个,这个是做etl的)
把元数据etl到数据仓库里面
建立元数据的连接
同样的,建立与数据仓库的连接
新建ssis包
分成两个脚本,一个维度、一个事实
这里做的是dim维度的,应该再dim.disx里面做,我这里选错窗口了
序列容器
如果不创建,整个页面就是容器,一次只能做一个
全量etl
把整张表的数据一下子整过去
- 删除数据(避免重复)
- etl
增量etl
一天一天的,没过一天抽一次,每天多一点
建立sql任务
双击打开,设置连接、内容
双击数据流任务
OLE DB源、数据转换、OLE DB目标
确定数据源,清洗转换
这里易错,sql命令写的是从数据源查询过来的
成功
再做两个
同样的,再做两个全量
两个表列的数据类型不一致
然后修改列的数据类型并保存
先全量,后增量
为什么先全量,后增量?
在你数据分析之前,已经产生了大量的数据
fact
sql任务
左侧分支做全量
双击线
等于0的时候走左侧
把CreateDate转成varcher类型,再转成int类型
sql
select
[FrameNo]
,[SaleShop]
,datekey
,[SalePrice]
,[FactoryPrice]
,[SaleType]
from(
SELECT [FrameNo]
,[SaleShop]
,convert(int,convert(varchar,[CreateDate],112)) datekey
,[SalePrice]
,[FactoryPrice]
,[SaleType]
FROM [jtxy_source].[dbo].[tbl_EXE_SaleCar])a
where a.datekey<=20110814;
数据转换、连接、映射
这里SaleType是中文,要转一下
右侧做增量
双击线
数据转换和目标和左侧一致
运行测试
第一次
第二次
做另外一个
同样的
创建序列容器,和上面的基本一致
这个就可以,因为datekey再order by时已经存在
sql
SELECT
distinct(convert(int,convert(varchar,[SubmitTime],112))) datekey
FROM [jtxy_source].[dbo].[tbl_EXE_TargetData] order by datekey
这个就不对,因为执行where时datakey还不存在,所以报错
SELECT [TargetValue]
,[TargetRange]
,TargetData
,convert(int,convert(varchar,[SubmitTime],112)) datekey
,[TargetFor]
,[TargetShop]
FROM [jtxy_source].[dbo].[tbl_EXE_TargetData]
where datekey<=20110809
OLE DB源
sql
select
[TargetValue]
,[TargetRange]
,TargetData
,datekey
,[TargetFor]
,[TargetShop]
from
(SELECT [TargetValue]
,[TargetRange]
,TargetData
,convert(int,convert(varchar,[SubmitTime],112)) datekey
,[TargetFor]
,[TargetShop]
FROM [jtxy_source].[dbo].[tbl_EXE_TargetData])a
where a.datekey<=20110809
因为没有中文,这里就不需要转了
直接到目标
右侧增量
运行测试
第一次
第二次