在 ETL 管道中执行数据提取和转换的领域特定语言

Domain specific language to perform data extraction and transformation in ETL pipeline

是否有人使用域特定语言 (DSL) 作为提取-转换-加载 (ETL) 管道的一部分来促进数据提取和转换?

我想从第 3 方 SQL 数据库中提取数据并将数据转换为已定义的 JSON 格式以将其存储到我的应用程序中。有许多不同的数据库模式可以从中提取数据,所以我想知道是否已经有一种方法可以通过(常用的)提取语言的帮助来配置它(理想情况下,该语言对于其他数据源也是不可知的,例如网络服务等)。

我环顾四周,但除了一些研究论文外,我找不到太多关于 ETL 的商定标准(减去我已经涵盖的 'L')而且我不知道不想重新发明轮子。

如果有任何正确方向的指示,我将不胜感激。

我认为为 ETL 创建一个好的 all-encompassing DSL 不仅困难,而且有点徒劳。要处理许多 real-world ETL 复杂性,您最终需要 re-creating 一种 general-purpose 语言。

和 ETL“没有编程技能”,因为这种 research paper 尝试将与清理和整合不同源系统的混乱作斗争。

使用 general-purpose 语言本身当然是可能的,但由于抽象级别低以及您必须实现的所有基础架构代码,非常耗时。

图形化 ETL 工具和一些 ETL DSL 通过添加脚本或调用外部程序来解决这个问题。虽然有用且必不可少,但它确实具有采用多种不同编程模型的缺点,并且在它们之间移动时会产生相关的心理和技术摩擦。

另一种我认为更好的方法是将 ETL 功能添加到 general-purpose 语言中。如果做得好,您可以将 ETL 特定功能和高抽象级别的优势与 general-purpose 语言及其大型 eco-system 的强大功能结合起来,所有这些都通过单一编程模型交付。

作为后一种方法的一个例子,如果听起来很合适,我的公司会提供 actionETL, a cross-platform .NET ETL library that combines an ETL mindset with the advantages of modern application development. For example, it provides familiar control flow and dataflow ETL capabilities, and uses internal DSLs in several places to simplify configuration. Do try it out

actionETL 现在也有免费的 Community edition

干杯, 克里斯蒂安