flow php

Example: Path partitions

Topic: Partitioning

Code

<?php

declare(strict_types=1);

use function Flow\ETL\DSL\{data_frame, from_path_partitions, ref, to_stream};

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

data_frame()
    ->read(from_path_partitions(__DIR__ . '/input/color=*/sku=*/*.csv'))
    ->withEntry('path', ref('path')->strReplace(__DIR__, '/__ABSOLUTE_PATH__'))
    ->collect()
    ->write(to_stream(__DIR__ . '/output.txt', truncate: false))
    ->run();

Output

+-------------------------------------------------------------------------------------+-------------------------------------+
|                                                                                path |                          partitions |
+-------------------------------------------------------------------------------------+-------------------------------------+
|  file://__ABSOLUTE_PATH__/input/color=blue/sku=PRODUCT01/65c7e9bc4460a568233195.csv |  {"color":"blue","sku":"PRODUCT01"} |
|  file://__ABSOLUTE_PATH__/input/color=blue/sku=PRODUCT02/65c7e9bc446c2326068326.csv |  {"color":"blue","sku":"PRODUCT02"} |
| file://__ABSOLUTE_PATH__/input/color=green/sku=PRODUCT01/65c7e9bc44305321518126.csv | {"color":"green","sku":"PRODUCT01"} |
| file://__ABSOLUTE_PATH__/input/color=green/sku=PRODUCT02/65c7e9bc44421020940545.csv | {"color":"green","sku":"PRODUCT02"} |
| file://__ABSOLUTE_PATH__/input/color=green/sku=PRODUCT03/65c7e9bc44515031584752.csv | {"color":"green","sku":"PRODUCT03"} |
|   file://__ABSOLUTE_PATH__/input/color=red/sku=PRODUCT01/65c7e9bc4386f958078278.csv |   {"color":"red","sku":"PRODUCT01"} |
|   file://__ABSOLUTE_PATH__/input/color=red/sku=PRODUCT02/65c7e9bc440fa083889144.csv |   {"color":"red","sku":"PRODUCT02"} |
|   file://__ABSOLUTE_PATH__/input/color=red/sku=PRODUCT03/65c7e9bc44209401416287.csv |   {"color":"red","sku":"PRODUCT03"} |
+-------------------------------------------------------------------------------------+-------------------------------------+
8 rows

Contributors

Join us on GitHub external resource
scroll back to top