snowflake
Snowflake Time Travel Audit
Compare a Snowflake table to its state 24 hours ago using AT(OFFSET ⇒ -86400). Lineage shows the historical scan as a separate source.
The lineage
The SQL
CREATE OR REPLACE TABLE customers (
customer_id NUMBER,
email STRING,
segment STRING,
updated_at TIMESTAMP
);
CREATE OR REPLACE VIEW v_customer_changes AS
SELECT
cur.customer_id,
cur.email AS email_now,
prev.email AS email_yesterday,
cur.segment AS segment_now,
prev.segment AS segment_yesterday
FROM customers cur
LEFT JOIN customers AT (OFFSET => -86400) prev
ON cur.customer_id = prev.customer_id
WHERE cur.email <> prev.email OR cur.segment <> prev.segment;
What the lineage shows
- email_now and email_yesterday share a parent table but distinct logical sources in lineage.
- Time travel acts like a second virtual source.
- Use this to audit silent attribute changes.