-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdata_warehouse_quick4.html
213 lines (205 loc) · 14 KB
/
data_warehouse_quick4.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
<!DOCTYPE html>
<html lang="cn">
<head>
<meta charset="utf-8" />
<title>数据仓库快速入门教程4-ETL</title>
<link rel="stylesheet" href="/theme/css/main.css" />
</head>
<body id="index" class="home">
<header id="banner" class="body">
<h1><a href="/">python自动化测试人工智能 </a></h1>
<nav><ul>
<li><a href="/category/ba-zi.html">八字</a></li>
<li><a href="/category/ce-shi.html">测试</a></li>
<li><a href="/category/ce-shi-kuang-jia.html">测试框架</a></li>
<li><a href="/category/common.html">common</a></li>
<li class="active"><a href="/category/da-shu-ju.html">大数据</a></li>
<li><a href="/category/feng-shui.html">风水</a></li>
<li><a href="/category/ji-qi-xue-xi.html">机器学习</a></li>
<li><a href="/category/jie-meng.html">解梦</a></li>
<li><a href="/category/linux.html">linux</a></li>
<li><a href="/category/python.html">python</a></li>
<li><a href="/category/shu-ji.html">书籍</a></li>
<li><a href="/category/shu-ju-fen-xi.html">数据分析</a></li>
<li><a href="/category/zhong-cao-yao.html">中草药</a></li>
<li><a href="/category/zhong-yi.html">中医</a></li>
</ul></nav>
</header><!-- /#banner -->
<section id="content" class="body">
<article>
<header>
<h1 class="entry-title">
<a href="/data_warehouse_quick4.html" rel="bookmark"
title="Permalink to 数据仓库快速入门教程4-ETL">数据仓库快速入门教程4-ETL</a></h1>
</header>
<div class="entry-content">
<footer class="post-info">
<abbr class="published" title="2019-04-29T08:34:00+08:00">
Published: 一 29 四月 2019
</abbr>
<address class="vcard author">
By <a class="url fn" href="/author/andrew.html">andrew</a>
</address>
<p>In <a href="/category/da-shu-ju.html">大数据</a>.</p>
</footer><!-- /.post-info --> <ul>
<li><a href="https://china-testing.github.io/practices.html">python测试开发项目实战-目录</a></li>
<li><a href="https://china-testing.github.io/python_books.html">python工具书籍下载-持续更新</a></li>
</ul>
<h2 id="etl">什么是ETL?</h2>
<p>ETL是Extract,Transform和Load的缩写。 在此过程中,ETL工具从不同的RDBMS源系统中提取数据,然后转换数据,如应用计算,连接等,然后将数据加载到数据仓库系统中。</p>
<p>ETL流程需要来自各种利益相关方(包括开发人员,分析师,测试人员,高级管理人员)的积极参与.为了保持其作为决策者工具的价值,数据仓库系统需要随业务变化而变化。 ETL是数据仓库系统的重复活动(每日,每周,每月),需要灵活,自动化且有良好的文档。</p>
<h2 id="etl_1">你为什么需要ETL?</h2>
<p>在组织中采用ETL的原因有很多:</p>
<ul>
<li>它可以帮助公司分析业务数据,从而做出关键业务决策。</li>
<li>事务数据库无法回答ETL可以回答的复杂业务问题。</li>
<li>数据仓库提供公共数据存储库</li>
<li>ETL提供了将数据从各种源移动到数据仓库的方法。</li>
<li>随着数据源的变化,数据仓库将自动更新。</li>
<li>精心设计和记录的ETL系统对于数据仓库项目的成功几乎是必不可少的。</li>
<li>允许验证数据转换,聚合和计算规则。</li>
<li>ETL过程允许源和目标系统之间的样本数据比较。</li>
<li>ETL过程可以执行复杂的转换,并需要额外的区域来存储数据。</li>
<li>ETL有助于将数据迁移到数据仓库中。 转换为各种格式和类型。</li>
<li>ETL是用于访问和操作源数据到目标数据库的预定义过程。</li>
<li>ETL为业务提供深刻的历史背景。</li>
<li>它有助于提高生产力。</li>
</ul>
<h2 id="etl_2">数据仓库中的ETL过程</h2>
<p>ETL分为3个步骤</p>
<p><img alt="图片.png" src="https://upload-images.jianshu.io/upload_images/12713060-d8e9219ab0447c8e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<h3 id="_1">提取</h3>
<p>在此步骤中,将数据从源系统提取到暂存区域。 如果在暂存区域中完成转换,源系统的性能不受影响。 暂存区域也有助于验证。</p>
<p>数据仓库需要集成不同的系统</p>
<p>DBMS,硬件,操作系统和通信协议。 来源可能包括遗留应用程序,如大型机,自定义应用程序,ATM等联系设备,呼叫交换机,文本文件,电子表格,ERP,供应商提供的数据,合作伙伴等。</p>
<p>因此,在物理提取和加载数据之前需要逻辑数据映射。 此数据映射描述了源和目标数据之间的关系。</p>
<p><strong>三种数据提取方法:</strong></p>
<ul>
<li>完全提取</li>
<li>部分提取 - 无更新通知。</li>
<li>部分提取 - 带更新通知</li>
</ul>
<p>无论使用何种方法,提取都不应影响源系统的性能和响应时间。 这些源系统是实时生产数据库。 任何减速或锁定都可能影响公司的底线。</p>
<p><strong>在提取期间完成了一些验证:</strong></p>
<ul>
<li>协调记录与源数据</li>
<li>确保没有加载垃圾/不需要的数据</li>
<li>数据类型检查</li>
<li>删除所有类型的重复/碎片数据</li>
<li>检查所有keys</li>
</ul>
<h3 id="_2">转换</h3>
<p>从源服务器提取的数据是原始的,不能以其原始形式使用。 因此需要对其进行清理,映射和转换。 事实上,这是ETL流程增加价值和更改数据的关键步骤,从而可以生成富有洞察力的BI报告。</p>
<p>在此步骤中,您将对提取的数据应用一组函数。 不需要任何转换的数据称为<strong>直接移动</strong>或<strong>传递数据</strong> 。</p>
<p>在转换步骤中,您可以对数据执行自定义操作。 例如,如果用户想要不在数据库中的销售总额收入。 或者,如果表中的名字和姓氏位于不同的列中。 可以在加载之前连接它们。</p>
<p><img alt="图片.png" src="https://upload-images.jianshu.io/upload_images/12713060-31afdb7dd511f16d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<p>以下是数据完整性问题:</p>
<ol>
<li>Jon,John等同一个人的拼写不同</li>
<li>有多种方式可以表示Google,Google Inc.等公司名称。</li>
<li>使用不同的名字,如Cleaveland,Cleveland。</li>
<li>可能存在由同一客户的各种应用程序生成不同帐号的情况。</li>
<li>部分数据缺失</li>
<li>在POS处收集的产品无效,因为手动输入可能导致错误。</li>
</ol>
<p><strong>验证在此阶段完成</strong></p>
<ul>
<li>过滤 - 仅选择要加载的特定列</li>
<li>使用规则和查找表进行数据标准化</li>
<li>字符集转换和编码处理</li>
<li>转换计量单位,如日期时间转换,货币换算,数字转换等。</li>
<li>数据阈值验证检查。 例如,年龄不能超过两位数。</li>
<li>从暂存区到中间表的数据流验证。</li>
<li>必填字段不应留空。</li>
<li>清理(例如,将NULL映射到0或将性别男性映射到“M”,将女性映射到“F”等)</li>
<li>将列拆分为多个列并将多个列合并为一个列。</li>
<li>转置行和列,</li>
<li>使用查找来合并数据</li>
<li>使用任何复杂的数据验证(例如,如果一行中的前两列是空的,那么它会自动拒绝处理中的行)</li>
</ul>
<h3 id="_3">加载</h3>
<p>将数据加载到目标数据仓库数据库是ETL过程的最后一步。 在典型的数据仓库中,需要在相对较短的时间段(夜晚)加载大量数据。因此,应针对性能优化负载过程。</p>
<p>如果发生负载故障,应将恢复机制配置为从故障点重新启动,而不会丢失数据完整性。 数据仓库管理员需要根据主要服务器的性能监控,恢复和取消负载。</p>
<p><strong>加载类型:</strong></p>
<ul>
<li><strong>初始加载</strong> - 填充所有数据仓库表</li>
<li><strong>增量负载</strong> - 定期应用持续更改。</li>
<li><strong>完全刷新 -</strong>删除一个或多个表的内容并使用新数据重新加载。</li>
</ul>
<h3 id="_4">加载验证</h3>
<ul>
<li>确保关键字段数据既不缺少也不为空。</li>
<li>基于目标表测试建模视图。</li>
<li>检查组合值和计算的度量。</li>
<li>维度表和历史表中的数据检查。</li>
<li>检查加载的事实和维度表上的BI报告。</li>
</ul>
<h3 id="_5">参考资料</h3>
<ul>
<li><a href="https://china-testing.github.io/practices.html">python测试开发项目实战-目录</a></li>
<li><a href="https://china-testing.github.io/python_books.html">python工具书籍下载-持续更新</a></li>
<li><a href="https://china-testing.github.io/python3_quick.html">python 3.7极速入门教程 - 目录</a></li>
<li>讨论qq群630011153 144081101</li>
<li><a href="https://china-testing.github.io/pptx.html">原文地址</a></li>
<li><a href="https://github.com/china-testing/python-api-tesing">本文涉及的python测试开发库</a> 谢谢点赞!</li>
<li>[本文相关海量书籍下载](https://github.com/china-testing/python-api-tesing/blob/master/books.md</li>
<li>http://spark.apache.org/docs/2.1.0/api/python/pyspark.sql.html</li>
</ul>
<h2 id="etl_3">ETL工具</h2>
<p>市场上有许多数据仓库工具。 这里有一些最突出的:</p>
<p><strong>1.MarkLogic:</strong></p>
<p>MarkLogic使用一系列企业功能使数据集成更容易,更快捷。 此工具有助于执行非常复杂的搜索操作。 它可以查询不同类型的数据,如文档,关系和元数据。</p>
<p><a href="http://developer.marklogic.com/products">http://developer.marklogic.com/products</a></p>
<p><strong>甲骨文:</strong></p>
<p>Oracle是业界领先的数据库。 它为内部部署和云端提供了广泛的数据仓库解决方案选择。 它有助于通过提高运营效率来优化客户体验。</p>
<p><a href="https://www.oracle.com/index.html">https://www.oracle.com/index.html</a></p>
<p><strong>3.亚马逊RedShift:</strong></p>
<p>它使用标准SQL和现有BI工具分析所有类型数据的简单且经济高效的工具。 它还允许使用查询优化技术运行针对数PB的结构化数据的复杂查询。</p>
<p><a href="https://aws.amazon.com/redshift/?nc2=h_m1">https://aws.amazon.com/redshift/?nc2=h_m1</a></p>
<h2 id="etl_4">最佳实践ETL过程</h2>
<p><strong>切勿尝试清理所有数据:</strong></p>
<p>每个组织都希望将所有数据都清理干净,但大多数组织都不愿意等待或不准备等待。 要清理它只需要太长时间,所以最好不要尝试清理所有数据。</p>
<p><strong>永远不要清洗任何东西:</strong></p>
<p>始终计划清理某些东西,因为构建数据仓库的最大原因是提供更清晰,更可靠的数据。</p>
<p><strong>确定清理数据的成本:</strong></p>
<p>在清理所有脏数据之前,确定每个脏数据元素的清理成本非常重要。</p>
<p><strong>要加快查询处理速度,请使用辅助视图和索引:</strong></p>
<p>要降低存储成本,请将汇总数据存储到磁盘磁带中。 此外,还需要在要存储的数据量与其详细使用之间进行权衡。 在数据粒度级别进行权衡以降低存储成本。</p>
<h2 id="_6">小结</h2>
<ul>
<li>ETL是Extract,Transform和Load的缩写。</li>
<li>ETL提供了一种将数据从各种源移动到数据仓库的方法。</li>
<li>在第一步提取中,将数据从源系统提取到暂存区域。</li>
<li>在转换步骤中,从源中提取的数据被清理和转换。</li>
<li>将数据加载到目标数据仓库是ETL过程的最后一步。</li>
</ul>
<h3 id="_7">参考资料</h3>
<ul>
<li>工作日技术支持QQ群 630011153 144081101</li>
<li><a href="https://china-testing.github.io/data_warehouse_quick4.html">本文最新版本地址</a></li>
<li><a href="https://github.com/china-testing/python-api-tesing">本文涉及的python测试开发库</a> 谢谢点赞!</li>
<li><a href="https://github.com/china-testing/python-api-tesing/blob/master/books.md">本文相关海量书籍下载</a></li>
<li>道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看八字、风水、手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联系钉钉或者微信pythontesting</li>
<li><a href="https://china-testing.github.io/testing_training.html">接口自动化性能测试线上培训大纲</a></li>
</ul>
</div><!-- /.entry-content -->
</article>
</section>
<section id="extras" class="body">
<div class="blogroll">
<h2>links</h2>
<ul>
<li><a href="https://china-testing.github.io/testing_training.html">自动化性能接口测试线上及深圳培训与项目实战 qq群:144081101 591302926</a></li>
<li><a href="http://blog.sciencenet.cn/blog-2604609-1112306.html">pandas数据分析scrapy爬虫 521070358 Py人工智能pandas-opencv 6089740</a></li>
<li><a href="http://blog.sciencenet.cn/blog-2604609-1112306.html">中医解梦看相八字算命qq群 391441566 csdn书籍下载-python爬虫 437355848</a></li>
</ul>
</div><!-- /.blogroll -->
</section><!-- /#extras -->
<footer id="contentinfo" class="body">
<address id="about" class="vcard body">
Proudly powered by <a href="http://getpelican.com/">Pelican</a>, which takes great advantage of <a href="http://python.org">Python</a>.
</address><!-- /#about -->
<p>The theme is by <a href="http://coding.smashingmagazine.com/2009/08/04/designing-a-html-5-layout-from-scratch/">Smashing Magazine</a>, thanks!</p>
</footer><!-- /#contentinfo -->
</body>
</html>