camillebaronnet / php-etl
v0.5.0
2020-04-26 20:25 UTC
Requires
- php: ^7.1
- ext-curl: *
- symfony/serializer: ^4.3 || ^5.0
Requires (Dev)
- phpunit/phpunit: ^7.5
- symfony/var-dumper: ^5.0
This package is auto-updated.
Last update: 2024-09-27 06:15:41 UTC
README
使用 ETL 模式创建简单的导入。
安装
composer require camillebaronnet/php-etl
使用方法
此示例从一些 Github 仓库中提取数据,并应用一些转换
<?php use Camillebaronnet\ETL\Etl; use Camillebaronnet\ETL\Extractor\Http; use Camillebaronnet\ETL\Loader\DebugLoader; use Camillebaronnet\ETL\Transformer\DateTime; use Camillebaronnet\ETL\Transformer\Decode; use Camillebaronnet\ETL\Transformer\Flatten; use Camillebaronnet\ETL\Transformer\Map; use Camillebaronnet\ETL\Transformer\Sleep; $etl = (new Etl) ->extract(Http::class, ['url' => 'https://api.github.com/users/camillebaronnet/repos']) ->add(Decode::class) ->add(Sleep::class, ['seconds' => .2]) ->add(Flatten::class, ['glue' => '_']) ->add(Map::class, [ 'fields' => [ 'id', 'name', 'full_name' => 'fullName', 'owner_login' => 'ownerLogin', 'owner_url' => 'ownerUrl', 'url', 'ssh_url' => 'sshUrl', 'created_at' => 'createdAt' ] ]) ->add(DateTime::class, [ 'fields' => ['createdAt'], 'from' => 'Y-m-d\TH:i:s\Z', 'to' => 'd/m/Y', ]) ; $etl->process(DebugLoader::class);
过程说明
-
提取:提取可以输出一个或多个项目
-
转换:转换步骤将上一步(提取器或转换器)的结果应用于操作,并可选择将输入分割成多个项目子集(例如,使用 解码)。
-
加载:加载器可以放置在管道末尾或转换器之间。可以设置多个加载器。
集合
提取器
转换器
加载器
可扩展
您可以通过实现相应的接口轻松创建自己的自定义提取器、转换器、加载器或策略。
提交您的。发送一个 pull-request