11![ img] ( docs/flow_php_banner_02_2022.png )
22
3- Flow is a PHP based, strongly typed ETL (Extract Transform Load), asynchronous data processing library with constant memory consumption.
3+ Flow is a PHP- based, strongly typed ETL (Extract Transform Load), asynchronous data processing library with constant memory consumption.
44
55[ ![ Latest Stable Version] ( https://poser.pugx.org/flow-php/flow/v )] ( https://packagist.org/packages/flow-php/flow )
66[ ![ Latest Unstable Version] ( https://poser.pugx.org/flow-php/flow/v/unstable )] ( https://packagist.org/packages/flow-php/flow )
77[ ![ License] ( https://poser.pugx.org/flow-php/flow/license )] ( https://packagist.org/packages/flow-php/flow )
88[ ![ Test Suite] ( https://github.com/flow-php/flow/actions/workflows/test-suite.yml/badge.svg?branch=1.x )] ( https://github.com/flow-php/flow/actions/workflows/test-suite.yml )
99
10- Supported PHP versions
10+ Supported PHP versions: [ ![ PHP 8.1 ] ( https://img.shields.io/badge/php-~8.1-8892BF.svg )] ( https://php.net/ ) [ ![ PHP 8.2 ] ( https://img.shields.io/badge/php-~8.2-8892BF.svg )] ( https://php.net/ )
1111
12- * [ ![ Supported PHP Version] ( https://img.shields.io/badge/php-~8.1-8892BF.svg )] ( https://php.net/ )
13- * [ ![ Supported PHP Version] ( https://img.shields.io/badge/php-~8.2-8892BF.svg )] ( https://php.net/ )
12+ ## Features
13+
14+ * low and constant memory consumption
15+ * asynchronous data processing
16+ * reading from any data source
17+ * writing to any data source
18+ * rich collection of data transformation functions
19+ * direct access to remote filesystems
20+ * partitioning
21+ * grouping & aggregating
22+ * remote file processing
23+ * joins
24+ * sorting
25+ * displaying datasets as ASCII table
26+ * validation against the schema
27+ * window functions
28+ * caching
1429
1530📈[ Project Roadmap] ( https://github.com/orgs/flow-php/projects/1 )
1631
1732## Installation
1833
1934This package is a [ monorepo] ( https://tomasvotruba.com/blog/2019/10/28/all-you-always-wanted-to-know-about-monorepo-but-were-afraid-to-ask/ ) .
20- Please check below packages and select only those that you are going to use,
35+ Please check the below packages and select only those that you are going to use,
2136this will reduce the number of unnecessary dependencies in your project (less maintenance).
2237
2338- [ ETL] ( src/core/etl/README.md )
@@ -38,10 +53,12 @@ this will reduce the number of unnecessary dependencies in your project (less ma
3853 - [ text] ( src/adapter/etl-adapter-text/README.md )
3954 - [ xml] ( src/adapter/etl-adapter-xml/README.md )
4055- Libraries
41- - [ array-dot] ( src/lib/array-dot/README.md ) - auto included
56+ - [ array-dot] ( src/lib/array-dot/README.md )
4257 - [ doctrine-dbal-bulk] ( src/lib/doctrine-dbal-bulk/README.md )
58+ - [ Google Dremel algorithm] ( src/lib/dremel/README.md )
59+ - [ Parquet] ( src/lib/parquet/README.md )
4360
44- For example if you want to work with json/csv files here are dependencies you will need to install:
61+ For example, if you want to work with JSON/CSV files here are the dependencies you will need to install:
4562
4663``` shell
4764composer require flow-php/etl:^0.1 flow-php/etl-adapter-csv:^0.1 flow-php/etl-adapter-json:^0.1
@@ -53,40 +70,22 @@ In order to understand how Flow works, please read [documentation](src/core/etl/
5370
5471### [ Usage Examples] ( examples/README.md )
5572
56- ## Features
57-
58- * low and constant memory consumption
59- * asynchronous data processing
60- * reading from any data source
61- * writing to any data source
62- * rich collection of data transformation functions
63- * direct access to remote filesystems
64- * partitioning
65- * grouping & aggregating
66- * remote files processing
67- * joins
68- * sorting
69- * displaying datasets as ASCII table
70- * validation against schema
71- * window functions
72- * caching
73-
74- ## Asynchronous Processing
75-
76- * [ etl-adapter-amphp] ( https://github.com/flow-php/etl-adapter-amphp )
77- * [ etl-adapter-reactphp] ( https://github.com/flow-php/etl-adapter-reactphp )
78-
7973## Building blocks
8074
8175* DataFrame - Lazy data processing frame.
8276* Rows - Immutable collection of ` Row ` objects.
8377* Row - Immutable, strongly typed collection of ` Entry ` objects.
84- * Entry - Immutable, strongly typed object representing cell in a row.
78+ * Entry - Immutable, strongly typed object representing a cell in a row.
8579* ** E** xtractor (Reader) - Memory safe, Data Source returning \Generator, yielding ` Rows ` to the ` Pipeline `
8680* ** T** ransformer - Data transformer receiving and returning ` Rows ` (in most cases transformer), one instance of ` Rows ` at once.
87- * ** L** oader (Writer) - Memory safe representation of Data Sink, responsibility of Loader is to write ` Rows ` into destination storage, one at time.
81+ * ** L** oader (Writer) - Memory safe representation of Data Sink, the responsibility of Loader is to write ` Rows ` into destination storage, one at time.
8882* Pipeline - Interface representing ETL process, each received ` Rows ` instanced is passed through all ` Pipes ` , also responsible for error handling.
89- * Pipe - Loader of Transformer instance existing in ` Pipes ` collection.
83+ * Pipe - Loader of Transformer instance existing in the ` Pipes ` collection.
84+
85+ ## Asynchronous Processing
86+
87+ * [ etl-adapter-amphp] ( https://github.com/flow-php/etl-adapter-amphp )
88+ * [ etl-adapter-reactphp] ( https://github.com/flow-php/etl-adapter-reactphp )
9089
9190### GitHub Stars
9291
0 commit comments