oliverde8 / php-etl
一个小型PHP编写的ETL,可轻松进行提取/转换/加载。
Requires
- php: >=8.1
- oliverde8/associative-array-simplified: ^1.0
- psr/log: ^1.0|^2.0|^3.0
- symfony/expression-language: ^4.3|^5.0|^6.0|^7.0
- symfony/filesystem: ^5.4|^6.0|^7.0
- symfony/validator: ^4.3|^5.0|^6.0|^7.0
- symfony/yaml: ^4.3|^5.0|^6.0|^7.0
Requires (Dev)
- phpunit/php-code-coverage: ^9.2
- phpunit/phpunit: 9.4.*
Suggests
- league/flysystem: For transfaring files from external file systems
- symfony/http-client: For a simple http request operation
This package is auto-updated.
Last update: 2024-09-16 14:16:02 UTC
README
Php etl是一个允许以简单高效的方式转换数据的ETL。
它包含2个PHP组件
规则引擎
规则引擎允许根据配置进行转换以转换特定数据。这通过ETL中的RuleTransformOperation集成。
规则引擎可以独立使用,查看文档
ETL链
ETL链由链操作和项目描述。链操作包含逻辑,这意味着它可以
- 提取数据,(可能复制项目)
- 转换数据
- 将数据加载到某个地方。
数据将通过项目在ETL操作中传播,可以有不同类型的项目(我们将在后面详细介绍。)
链操作消耗一个项目以创建一个新的项目或一个迭代器。目的是始终单独处理数据。例如,如果我们正在导入客户,我们尽量不在内存中同时处理超过一个客户的数据。
工作原理的示例
在文档的后面部分,我们将提供带有示例数据的更详细的真实用例。
在最简单的情况下,链接收一个包含2个项目的输入迭代器,每个链操作都会处理这两个项目。这可以是客户列表,每个操作都会更改项目。
在下面的示例中,迭代器发送一个单独的项目。第一个操作然后将发送包含2个项目的GroupedItems。第一个项目可能是一个客户,然后我们在操作1中检索该客户的每个订单。
我们还可以对项目进行分组,以进行汇总。链接收一个包含2个项目的迭代器,第一个操作处理这两个项目。它为第一个项目断开链,并返回项目1和项目2的聚合。这可以用来计算客户数量。这种分组可能会使用更多内存,因此应该谨慎使用。
链也可以分割,这允许对同一项目执行两个不同的操作。
创建链。
有两种编写链的方法,要么你自己编写代码,要么用yaml文件描述链。
- 使用PHP代码自行启动每个操作,这不被推荐!
- 使用yaml文件描述链。
请参阅使用yaml配置描述链,你可以在子链和更复杂的案例的文档上查看。
创建自己的操作。
请参阅自定义操作文档
常见问题解答
请参阅常见问题解答



