Extracts
Read from various data sources.
Transforms
Shape and optimize for your needs.
Loads
Store and secure in one of many available data sinks.
Examples:
Code
<?php
declare(strict_types=1);
use function Flow\ETL\DSL\{data_frame, dense_rank, from_array, ref, to_stream, window};
require __DIR__ . '/../../../autoload.php';
$df = data_frame()
->read(
from_array([
['id' => 1, 'name' => 'Greg', 'department' => 'IT', 'salary' => 6000],
['id' => 2, 'name' => 'Michal', 'department' => 'IT', 'salary' => 5000],
['id' => 3, 'name' => 'Tomas', 'department' => 'Finances', 'salary' => 11_000],
['id' => 4, 'name' => 'John', 'department' => 'Finances', 'salary' => 9000],
['id' => 5, 'name' => 'Jane', 'department' => 'Finances', 'salary' => 14_000],
['id' => 6, 'name' => 'Janet', 'department' => 'Finances', 'salary' => 4000],
])
)
->withEntry('rank', dense_rank()->over(window()->partitionBy(ref('department'))->orderBy(ref('salary')->desc())))
->sortBy(ref('department'), ref('rank'))
->collect()
->write(to_stream(__DIR__ . '/output.txt', truncate: false))
->run();
Output
+----+--------+------------+--------+------+
| id | name | department | salary | rank |
+----+--------+------------+--------+------+
| 5 | Jane | Finances | 14000 | 1 |
| 3 | Tomas | Finances | 11000 | 2 |
| 4 | John | Finances | 9000 | 3 |
| 6 | Janet | Finances | 4000 | 4 |
| 1 | Greg | IT | 6000 | 1 |
| 2 | Michal | IT | 5000 | 2 |
+----+--------+------------+--------+------+
6 rows