All examples
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

customers (now)customers AT(-1d)v_customer_changes
customers (live) + customers AT(OFFSET) → v_customer_changes.

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.