作者都是各自领域经过审查的专家,并撰写他们有经验的主题. 我们所有的内容都经过同行评审,并由同一领域的Toptal专家验证.
阻碍公司向业务用户提供重要决策信息的最严重错误之一是缺乏来自一个或多个数据源的可靠数据, 聚集在一个地方, 有组织的,准备使用的.
想象一下这个场景——您是一家手机外壳公司的IT经理,该公司在美国各地都有零售店. 你的董事会很难根据销售情况做出决定,因为信息是可用的,但它们位于不同的位置和格式. 其中一位董事要求您生成一个仪表板,其中包含所有销售点的销售信息,以便在下次董事会会议上展示.
您已经知道,由于格式和结构的不同,几乎不可能合并信息. 一些零售终端仍在使用Oracle数据库中的专有系统. 较大的商店正在使用新的Salesforce系统. 在系统过渡期间开始运营的最新售货亭共享了用于计算销售额的电子表格.
如何将来自不同位置、格式和结构的所有数据整理成唯一的数据 数据库 准备好访问仪表板生成?
ETL代表 提取、转换 和 负载. ETL是一组过程,旨在将这种复杂的数据存储转换为有组织的数据存储, 可靠的, 和可复制的流程,以帮助您的公司产生更多的销售与您已经拥有的数据.
在我们的例子中, 我们将从Oracle数据库接收数据(大多数kiosks), 来自Salesforce(商店), 从电子表格(较新的售货亭), 提取数据, 必要时进行转换, 并装入单个 数据仓库数据库 由报告工具访问,并用于生成仪表板和记分卡.
让我们深入了解ETL的三个步骤来详细说明这个过程.
提取是从单个或多个源接收数据的过程. 源可以有不同的格式和结构, 比如文件, 电子表格, CSV文件, 平面文件, 关系数据库,如Oracle, MySQL, SQL Server, 非关系型数据库, 等等.......
提取主要有两种类型: 完整的 和 部分.
除了这些方面, 在选择完全提取还是部分提取时,需要考虑一些其他因素, 我想描述其中一个: 数据可用性和完整性.
这意味着只有完成的事务才会被考虑提取, 消除可能导致完整性错误的数据. 例如,一个在线测试用10个问题来确定工程师的知识. 如果一个工程师正在测试中,并且已经回答了一些问题,但是还没有完成, 提取过程无法从未完成的测试中读取问题. 它可能导致完整性错误.
在提取数据之后, 我们可以开始转变过程:清洁, 操作, 并根据业务规则和技术标准转换数据,以保持可接受的数据质量水平.
根据许多因素,可能需要使用暂存区. 暂存区是一种中间存储空间,用于临时存储从要转换的数据源提取的数据.
在一些项目中, 通常只有少量的数据, 没有必要使用集结区, 但大多数项目都使用它.
在转换阶段执行了一系列任务:
下面是一些常见的转换类型:
最后但并非最不重要的是,ETL中的最后一个过程是将数据加载到目标中. 加载是将转换后的数据(来自暂存区或非暂存区)插入存储库的行为, 通常是数据仓库数据库.
加载数据有三种主要类型:完整或初始、增量和刷新.
总之, 每个公司, 与它的大小无关, 是否可以使用ETL流程来集成已经存在的信息,并为决策生成更丰富的信息, 将以前不能使用的数据转化为新的收入来源.
测试是ETL最重要的阶段之一,但也是最容易被忽视的阶段之一.
转换来自不同来源和结构的数据并将其加载到数据仓库是非常复杂的,并且可能会产生错误. 在上面的转换阶段中描述了最常见的错误.
数据的准确性是成功的关键,而不准确性则会导致灾难. 因此, ETL的专业人士 在整个过程中有保证数据完整性的使命. 在每个阶段之后,必须执行一个测试. 是从单个源提取数据还是从多个源提取数据, 必须检查数据以确定没有错误.
在任何转换之后都必须进行相同的操作. 例如, 在转换阶段汇总数据时, 必须对数据进行检查,以确保没有数据丢失,并且总和是正确的.
将转换后的数据加载到数据仓库之后, 必须重新应用测试过程. 加载的数据需要与转换后的数据进行比较,然后与提取的数据进行比较.
在我们的手机外壳公司的例子中, 我们正在使用三个不同的数据源(专有的Oracle数据库), Salesforce, 和电子表格)和不同的格式. 测试阶段可以使用来自原始数据源的样本数据,并将它们与暂存区域中的数据进行比较,以确保提取过程没有错误.
示例数据——在本例中可以是来自三个不同位置(商店)的销售信息, 老亭, 新的信息亭)——将与原始来源进行比较. 如果存在差异,则必须对其进行分析,以确定它们是可接受的还是错误的.
如果发现错误, 它们必须被修复, 如果你需要解决这些问题,你需要做出一些决定: 原始数据是否需要修改? 这可能吗? 如果错误不能在原始源中修复,那么可以通过一些转换来修复它们吗?
在某些情况下, 必须消除有错误的数据,并触发警报以通知负责人.
一些测试示例:
记录ETL进程是确保您拥有可维护且易于修复的系统的关键保证.
具有正确日志记录流程的ETL对于保持整个ETL操作处于不断改进的状态非常重要, 帮助团队管理数据源的bug和问题, 数据格式, 转换, 目的地, 等.
一个健壮的日志流程可以帮助团队节省时间,使他们能够更快速、更容易地识别问题, 首席工程师需要更少的时间直接找出问题所在. 有时, 错误发生在提取大量数据的过程中, 没有圆木, 找出问题是困难的——有时几乎是不可能的. 如果没有日志,则必须重新运行整个进程. 使用日志, 团队可以快速识别导致问题的文件和行,并且只能修复这些数据.
我能想到的唯一一种日志不那么重要的情况是非常小的非自动化系统, 流程是手动运行的,只有少量数据可以手工监控.
日志提高自动化. 具有大量自动运行数据的ETL进程需要日志系统. 如果计划和执行得当的话, 构建日志记录系统的所有努力都将以更快的错误识别形式获得回报, 更可靠的数据, 以及在日志文件中发现的改进点.
创建日志系统有三个主要步骤: 生成、存档 和 分析.
ETL流程可以处理大量数据,并且可能会花费很多时间来设置它们,以及处理数据所需的计算资源. 规划集成时, 工程师们必须牢记所有数据被使用的必要性. 最好的做法是使用最少的数据量来实现目标, 而不是花费时间和金钱迁移无用的数据. 也, 请记住,数据量往往会随着时间的推移而增加, 所以尽量考虑你未来的需求.
设计一个日志记录系统需要付出多少努力?
这取决于许多不同的因素,比如要处理的数据的数量和频率. 数据少的小系统可以手工管理, 无需投资于先进的测井系统.
拥有大量数据的公司, 许多不同的过程, 不同的数据源和格式, 复杂的管道必须投资建立记录系统. 正如我们已经提到的,一个好的日志系统可以节省大量的时间和金钱.
一个更明显的方法, 无论公司规模大小, 数据量, 和积分频率, 一个ETL进程必须是 盈利. 对时间的投资, 钱, 技术资源必须产生回报——正如经济学家米尔顿·弗里德曼所说:“天下没有免费的午餐。.”
总之, ETL流程可以帮助企业利用已有的数据增加利润,但这些数据没有得到正确的使用. ETL管道可以集成不同的系统, 那些包含重要信息的电子表格, 以及分布在不同部门和分支机构的数据的其他部分, 允许组织充分利用他们的数据.
ETL代表提取、转换和加载.
ETL不是一个单一的进程, 而是一组过程,旨在将复杂的数据存储转化为有组织的, 可靠的, 和可复制的过程,以帮助您有效地使用更多的数据,您已经拥有.
因为ETL整合了来自不同来源的数据, 然后将其转换为数据仓库中使用的格式, 提高数据的质量和一致性.
通过确保数据被整合并转换为通用格式, 不管原始的来源和格式.
世界级的文章,每周发一次.
世界级的文章,每周发一次.