Skip to content

multi_store_writer

sqllocks_spindle.output.multi_store_writer

MultiStoreWriter — write Spindle output to multiple targets concurrently.

Wraps any combination of Spindle writers (DeltaWriter, WarehouseBulkWriter, FabricSqlDatabaseWriter, EventhouseWriter, etc.) and fans out write calls to all of them in parallel via ThreadPoolExecutor.

Example::

from sqllocks_spindle.output import DeltaWriter, MultiStoreWriter
from sqllocks_spindle.fabric import WarehouseBulkWriter

writer = MultiStoreWriter([
    DeltaWriter(output_dir="./delta"),
    WarehouseBulkWriter(connection_string="..."),
])
results = writer.write_all(result.tables)

Classes

SpindleWriter

Bases: Protocol

Protocol for any Spindle output writer that supports write_all().

MultiStoreResult dataclass

Aggregated result from a MultiStoreWriter.write_all() call.

MultiStoreWriter

Fan out Spindle table writes to multiple writers in parallel.

Parameters:

Name Type Description Default
writers list[SpindleWriter]

List of writer instances. Each must implement write_all().

required
max_workers int | None

Max parallel writer threads. Defaults to number of writers.

None
raise_on_error bool

If True, re-raise the first writer exception after all writes complete. If False (default), collect errors in the result.

False
Methods:
write_all(tables, **kwargs)

Write all tables to every configured writer in parallel.

Parameters:

Name Type Description Default
tables dict[str, DataFrame]

Table name -> DataFrame mapping (e.g. result.tables).

required
**kwargs Any

Forwarded to each writer's write_all() call.

{}

Returns:

Type Description
MultiStoreResult

MultiStoreResult with per-writer results and any errors.