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 |
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. |
required |
**kwargs
|
Any
|
Forwarded to each writer's |
{}
|
Returns:
| Type | Description |
|---|---|
MultiStoreResult
|
MultiStoreResult with per-writer results and any errors. |