我熟悉软件自动构建工具(例如Automated Build Studio)。现在我正在研究ETL工具。
我想到的一件事是,我可以通过使用软件构建工具在ETL工具中做任何我能做的事情。 ETL工具专为数据加载和操作而定制,为了完成这项工作需要大量脚本。另一方面,软件构建工具的功能足以完成任何工作,包括编写脚本以提取,转换和加载任何格式的任何数据。
我是对的吗?
答案 0 :(得分:3)
您可以推出使用您偏好的开发工具编写的ETL脚本是正确的。话虽如此,ETL工作经常很大(缺乏更好的词)并需要大量的管理和注意细节(如编程)。 ETL工具允许开发人员专注于ETL任务 - 而不是编写和调试代码,尽管这也是其中的一部分。有一些开源工具,所以在进入自定义开发之前,您可以了解一般工具的功能。例如,更昂贵的工具提供数据沿袭,这意味着您可以(以图形方式)通过所有转换(包括版本)跟踪报表上的每个字段返回到原始表;在公司合并之后,这是一项非常艰巨的任务 例如 Pentaho has community edition ;如果您有MS SQL Server,则可以获得SSIS。另请参阅您是否可以找到 something here 。
答案 1 :(得分:1)
如果你要构建很多进程,那么ETL工具的好处是最大化的(我喜欢jsf80238的帖子上面类比,用100个钉子敲打)。真正的ETL工具的一个主要好处是它们生成的元数据和操作支持。在Perl / Ruby / etc中编写脚本相当容易,但是当需要跟踪问题或者作者之外的其他人必须弄清楚什么是错误时会发生故障。管理员/支持人员快速查看出现问题的能力是什么值得付钱。我使用过Microsoft的SSIS(2005 - OK)和最新的Pentaho PDI(相当不错)。 Pentaho ETL GUI在我的工作场所由业务用户使用(99%的时间没有IT支持),并且已经取代了大量的SQL脚本和电子表格。说出你对Pentaho堆栈的其余部分你喜欢什么,但在我看来,ETL组件是出色的“降压”。
答案 2 :(得分:1)
ETL的整个业务基于数据源与目标数据源不兼容的前提。很多时候,转储源数据的人可能并不认为需要收集和汇总这些数据。这就是为什么ETL的整个业务都存在的原因。
商业ETL工具不会根据目标数据库的规则神奇地读取源输入和转换数据。必须定义规则并将其输入ETL工具。有趣的是,许多公司提供培训!关于如何使用他们的专有脚本语言。所以它并不总是那么容易。但对于非程序员来说,这可能是首选途径。
就个人而言,我认为用Perl这样的语言编写专有的ETL工具总是更容易。只需编写一个状态机算法来翻录源数据并将其转换为所需的格式。我使用Perl FTP到机器,读入文件,转换数据,然后将其加载到数据库中。如果一个人熟练掌握Perl或类似的东西,或者可以聘请知道Perl的人,这总是一个优秀的解决方案,速度更快。
最后一点,从头脑开始。以结构化格式转储源数据,以帮助公司中想要汇总和研究的分析组。这将使ETL程序更容易,更快速地开发。
答案 3 :(得分:0)
你也可以做任何ETL工具可以用代码做的事情。 :-)
您提到的两个工具类别都可用于解决此问题,但它们针对他们尝试解决的问题类进行了优化: