Sinks
Deliver streams straight into your own infrastructure, already corporate-action correct.
Destinations
StreamingKafka, Redpanda, Pulsar, AWS Kinesis
DatabasesPostgreSQL, ClickHouse, TimescaleDB
WarehousesSnowflake, BigQuery, Databricks, Redshift
Object storageS3, GCS, Azure Blob — Parquet, partitioned by day and instrument
Correct on write
Rows land with the multiplier already applied and the block it was valid at carried alongside. Your warehouse inherits the corporate-action logic rather than you reimplementing it in dbt — which is exactly where the incumbents’ arithmetic error gets copied into customer infrastructure today.
CREATE TABLE tape ( tape_sequence UInt64, token_symbol LowCardinality(String), venue LowCardinality(String), price Decimal128(18), -- USD per token price_per_share Decimal128(18), -- USD per underlying share multiplier Decimal128(18), session LowCardinality(String), underlying_market_open UInt8, premium_bps Decimal128(8), block_number UInt64, transaction_hash FixedString(66), block_time DateTime64(3, 'UTC'), confirmation_state LowCardinality(String), code_version LowCardinality(String)) ENGINE = ReplacingMergeTree(tape_sequence)ORDER BY (token_symbol, block_time, tape_sequence);ReplacingMergeTree keyed on the tape sequence makes reorg compensation idempotent: a corrected record replaces its predecessor without any deduplication logic on your side.
Backfill
A sink can be seeded from history and then transition to live through the same configuration. There is no separate backfill job to write or schedule, and no window where the two disagree.