Define explicit column types for data sources that lack strict schema support (like CSV, XML, or JSON). This ensures consistent type handling and avoids issues when early rows contain null or empty values.
Examples
Schema
Description
Documentation
Code
<?php
declare(strict_types=1);
use function Flow\ETL\DSL\{bool_schema, data_frame, from_array, int_schema, schema, str_schema, to_output};
use Flow\ETL\Loader\StreamLoader\Output;
use Flow\ETL\Schema\Metadata;
require __DIR__ . '/vendor/autoload.php';
$schema = schema(
int_schema('id', $nullable = false),
str_schema('name', $nullable = true),
bool_schema('active', $nullable = false, Metadata::empty()->add('key', 'value')),
);
data_frame()
->read(
from_array([
['id' => 1, 'name' => 'Product 1', 'active' => true],
['id' => 2, 'name' => 'Product 2', 'active' => false],
['id' => 3, 'name' => 'Product 3', 'active' => true],
])->withSchema($schema)
)
->collect()
->write(to_output(truncate: false, output: Output::schema))
->run();