v0.5.0 2020-04-26 20:25 UTC

This package is auto-updated.

Last update: 2024-09-27 06:15:41 UTC


README

使用 ETL 模式创建简单的导入。

Latest Stable Version Minimum PHP Version GitHub issues GitHub license

安装

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