2

我熟悉软件自动化构建工具(例如 Automated Build Studio)。现在我正在研究 ETL 工具。

我想到的一件事是,通过使用软件构建工具,我可以在 ETL 工具中做任何我能做的事情。ETL 工具专为数据加载和操作而定制,需要大量脚本才能完成这项工作。另一方面,软件构建工具用途广泛,足以胜任任何工作,包括编写脚本以从任何格式提取、转换和加载任何数据到任何格式。

我对吗?

4

5 回答 5

3

您可以推出使用您喜欢的开发工具编写的自己的 ETL 脚本是正确的。话虽如此,ETL 工作通常很大(因为缺乏更好的词),并且需要大量的管理和对微小细节(如编程)的关注。ETL 工具允许开发人员专注于 ETL 任务——而不是编写和调试代码,尽管这也是其中的一部分。那里有一些开源工具,因此您可以在开始定制开发之前了解普通工具的功能。例如,更昂贵的工具提供数据沿袭,这意味着您可以(以图形方式)通过所有转换(包括版本)将报表上的每个字段跟踪回原始表;在公司合并之后,这是一项艰巨的任务。
例如Pentaho 有社区版;如果你有 MS SQL Server,你可以获得 SSIS。也看看你能不能在这里找到一些东西

于 2009-11-13T13:53:31.180 回答
1

如果您要构建许多流程,则 ETL 工具的好处将最大化(我喜欢上面 jsf80238 的帖子与锤击 100 个钉子的类比)。真正的 ETL 工具的一个主要好处是它们生成的元数据和操作支持。用 Perl/Ruby/etc 编写脚本相当容易,但是当需要追踪问题或作者以外的其他人必须找出问题所在时就会崩溃。管理员/支持人员快速查看问题所在的能力是什么值得花钱。我使用了 Microsoft 的 SSIS(2005 - OK)和最新的 Pentaho PDI(相当不错)。Pentaho ETL GUI 被我工作场所的业务用户(99% 的时间没有 IT 支持)使用,并且已经取代了一堆 SQL 脚本和电子表格。说出你喜欢 Pentaho 堆栈的其余部分,但 ETL 组件是,

于 2010-05-20T01:31:29.230 回答
1

ETL的整个业务都是建立在数据源与目的数据源不兼容的前提下。很多时候,转储源数据的人可能不会认为需要收集和汇总这些数据。这就是ETL整个业务存在的原因。

商业 ETL 工具不会神奇地读取源输入并根据目标数据库的规则转换数据。必须定义规则并将其输入 ETL 工具。有趣的是,许多公司提供培训!关于如何使用他们专有的脚本语言。所以这并不总是那么容易。但对于非程序员来说,也许这是首选路线。

就个人而言,我认为用像 Perl 这样的语言编写专有的 ETL 工具总是更容易。只需编写一个状态机算法来翻阅源数据并将其转换为所需的格式。我使用 Perl 将 FTP 导入机器,读取文件,转换数据,然后将其加载到数据库中。如果一个人精通 Perl 或类似的东西,或者可以雇用了解 Perl 的人,这总是一个更好的解决方案,而且速度更快。

最后一点,以终为始。以结构化格式转储您的源数据,以帮助您公司中想要汇总和研究的分析小组。这将使 ETL 程序更容易和更快地开发。

于 2011-11-03T19:07:24.973 回答
0

You can also do anything ETL tools can do with code. :-)

Both tool categories you mention can be used to solve this problem, but they are optimized for the class of problems they are trying to solve:

  • ETLs tend to come with a library of data manipulation tools (relational calculus, in-line computations, etc.), are optimized to handle large quantities of data, and have job management features (important if this isn't a single one-off data migration).
  • Build tools (for me, Ant comes to mind as a prototypical example) could do similar tasks, but are focused on compilation, file organization and manipulation, and packaging.
于 2010-05-20T04:40:24.980 回答
0

我喜欢 Damir Sudarevic 的回答,并想补充一点,您选择的工具也可能取决于您面前有多少工作。如果您偶尔有 ETL 任务并且已经熟悉可以让您完成该任务的工具,请使用您已经知道的工具(这种方法将零值分配给学习新工具,这可能低估了新知识)。如果您有很多 ETL 任务,那么学习新工具的前期投资可能会得到很好的回报。你可以用钳子打钉子,如果你只有一个钉子,你可以用钳子。如果你必须钉 100 颗钉子,就给自己一把锤子。

于 2009-11-22T02:59:31.290 回答