If history means changed versions by key, define Table1 as a batch materialized view and feed it to AUTO CDC FROM SNAPSHOT; its source can be a table or view, so the CSV doesn't need streaming semantics (Python datasets, snapshot API).
from pyspark import pipelines as dp
dp.create_streaming_table("Table2")
dp.create_auto_cdc_from_snapshot_flow(
target="Table2",
source="Table1",
keys=["id"],
stored_as_scd_type=2,
)
Replace id with the column or columns that uniquely identify a source row; SCD Type 2 adds a version when values for an existing key change (snapshot API, CDC examples). This API requires serverless Lakeflow pipelines or the Pro or Advanced edition (CDC requirements).
The table/view form reads one snapshot per update; if snapshots can accumulate between updates, use the documented version-function source to process them in order (snapshot examples).
append_flow requires streaming input unless once=True, which runs batch input once; skipChangeCommits ignores modifying commits, so it won't archive Table1 overwrites (append flow, Delta streaming).
Use regular updates because a full refresh clears streaming-table data and flow checkpoints before rebuilding from available source data (update semantics).
If history means every delivery row, land each CSV as a new file and ingest Table2 directly with Auto Loader (Auto Loader).