oliverde8/php-etl

一个小型PHP编写的ETL,可轻松进行提取/转换/加载。

v1.1.3 2024-07-16 13:45 UTC

README

Build Status Scrutinizer Code Quality Code Coverage Donate Latest Stable Version Latest Unstable Version License

Php etl是一个允许以简单高效的方式转换数据的ETL。

它包含2个PHP组件

规则引擎

规则引擎允许根据配置进行转换以转换特定数据。这通过ETL中的RuleTransformOperation集成。

规则引擎可以独立使用,查看文档

ETL链

ETL链由链操作项目描述。链操作包含逻辑,这意味着它可以

  • 提取数据,(可能复制项目)
  • 转换数据
  • 将数据加载到某个地方。

数据将通过项目在ETL操作中传播,可以有不同类型的项目(我们将在后面详细介绍。)

链操作消耗一个项目以创建一个新的项目或一个迭代器。目的是始终单独处理数据。例如,如果我们正在导入客户,我们尽量不在内存中同时处理超过一个客户的数据。

工作原理的示例

在文档的后面部分,我们将提供带有示例数据的更详细的真实用例。

在最简单的情况下,链接收一个包含2个项目的输入迭代器,每个链操作都会处理这两个项目。这可以是客户列表,每个操作都会更改项目。

在下面的示例中,迭代器发送一个单独的项目。第一个操作然后将发送包含2个项目的GroupedItems。第一个项目可能是一个客户,然后我们在操作1中检索该客户的每个订单。

我们还可以对项目进行分组,以进行汇总。链接收一个包含2个项目的迭代器,第一个操作处理这两个项目。它为第一个项目断开链,并返回项目1和项目2的聚合。这可以用来计算客户数量。这种分组可能会使用更多内存,因此应该谨慎使用。

链也可以分割,这允许对同一项目执行两个不同的操作。

创建链。

有两种编写链的方法,要么你自己编写代码,要么用yaml文件描述链。

  • 使用PHP代码自行启动每个操作,这不被推荐!
  • 使用yaml文件描述链。

请参阅使用yaml配置描述链,你可以在子链和更复杂的案例的文档上查看。

创建自己的操作。

请参阅自定义操作文档

常见问题解答

请参阅常见问题解答