flow-php/flow

PHP ETL - 提取、转换、加载 - 数据处理框架

0.9.2 2024-08-13 20:50 UTC

README

img

Flow 是一个基于 PHP 的、强类型数据处理的框架,具有低内存占用。

Latest Stable Version Latest Unstable Version License Test Suite

支持的 PHP 版本: PHP 8.1 PHP 8.2 PHP 8.3

Flow PHP

Flow 是最先进的 PHP ETL (提取、转换、加载) 框架。

<?php

declare(strict_types=1);

use function Flow\ETL\Adapter\Parquet\{from_parquet, to_parquet};
use function Flow\ETL\DSL\{data_frame, lit, ref, sum, to_output, overwrite};
use Flow\ETL\Filesystem\SaveMode;

require __DIR__ . '/vendor/autoload.php';

data_frame()
    ->read(from_parquet(__DIR__ . '/orders_flow.parquet'))
    ->select('created_at', 'total_price', 'discount')
    ->withEntry('created_at', ref('created_at')->cast('date')->dateFormat('Y/m'))
    ->withEntry('revenue', ref('total_price')->minus(ref('discount')))
    ->select('created_at', 'revenue')
    ->groupBy('created_at')
    ->aggregate(sum(ref('revenue')))
    ->sortBy(ref('created_at')->desc())
    ->withEntry('daily_revenue', ref('revenue_sum')->round(lit(2))->numberFormat(lit(2)))
    ->drop('revenue_sum')
    ->write(to_output(truncate: false))
    ->withEntry('created_at', ref('created_at')->toDate('Y/m'))
    ->saveMode(overwrite())
    ->write(to_parquet(__DIR__ . '/daily_revenue.parquet'))
    ->run();
$ php daily_revenue.php
+------------+---------------+
| created_at | daily_revenue |
+------------+---------------+
|    2023/10 |    206,669.74 |
|    2023/09 |    227,647.47 |
|    2023/08 |    237,027.31 |
|    2023/07 |    240,111.05 |
|    2023/06 |    225,536.35 |
|    2023/05 |    234,624.74 |
|    2023/04 |    231,472.05 |
|    2023/03 |    231,697.36 |
|    2023/02 |    211,048.97 |
|    2023/01 |    225,539.81 |
+------------+---------------+
10 rows

社区贡献

Flow PHP 不仅仅是一个工具,它是一个热爱数据处理和 PHP 的开发者不断成长的社区。我们坚信协作的力量,并欢迎各种形式的贡献。无论是修复一个错误,提出一个新功能,还是改进我们的文档,您的贡献对 Flow PHP 的发展至关重要。

如何贡献

  • 提交错误报告和功能请求:遇到问题或有改进的想法?在我们的 GitHub 仓库中提交一个问题。请提供清晰的描述,如果可能,提供重现错误的步骤或功能请求的详细信息。
  • 代码贡献:想直接影响 Flow PHP 的发展?查看我们的问题跟踪器,了解您可以贡献的领域。从简单的修复到重大功能添加,任何帮助都受欢迎。
  • 改进文档:良好的文档对任何项目的成功至关重要。如果您发现文档中的空白、错误或不清楚的地方,我们鼓励您提交更新。
  • 社区支持:通过在我们的社区频道、Stack Overflow 或其他 Flow PHP 用户聚集的论坛上回答问题来帮助其他用户。
  • 传播信息:分享您使用 Flow PHP 的经验,撰写博客文章、教程,或在聚会和会议上发言。让其他人知道 Flow PHP 如何帮助您的项目!
  • 留下 GitHub Star:如果您发现 Flow PHP 有用,请在 GitHub 上给它一个 star。您的 star 是一种简单而强大的支持方式,有助于其他人发现我们的项目。

贡献指南

为确保协作过程顺利,我们制定了贡献指南。请在开始工作之前花点时间阅读我们的贡献指南。这将帮助您了解我们的流程,使贡献变得轻松。

有问题吗?

如果您对贡献有任何疑问,请随时联系我们。我们非常乐意提供指导和帮助。

加入我们,共同塑造PHP数据处理的未来——每一项贡献,无论大小,都意义重大!

GitHub Star

Star History Chart

赞助商

Flow PHP由以下公司赞助:

  • Blackfire - 最佳PHP性能分析和管理工具!