Stop Using Fragile Data: Fabric Snapshots Deliver The ONLY Version of Truth
Think your data is stable? Think again.
Your warehouse is basically a construction zone—ETL is rewriting tables, pipelines are mid-write, replicas are copying chaos, and your dashboards refresh right through the mess. No wonder finance reruns a report and gets different answers.
This episode breaks down exactly why your analytics feel cursed—and the one Fabric feature that fixes everything: Snapshots. Zero-copy, audit-ready, point-in-time truth that never drifts.
If you’ve ever asked “Why did this number change?” …this episode will blow your mind.
Most teams trust “live data” without realizing how unstable it actually is. Your analytics are constantly mutating—ETL loads rewrite history, schema shifts break reproducibility, and dashboards refresh while pipelines are mid-write. The result? Multiple “versions of truth,” no reproducibility, broken trust, and executives asking questions you can’t answer. This episode breaks down why your data is fragile, how your architecture is setting you up for failure, and why Microsoft Fabric Warehouse Snapshots are the only reliable way to guarantee stable, repeatable, audit-ready analytics at scale. You’ll learn how snapshots freeze a moment in time—transactionally consistent, read-only, and zero-copy—so pipelines can change, but your truth doesn’t. If your dashboards wobble during ETL…
If finance reruns reports and gets different answers…
If audits require restoring backups…
Then Snapshots are your new best friend. What You Will Learn (SEO-Rich Topics & Benefits) 1. Why Your “Live Data” Is Fragile and Unreliable We break down every failure mode modern data teams face:
- ETL collisions causing partial data reads
- Schema drift breaking reproducibility
- Read replicas copying volatility instead of certainty
- CSV exports with no lineage or audit trail
- Data science pipelines training on shifting baselines
- Month-end numbers changing after sign-off
- Dashboards refreshing while tables are mid-write
- The silent cost: lost trust, wasted cycles, and decision paralysis
2. The Real Root Cause: Concurrency Without Isolation Your warehouse is a construction site during loads. But your analysts are still walking through it. Snapshots solve this by separating production churn from decision-grade truth. 3. Fabric Warehouse Snapshots — What They Actually Guarantee You’ll learn the real contract:
- Point-in-time consistency
- No half-written rows
- No drifting results tomorrow
- Zero-copy metadata pointer architecture
- Immutable state for auditing, analysis, and AI training
- Seamless client binding — same name, new timestamp
- Purview-driven governance and RBAC enforcement
4. Why Read Replicas Don’t Save You Replicas scale reads, but they mirror mutations, schema shocks, and partial loads. Snapshots freeze truth. Replicas freeze nothing. 5. Real Scenarios Where Snapshots Prevent Disaster We walk through true-to-life examples:
- Dashboards showing false dips during nightly loads
- Finance month-end totals drifting after ETL reprocessing
- Machine learning models training on shifting numeric types
- Audit teams asking for “as-of” data requiring full DB restores
- Late facts ruining daily sales metrics
- Analysts manually exporting CSVs to protect themselves
6. How Fabric Snapshots Rebuild Trust Across the Business With snapshots you get:
- Reproducible queries
- Consistent KPIs
- Stable semantics in Power BI
- Audit replay in minutes
- Month-end that doesn’t break
- ETL that runs without warning analysts “DON’T REFRESH”
- Data science baselines that don’t drift
- No more CSV sprawl
- No more cloning warehouses to freeze a state
7. The Engineering Patterns That Actually Work (Templates Included) You’ll learn the three battle-tested patterns every mature data team uses: Pattern 1: Pre-ETL Snapshot for Query Stability Freeze a clean read surface before ingestion begins.
Analysts read the snapshot; pipelines mutate safely behind the curtain. Pattern 2: Month-End Snapshot for Reproducible Finance Freeze the fiscal cutoff. Finance dashboards point to one stable state.
No drift, no surprises, no “Why did September change?” Pattern 3: Audit Replay — Without Restores Query the exact state as-of a date, including lineage and logs.
Produce evidence in minutes, not days. Detailed SEO-Optimized Section-by-Section Summary Why Your Data Is Fragile — And Why You Keep Getting Different Answers This episode explains how “freshness” creates volatility:
- ETL processes rewrite facts during reporting hours
- Analysts hit tables mid-write
- Aggregates are recalculated during dashboard refreshes
- Schema changes cause data drift
- Late-arriving facts wreck reproducibility
- Read replicas simply copy chaos across servers
If you can’t run the same query tomorrow and reproduce yesterday’s answer?
You don’t have analytics—you have turbulence. Fabric Snapshots as the Cure for Volatile Data Fabric Warehouse Snapshots give you:
✔ Deterministic answers
✔ Stable P&L
✔ Audit-proof history
✔ Zero-copy retention
✔ Isolation from pipeline churn
✔ Point-in-time semantics
✔ Governance built-in Snapshots freeze a database state with metadata pointers.
You pay for governance and reproducibility, not duplicate storage. How Snapshots Fit Into Microsoft Fabric Architecture We explore where snapshots sit relative to:
- OneLake
- Data Warehouse
- Lakehouse
- Power BI semantic models
- Purview governance
- ETL pipelines and orchestration
- Dataflows and shortcuts
The secret? Snapshots act as a temporal control surface above everything else. How to Implement Snapshots (With T-SQL Patterns) You’ll learn:
- How to create snapshots
- How to roll them forward after validation
- How to query them in Power BI
- How to parameterize datasets
- How to enforce RBAC and Purview labels
- How to structure pipelines around them
Included T-SQL patterns for:
- Creating snapshot baselines
- Rolling timestamps forward
- Querying as a snapshot
- Listing all snapshots
- Designing retention policies
Governance That Actually Holds Up Under Audit We cover:
- RBAC for snapshot control
- Purview labels inherited automatically
- DLP controls for sensitive exports
- Snapshot metadata catalogs
- Retention strategy (daily, month-end, quarter-end)
- Lineage linking snapshots → pipelines → transformations
- Audit replay workflow
Cost Control and Zero-Copy Architecture Snapshots store metadata, not data.
You avoid:
❌ Warehouse cloning fees
❌ Blob duplication
❌ Storage sprawl
❌ Hidden CSV caches
❌ Pipeline restarts Snapshots give you versioning with almost zero overhead.
Become a supporter of this podcast: https://www.spreaker.com/podcast/m365-show-podcast--6704921/support.
Follow us on:
LInkedIn
Substack
1
00:00:00,000 --> 00:00:01,760
Your live analytics aren't truth.
2
00:00:01,760 --> 00:00:04,320
They're a constantly mutating rumor with charts.
3
00:00:04,320 --> 00:00:05,960
You pull a number, ETL sneezes,
4
00:00:05,960 --> 00:00:08,200
and that number changes before the meeting ends.
5
00:00:08,200 --> 00:00:11,520
Then executives ask which version is right, spoiler, none,
6
00:00:11,520 --> 00:00:13,800
because the state you query no longer exists.
7
00:00:13,800 --> 00:00:15,040
Here's the fix.
8
00:00:15,040 --> 00:00:17,320
Fabric warehouse snapshots lock a point in time,
9
00:00:17,320 --> 00:00:20,200
transactionally consistent, read only, zero copy.
10
00:00:20,200 --> 00:00:21,880
You get one stable version of truth
11
00:00:21,880 --> 00:00:24,480
without pausing pipelines or cloning warehouses.
12
00:00:24,480 --> 00:00:27,080
In the next minutes, I'll show you why your data is fragile,
13
00:00:27,080 --> 00:00:28,600
why read replicas don't save you,
14
00:00:28,600 --> 00:00:31,000
and exactly how snapshots give query stability,
15
00:00:31,000 --> 00:00:33,560
audit reproducibility, and lower cost.
16
00:00:33,560 --> 00:00:36,120
Why your data is fragile, the failure modes.
17
00:00:36,120 --> 00:00:38,840
Volatility isn't speed, it's uncertainty.
18
00:00:38,840 --> 00:00:41,760
The average user confuses fresh with reliable,
19
00:00:41,760 --> 00:00:44,440
then wonders why month end keeps slipping.
20
00:00:44,440 --> 00:00:47,480
Decisions don't need adrenaline, they need reproducibility.
21
00:00:47,480 --> 00:00:50,160
If you can't rerun the same query tomorrow
22
00:00:50,160 --> 00:00:52,120
and get the same answer for yesterday,
23
00:00:52,120 --> 00:00:53,880
you don't have analytics, you have gossip.
24
00:00:53,880 --> 00:00:55,160
Let's talk ETL turbulence.
25
00:00:55,160 --> 00:00:56,840
Your pipelines run batch windows,
26
00:00:56,840 --> 00:00:59,640
late arriving facts slide in, reprocessing kicks off
27
00:00:59,640 --> 00:01:01,840
because someone discovered a data quality hiccup.
28
00:01:01,840 --> 00:01:03,520
Meanwhile, analysts are querying,
29
00:01:03,520 --> 00:01:08,040
they hit tables mid-ride, half-baked states propagate into dashboards.
30
00:01:08,040 --> 00:01:09,560
The thing most people miss is simple.
31
00:01:09,560 --> 00:01:12,080
Your warehouse is temporarily a construction site
32
00:01:12,080 --> 00:01:14,160
and you keep giving tours with the scaffolding up.
33
00:01:14,160 --> 00:01:16,600
Now schema drift during loads, adding columns,
34
00:01:16,600 --> 00:01:18,680
changing types, recalculating aggregates
35
00:01:18,680 --> 00:01:21,120
completely normal in modern analytics.
36
00:01:21,120 --> 00:01:23,640
But if you allow live queries during those shifts,
37
00:01:23,640 --> 00:01:25,720
you break reproducibility.
38
00:01:25,720 --> 00:01:28,560
Last Tuesday's model trained on a table with decimal tentator,
39
00:01:28,560 --> 00:01:30,440
today it's decimal 12 on four.
40
00:01:30,440 --> 00:01:32,240
Tomorrow it's split into two tables.
41
00:01:32,240 --> 00:01:35,240
You can't retune models when last Tuesday no longer exists.
42
00:01:35,240 --> 00:01:37,240
That's not agile, that's amnesia.
43
00:01:37,240 --> 00:01:39,160
Read replicas, everyone's comfort blanket.
44
00:01:39,160 --> 00:01:41,880
Replicas replicate change, not certainty.
45
00:01:41,880 --> 00:01:44,480
They mirror whatever lands, good rights, bad rights
46
00:01:44,480 --> 00:01:46,720
and schema shocks just distributed faster.
47
00:01:46,720 --> 00:01:48,080
Yes, they help throughput.
48
00:01:48,080 --> 00:01:50,680
No, they don't give you a consistent point in time guarantee.
49
00:01:50,680 --> 00:01:52,520
That's like photocopying a messy whiteboard.
50
00:01:52,520 --> 00:01:54,600
Now you have more messy whiteboards.
51
00:01:54,600 --> 00:01:56,960
Manual exports, masquerading is truth.
52
00:01:56,960 --> 00:02:01,360
CSV sprawl with no lineage, no RBAC and zero auditability.
53
00:02:01,360 --> 00:02:04,200
A folder named Final Final 2 isn't governance.
54
00:02:04,200 --> 00:02:05,800
It's performance art.
55
00:02:05,800 --> 00:02:07,400
When audits arrive and ask,
56
00:02:07,400 --> 00:02:10,400
prove these numbers match system of record as of close.
57
00:02:10,400 --> 00:02:12,040
Your screenshots don't count.
58
00:02:12,040 --> 00:02:13,840
Provenance collapses on contact.
59
00:02:13,840 --> 00:02:16,160
Data science instability is the silent killer.
60
00:02:16,160 --> 00:02:18,240
Feature stores expect stable baselines.
61
00:02:18,240 --> 00:02:21,080
If the underlying data mutates mid-training or labels drift
62
00:02:21,080 --> 00:02:23,760
because ETL reprocessed without a frozen view,
63
00:02:23,760 --> 00:02:25,160
your experiments are not experiments.
64
00:02:25,160 --> 00:02:26,480
They're accidents with charts.
65
00:02:26,480 --> 00:02:29,360
You can't compare models if the ground moves under each run.
66
00:02:29,360 --> 00:02:32,400
Cost of chaos, analysts, rerun reports,
67
00:02:32,400 --> 00:02:35,920
re-explain variances and escalate to engineering.
68
00:02:35,920 --> 00:02:38,360
People build private caches to protect themselves,
69
00:02:38,360 --> 00:02:41,080
which multiplies copies and multiplies risk.
70
00:02:41,080 --> 00:02:43,320
Projects stall because executives lose trust.
71
00:02:43,320 --> 00:02:46,280
Once trust erodes, every number requires a meeting and a priest.
72
00:02:46,280 --> 00:02:49,240
Before we continue, you need to understand the real failure mode.
73
00:02:49,240 --> 00:02:50,960
Concurrency without isolation.
74
00:02:50,960 --> 00:02:54,360
You're letting right transactions and read queries collide in time.
75
00:02:54,360 --> 00:02:57,840
And yes, you bought a read replica to offload traffic,
76
00:02:57,840 --> 00:03:00,160
but the replica doesn't invent history.
77
00:03:00,160 --> 00:03:01,840
It streams the same moving target.
78
00:03:01,840 --> 00:03:03,480
The truth, you need a freeze frame.
79
00:03:03,480 --> 00:03:04,800
This is where most people mess up.
80
00:03:04,800 --> 00:03:07,640
They try to time their queries between loads, cute.
81
00:03:07,640 --> 00:03:10,760
It's like trying to cross a highway by estimating truck gaps.
82
00:03:10,760 --> 00:03:12,720
You might survive, but the method doesn't scale.
83
00:03:12,720 --> 00:03:15,160
Or they gait the entire warehouse with maintenance windows.
84
00:03:15,160 --> 00:03:16,080
Congratulations.
85
00:03:16,080 --> 00:03:17,840
You traded volatility for downtime.
86
00:03:17,840 --> 00:03:19,720
And your stakeholders still won't wait.
87
00:03:19,720 --> 00:03:21,760
Here's the shortcut nobody teaches.
88
00:03:21,760 --> 00:03:24,200
Stability beats recency for decision making.
89
00:03:24,200 --> 00:03:27,000
Not always, but whenever money, compliance, or accountability
90
00:03:27,000 --> 00:03:28,800
is involved, you need the exact same answers
91
00:03:28,800 --> 00:03:32,200
tomorrow that you saw today for the same timestamped reality.
92
00:03:32,200 --> 00:03:34,840
That requires isolation semantics, not vibes.
93
00:03:34,840 --> 00:03:36,120
Common mistake story.
94
00:03:36,120 --> 00:03:39,760
Last week, a team ran a daily sales dashboard at 858,
95
00:03:39,760 --> 00:03:42,120
right as ETL was loading late orders.
96
00:03:42,120 --> 00:03:45,600
The chart dipped, panic ensued, slacklit up, and by 917,
97
00:03:45,600 --> 00:03:48,200
the crisis vanished because the rest of the batch landed.
98
00:03:48,200 --> 00:03:51,040
The difference between bad day and business as usual
99
00:03:51,040 --> 00:03:53,560
was 15 minutes and zero governance.
100
00:03:53,560 --> 00:03:55,880
Once you nail this principle, volatility is the disease.
101
00:03:55,880 --> 00:03:57,240
Isolation is the treatment.
102
00:03:57,240 --> 00:03:58,240
Everything else clicks.
103
00:03:58,240 --> 00:04:01,120
Replicas handle load, snapshots handle truth.
104
00:04:01,120 --> 00:04:03,720
CSV is handle, personal embarrassment.
105
00:04:03,720 --> 00:04:04,880
Enter snapshots.
106
00:04:04,880 --> 00:04:07,600
They give you read only, transactionally consistent point
107
00:04:07,600 --> 00:04:10,560
in time views with zero copy metadata pointers.
108
00:04:10,560 --> 00:04:13,640
So your analysts query a frozen state while ETL
109
00:04:13,640 --> 00:04:15,440
does its acrobatics out of sight.
110
00:04:15,440 --> 00:04:17,680
No mid-flight surprises, no schema whiplash, no,
111
00:04:17,680 --> 00:04:19,560
don't refresh right now messages.
112
00:04:19,560 --> 00:04:21,840
You stop trusting fragile data and start delivering
113
00:04:21,840 --> 00:04:24,240
a stable, auditable version of truth.
114
00:04:24,240 --> 00:04:26,800
What fabric warehouse snapshots actually guarantee,
115
00:04:26,800 --> 00:04:28,360
certainty, not vibes?
116
00:04:28,360 --> 00:04:30,280
Let's define the contract because feelings
117
00:04:30,280 --> 00:04:31,440
won't pass and audit.
118
00:04:31,440 --> 00:04:34,000
A fabric warehouse snapshot is read only,
119
00:04:34,000 --> 00:04:36,840
point in time, and transactionally consistent.
120
00:04:36,840 --> 00:04:38,360
Translation, when you query it,
121
00:04:38,360 --> 00:04:40,240
you see a complete coherent database
122
00:04:40,240 --> 00:04:43,240
as of a specific timestamp, no half-written rows,
123
00:04:43,240 --> 00:04:46,680
no mid-flight mergers, no oops and index was rebuilding.
124
00:04:46,680 --> 00:04:48,120
It's not a copy you babysit.
125
00:04:48,120 --> 00:04:50,800
It's a frozen view backed by metadata pointers.
126
00:04:50,800 --> 00:04:53,320
The warehouse keeps moving, the snapshot does not.
127
00:04:53,320 --> 00:04:55,720
Snapshot isolation is the spine here.
128
00:04:55,720 --> 00:04:58,440
Your queries read the most recent committed transaction
129
00:04:58,440 --> 00:05:00,360
before the snapshots timestamp.
130
00:05:00,360 --> 00:05:03,240
Not eventually consistent, not give it a few seconds.
131
00:05:03,240 --> 00:05:05,760
Committed, if a batch started but hadn't committed
132
00:05:05,760 --> 00:05:07,920
by that timestamp, it does not exist in that view.
133
00:05:07,920 --> 00:05:10,000
And it will never suddenly appear mid-query.
134
00:05:10,000 --> 00:05:11,840
You get a deterministic slice of time
135
00:05:11,840 --> 00:05:15,240
that stays stable for the life of that snapshot.
136
00:05:15,240 --> 00:05:17,600
Now, the certainty window, you don't need a museum,
137
00:05:17,600 --> 00:05:19,640
you need a library with a return policy.
138
00:05:19,640 --> 00:05:21,400
Practical teams set retention,
139
00:05:21,400 --> 00:05:22,920
so they always have enough history
140
00:05:22,920 --> 00:05:24,680
to reproduce key decisions.
141
00:05:24,680 --> 00:05:26,480
Daily snapshots for 30 days,
142
00:05:26,480 --> 00:05:28,600
plus preserved month and/or quarter and snapshots
143
00:05:28,600 --> 00:05:29,760
you keep longer.
144
00:05:29,760 --> 00:05:31,760
Schedule the capture, name them intelligently,
145
00:05:31,760 --> 00:05:35,880
month and 2025, '09, and stop negotiating with memory.
146
00:05:35,880 --> 00:05:37,680
The catalog tells you which book to pull,
147
00:05:37,680 --> 00:05:39,520
you don't hunt the pages on the floor.
148
00:05:39,520 --> 00:05:41,680
Zero copy design is the cost superpower.
149
00:05:41,680 --> 00:05:44,720
Most of you hoard CSVs like their emergency rations,
150
00:05:44,720 --> 00:05:46,120
each one a full duplicate.
151
00:05:46,120 --> 00:05:48,480
Snapshots aren't that their metadata pointers
152
00:05:48,480 --> 00:05:51,560
that present a stable read of the existing storage.
153
00:05:51,560 --> 00:05:52,880
You aren't cloning terabytes,
154
00:05:52,880 --> 00:05:54,480
you're bookmarking an exact moment.
155
00:05:54,480 --> 00:05:56,640
That means you pay for governance and performance,
156
00:05:56,640 --> 00:05:59,320
not for duplicate bits that will rot in a file share
157
00:05:59,320 --> 00:06:01,440
named archive, do not delete two.
158
00:06:01,440 --> 00:06:02,560
Continuity matters.
159
00:06:02,560 --> 00:06:04,960
The best part is you don't keep rebinding clients.
160
00:06:04,960 --> 00:06:07,640
Your connection string can stay pointed at the snapshot name
161
00:06:07,640 --> 00:06:10,840
while you roll the timestamp forward after ETL validates.
162
00:06:10,840 --> 00:06:12,800
Analysts keep working, the view updates
163
00:06:12,800 --> 00:06:15,520
to the next consistent state without breaking queries.
164
00:06:15,520 --> 00:06:17,320
Think of it like changing the channel's program
165
00:06:17,320 --> 00:06:19,160
while the TV remains on the same input.
166
00:06:19,160 --> 00:06:22,200
No cable juggling, no everyone reconnect messages.
167
00:06:22,200 --> 00:06:24,200
Governance alignment is non-negotiable.
168
00:06:24,200 --> 00:06:27,360
Snapshots aren't a side door, they're first class citizens.
169
00:06:27,360 --> 00:06:30,200
Use our back so only the right people can create view
170
00:06:30,200 --> 00:06:31,840
or roll forward them.
171
00:06:31,840 --> 00:06:34,120
Apply, purview sensitivity labels,
172
00:06:34,120 --> 00:06:36,240
so PII stays labeled in the snapshot,
173
00:06:36,240 --> 00:06:38,280
not magically sanitized by denial.
174
00:06:38,280 --> 00:06:40,520
Turn on audit logs so every creation,
175
00:06:40,520 --> 00:06:44,360
access and update writes evidence you can surface in Power BI.
176
00:06:44,360 --> 00:06:46,040
Lineage helps you connect the snapshot
177
00:06:46,040 --> 00:06:47,960
to the upstream pipelines that produced it,
178
00:06:47,960 --> 00:06:50,360
which is how you answer, where did this number come from?
179
00:06:50,360 --> 00:06:53,720
Without calling five people, here's the shortcut nobody teaches.
180
00:06:53,720 --> 00:06:56,440
Snapshots are a protocol for operational truth.
181
00:06:56,440 --> 00:06:58,560
A handshake between engineering, analytics,
182
00:06:58,560 --> 00:07:02,040
and compliance that says, this is the state we all agree on.
183
00:07:02,040 --> 00:07:04,120
It's not a toggle you flip randomly.
184
00:07:04,120 --> 00:07:05,920
It's the boundary that separates production
185
00:07:05,920 --> 00:07:07,600
churn from decision-grade facts.
186
00:07:07,600 --> 00:07:09,560
Once you treat snapshots like a protocol,
187
00:07:09,560 --> 00:07:12,440
capture validate advance the drama evaporates.
188
00:07:12,440 --> 00:07:15,320
And yes, there are limits because reality exists.
189
00:07:15,320 --> 00:07:17,160
If your retention is 30 days,
190
00:07:17,160 --> 00:07:19,520
and legal ones last year's precise day end,
191
00:07:19,520 --> 00:07:21,280
either preserve the month and snapshot
192
00:07:21,280 --> 00:07:23,560
or extend retention for that domain.
193
00:07:23,560 --> 00:07:26,520
If you mix snapshot tables with live tables in one report,
194
00:07:26,520 --> 00:07:28,080
you reintroduce ambiguity.
195
00:07:28,080 --> 00:07:31,520
If you let anyone roll snapshots forward before validation's pass,
196
00:07:31,520 --> 00:07:33,920
you're back to chaos in a nicer outfit.
197
00:07:33,920 --> 00:07:36,560
The feature is powerful, your discipline makes it useful.
198
00:07:36,560 --> 00:07:38,760
Let me show you exactly how this pays off,
199
00:07:38,760 --> 00:07:41,720
with snapshots semantics you can run heavy ETL,
200
00:07:41,720 --> 00:07:44,720
while analysts keep querying a frozen consistent state.
201
00:07:44,720 --> 00:07:46,440
At month end, you capture once,
202
00:07:46,440 --> 00:07:48,200
point finance at the month and snapshot
203
00:07:48,200 --> 00:07:50,800
and rerun the P&L next week for the exact same result.
204
00:07:50,800 --> 00:07:53,960
During audits, you query the snapshot from the target date
205
00:07:53,960 --> 00:07:57,320
and export evidence with lineage and access logs attached.
206
00:07:57,320 --> 00:07:58,720
All without restoring databases,
207
00:07:58,720 --> 00:08:00,600
cloning warehouses or pausing pipelines.
208
00:08:00,600 --> 00:08:03,080
The reason this works is embarrassingly simple.
209
00:08:03,080 --> 00:08:06,560
Isolation plus immutability beats speed without guarantees.
210
00:08:06,560 --> 00:08:09,640
Replica's increased capacity snapshots increased certainty.
211
00:08:09,640 --> 00:08:12,360
Zero copy pointers give the cost advantage.
212
00:08:12,360 --> 00:08:14,560
Our back labels and audit logs give the governance
213
00:08:14,560 --> 00:08:16,640
you keep promising but never quite deliver.
214
00:08:16,640 --> 00:08:18,840
If you remember nothing else, remember this.
215
00:08:18,840 --> 00:08:20,880
Truth is a timestamp you can name,
216
00:08:20,880 --> 00:08:22,360
not a vibe you can feel.
217
00:08:22,360 --> 00:08:24,480
Now let's lock it in and implement.
218
00:08:24,480 --> 00:08:27,400
How to implement snapshots for zero drama analytics,
219
00:08:27,400 --> 00:08:29,080
T-SQL plus pipelines.
220
00:08:29,080 --> 00:08:31,360
Let's stop theorizing and wire this properly.
221
00:08:31,360 --> 00:08:34,520
The rule, lock the truth first, then load.
222
00:08:34,520 --> 00:08:38,080
Analysts read the frozen view, pipelines churn in the background,
223
00:08:38,080 --> 00:08:41,280
no heroics, no slack warnings, pre-ETL safety pattern.
224
00:08:41,280 --> 00:08:43,520
Before your ingestion starts, capture a snapshot.
225
00:08:43,520 --> 00:08:45,440
That gives analysts a stable target
226
00:08:45,440 --> 00:08:47,720
while the warehouse mutates behind the curtain.
227
00:08:47,720 --> 00:08:50,360
In practice, schedule a pre-step in your pipeline
228
00:08:50,360 --> 00:08:52,200
that runs a t-school command to either create
229
00:08:52,200 --> 00:08:53,720
or update today's snapshot.
230
00:08:53,720 --> 00:08:56,560
Name it predictably so clients never change connections,
231
00:08:56,560 --> 00:08:58,320
programmatic update.
232
00:08:58,320 --> 00:09:00,880
The pattern most people miss is you don't recreate snapshots
233
00:09:00,880 --> 00:09:01,640
every time.
234
00:09:01,640 --> 00:09:04,480
You roll their timestamp forward after validation.
235
00:09:04,480 --> 00:09:07,640
Add a terminal pipeline step after loads after quality checks
236
00:09:07,640 --> 00:09:10,200
that advances the snapshot to the latest committed state.
237
00:09:10,200 --> 00:09:12,040
Clients stay on the same name.
238
00:09:12,040 --> 00:09:15,640
The truth moves forward only when you say so.
239
00:09:15,640 --> 00:09:16,880
T-SQL examples.
240
00:09:16,880 --> 00:09:19,480
Create a name snapshot once, then maintain it.
241
00:09:19,480 --> 00:09:20,520
Create a snapshot.
242
00:09:20,520 --> 00:09:21,480
Create snapshot.
243
00:09:21,480 --> 00:09:23,280
Current read only for database.
244
00:09:23,280 --> 00:09:24,640
Finance warehouse.
245
00:09:24,640 --> 00:09:25,800
List snapshots.
246
00:09:25,800 --> 00:09:28,400
Select name, snapshot time from Cisco's snapshots
247
00:09:28,400 --> 00:09:33,280
where database ID equals DBID, finance warehouse.
248
00:09:33,280 --> 00:09:34,280
Roll forward to now.
249
00:09:34,280 --> 00:09:38,960
After ETL validation passes, alter database up finance warehouse.
250
00:09:38,960 --> 00:09:40,440
Update snapshot.
251
00:09:40,440 --> 00:09:44,800
Current read only with timestamp as CIS UTC data time.
252
00:09:44,800 --> 00:09:47,040
Query against the snapshot explicitly.
253
00:09:47,040 --> 00:09:49,240
Select from finance warehouse.
254
00:09:49,240 --> 00:09:50,280
Add snapshot.
255
00:09:50,280 --> 00:09:51,840
Current read only.
256
00:09:51,840 --> 00:09:54,120
DBO dot sales.
257
00:09:54,120 --> 00:09:56,640
If your environment exposes time-based selection,
258
00:09:56,640 --> 00:09:58,560
you can target a historical moment.
259
00:09:58,560 --> 00:10:01,440
Select a man from finance warehouse at time able to
260
00:10:01,440 --> 00:10:05,280
use 2025 09 30 T-53 59 59 Z.
261
00:10:05,280 --> 00:10:07,000
DBO dot sales.
262
00:10:07,000 --> 00:10:09,120
The exact syntax varies by release.
263
00:10:09,120 --> 00:10:10,360
The concept doesn't.
264
00:10:10,360 --> 00:10:12,320
Explicit point in time read.
265
00:10:12,320 --> 00:10:13,320
Not vibes.
266
00:10:13,320 --> 00:10:15,120
And yes, the warehouse keeps accepting rights
267
00:10:15,120 --> 00:10:16,520
while you query the frozen view.
268
00:10:16,520 --> 00:10:19,680
That's the entire point, pipeline choreography.
269
00:10:19,680 --> 00:10:20,560
Order matters.
270
00:10:20,560 --> 00:10:21,360
Snapshot.
271
00:10:21,360 --> 00:10:24,760
In just transform, validate, roll forward.
272
00:10:24,760 --> 00:10:26,880
If validation fails, the snapshot stays put
273
00:10:26,880 --> 00:10:28,760
and your reports remain consistent.
274
00:10:28,760 --> 00:10:31,280
If validation succeeds, advance the timestamp.
275
00:10:31,280 --> 00:10:34,520
You didn't publish partials, you promoted a coherent state.
276
00:10:34,520 --> 00:10:37,400
Elegant, predictable, boring in the best way.
277
00:10:37,400 --> 00:10:38,320
Month and schedule.
278
00:10:38,320 --> 00:10:40,640
Automate a capture at close and keep it named.
279
00:10:40,640 --> 00:10:43,720
Example, month and 2025 09.
280
00:10:43,720 --> 00:10:46,960
Finance models and power BI datasets parameterize the target
281
00:10:46,960 --> 00:10:49,040
so you can switch between current read only and a
282
00:10:49,040 --> 00:10:52,360
specific month and without rebuilding anything.
283
00:10:52,360 --> 00:10:54,640
Auditors ask, show me as of 730.
284
00:10:54,640 --> 00:10:58,440
You point the parameter at month and 2025 09 and rerun.
285
00:10:58,440 --> 00:10:59,400
Identical result.
286
00:10:59,400 --> 00:11:00,680
That's how adults do numbers.
287
00:11:00,680 --> 00:11:02,600
DAX usage for stable reports.
288
00:11:02,600 --> 00:11:05,600
In power BI, bind your semantic model to the snapshot.
289
00:11:05,600 --> 00:11:07,800
If your connector supports specifying the snapshot in
290
00:11:07,800 --> 00:11:09,560
the connection-set it once.
291
00:11:09,560 --> 00:11:12,440
Otherwise, use a parameter to drive a source query that
292
00:11:12,440 --> 00:11:15,640
references the snapshot name or timestamp, then push that
293
00:11:15,640 --> 00:11:19,160
parameter through a dataset setting or deployment pipeline.
294
00:11:19,160 --> 00:11:20,720
Measure logic stays identical.
295
00:11:20,720 --> 00:11:22,880
Only the source is temporal anchor changes.
296
00:11:22,880 --> 00:11:24,120
Audit replay workflow.
297
00:11:24,120 --> 00:11:26,000
Someone challenges last Tuesday's KPI.
298
00:11:26,000 --> 00:11:27,160
You don't restore anything.
299
00:11:27,160 --> 00:11:28,760
You query the Tuesday snapshot.
300
00:11:28,760 --> 00:11:31,360
Export the exact filter context and include lineage and
301
00:11:31,360 --> 00:11:32,440
access logs.
302
00:11:32,440 --> 00:11:35,880
In SQL select, from Finance Warehouse at snapshot daily
303
00:11:35,880 --> 00:11:38,280
2025 1014.
304
00:11:38,280 --> 00:11:40,800
DBO.kPI facts where KPI key at year,
305
00:11:40,800 --> 00:11:45,200
the zone 42, then package the query, the snapshot metadata,
306
00:11:45,200 --> 00:11:48,000
name and timestamp, and the audit log entry that shows when
307
00:11:48,000 --> 00:11:49,840
and by whom the snapshot was created.
308
00:11:49,840 --> 00:11:52,000
Evidence beats opinion every time.
309
00:11:52,000 --> 00:11:54,400
Retention hygiene, daily snapshots for 30 days.
310
00:11:54,400 --> 00:11:56,840
Prune non-critical daily on a schedule, preserve months and
311
00:11:56,840 --> 00:11:59,120
quarter and indefinitely or per policy.
312
00:11:59,120 --> 00:12:01,720
Store metadata about each preserved snapshot.
313
00:12:01,720 --> 00:12:05,720
timestamp, pipeline run ID, validation status, schema hash.
314
00:12:05,720 --> 00:12:08,200
That index is your library catalog without it your back to
315
00:12:08,200 --> 00:12:09,840
rummaging in boxes.
316
00:12:09,840 --> 00:12:12,080
Cost control via zero copy remembers snapshots are
317
00:12:12,080 --> 00:12:15,360
pointers not clones resist the urge to export CSVs just in
318
00:12:15,360 --> 00:12:16,320
case.
319
00:12:16,320 --> 00:12:19,560
If someone insists, root exports through DLP policies and
320
00:12:19,560 --> 00:12:22,160
sensitivity labels so the inevitable leak is at least
321
00:12:22,160 --> 00:12:25,200
controlled or better expose read only snapshot access and
322
00:12:25,200 --> 00:12:28,360
forbid raw exports entirely governance is not a vibe either
323
00:12:28,360 --> 00:12:31,880
common mistakes to avoid do not snapshot after ETL starts
324
00:12:31,880 --> 00:12:34,880
you'll capture a moving target do not mix snapshot tables
325
00:12:34,880 --> 00:12:37,200
with life tables in the same report unless you enjoy
326
00:12:37,200 --> 00:12:40,400
reconciling nonsense do not allow pipeline owners to roll
327
00:12:40,400 --> 00:12:43,040
snapshots forward before validations pass and do not
328
00:12:43,040 --> 00:12:46,800
forget RBIAC and per view labels snapshots inherit sensitive
329
00:12:46,800 --> 00:12:50,720
data they don't magically anonymize it month and pre ETL
330
00:12:50,720 --> 00:12:53,280
audit replay these are the same pattern with different
331
00:12:53,280 --> 00:12:58,160
timestamps freeze validate advance if this feels almost
332
00:12:58,160 --> 00:13:02,800
insultingly simple good complexity is where errors hide
333
00:13:02,800 --> 00:13:06,280
simplicity is where trust lives one more pragmatic tip
334
00:13:06,280 --> 00:13:09,720
version your semantic layer against logical names current read
335
00:13:09,720 --> 00:13:12,600
only for daily work month and cheek for closes audit on
336
00:13:12,600 --> 00:13:15,760
for investigations update one parameter to move the entire
337
00:13:15,760 --> 00:13:18,880
reporting estate between time anchors no data set rebuilds
338
00:13:18,880 --> 00:13:22,720
no broken visuals no 9 a.m. chaos the result uninterrupted
339
00:13:22,720 --> 00:13:25,640
kpi's during loads reproducible audits and minutes and storage
340
00:13:25,640 --> 00:13:28,560
bills that don't scream snapshots handle truth pipelines
341
00:13:28,560 --> 00:13:31,440
handle change you finally separated the kitchen from the dining
342
00:13:31,440 --> 00:13:35,440
room try not to serve half cooked meals again scenario one month
343
00:13:35,440 --> 00:13:38,960
and close that doesn't break reproducible finance finance
344
00:13:38,960 --> 00:13:41,960
doesn't want vibes it wants identical numbers every time you
345
00:13:41,960 --> 00:13:45,520
rerun the P&L for a closed period closing the books means
346
00:13:45,520 --> 00:13:48,200
you freeze reality and stop arguing with it that's the entire
347
00:13:48,200 --> 00:13:51,760
game if late facts keep sliding in and your total drift after
348
00:13:51,760 --> 00:13:54,920
sign off you don't have a close you have a rolling suggestion
349
00:13:54,920 --> 00:13:57,520
here's the pattern that actually works on the last day of the
350
00:13:57,520 --> 00:14:01,000
month at your defined fiscal cutoff capture a warehouse snapshot
351
00:14:01,000 --> 00:14:04,160
and name it like an adult month in twenty twenty five zero nine
352
00:14:04,160 --> 00:14:07,400
finance models point to that snapshot the moment it exists
353
00:14:07,400 --> 00:14:11,320
after that nothing new for September appears in those views
354
00:14:11,320 --> 00:14:14,440
unless you create an explicit documented adjustment through an
355
00:14:14,440 --> 00:14:17,440
adjustments process not a sneaky data load mechanically
356
00:14:17,440 --> 00:14:19,800
you've already got the commands from earlier the moment your
357
00:14:19,800 --> 00:14:23,760
validations pass at close you execute the capture or roll the prepared
358
00:14:23,760 --> 00:14:27,360
month and snapshot to the exact cutoff time stamp the snapshot becomes
359
00:14:27,360 --> 00:14:30,360
the ledger for reporting your semantic model either connects directly to
360
00:14:30,360 --> 00:14:33,840
the name snapshot or uses a parameter that targets it the result
361
00:14:33,840 --> 00:14:36,840
this week's P&L next week's P&L and next quarters rerun for audit
362
00:14:36,840 --> 00:14:40,120
panel match decimal for decimal because the source state is frozen
363
00:14:40,120 --> 00:14:43,160
quick wind that pays for itself in one meeting and executive asks
364
00:14:43,160 --> 00:14:46,360
wider September's margin look lower in the new dashboard you switch the
365
00:14:46,360 --> 00:14:50,080
parameter to month and two thousand twenty five zero nine hit refresh
366
00:14:50,080 --> 00:14:53,680
and their view aligns with the signed version identical totals identical
367
00:14:53,680 --> 00:14:56,840
dimensional breakdowns identical drill through results the
368
00:14:56,840 --> 00:15:01,680
conversation shifts from which version to why did we miss a price increase
369
00:15:01,680 --> 00:15:05,160
in other words you discuss business not plumbing common mistakes in
370
00:15:05,160 --> 00:15:09,040
finance land are painfully predictable allowing late facts to mutate
371
00:15:09,040 --> 00:15:12,760
close periods is the big one if the business truly needs a post-close
372
00:15:12,760 --> 00:15:16,200
entry create an October adjustment that reverses into September in the
373
00:15:16,200 --> 00:15:19,240
finance system and reflected as a separate adjustments table joint at
374
00:15:19,240 --> 00:15:23,800
query time still within the month and snapshot boundary second failing to
375
00:15:23,800 --> 00:15:28,960
archive snapshot metadata keep a minimal catalog snapshot name timestamp pipeline
376
00:15:28,960 --> 00:15:33,320
run ID validation checksum and schema hash when the auditor asks how you know
377
00:15:33,320 --> 00:15:36,920
nothing changed you show the checksum and the lineage not your memory and
378
00:15:36,920 --> 00:15:41,080
yes people will try to optimize by pointing some reports at life for freshness
379
00:15:41,080 --> 00:15:45,480
no if it references a closed period it hits the month and snapshot if it's
380
00:15:45,480 --> 00:15:48,800
forecasting or current month provision analysis it can read current read only
381
00:15:48,800 --> 00:15:53,080
separate time anchors by purpose adults can handle two truths the signed past
382
00:15:53,080 --> 00:15:56,440
and the evolving present just don't mix them in the same visual and pretend
383
00:15:56,440 --> 00:16:00,480
it's inside the payoff is boring by design month and that doesn't break
384
00:16:00,480 --> 00:16:04,240
audits that stop camping in your inbox and fp and a teams that trust the
385
00:16:04,240 --> 00:16:08,160
semantic layer enough to build on it stability over recency especially for
386
00:16:08,160 --> 00:16:12,520
close isn't negotiable it's how you end math arguments before they start scenario
387
00:16:12,520 --> 00:16:17,000
to pre-ETL snapshot for query stability during loads zero downtime reporting
388
00:16:17,000 --> 00:16:21,200
now let's fix your daily nine day mkos your pipelines kickoff dashboards wobble
389
00:16:21,200 --> 00:16:25,280
and someone posts don't refresh in slack like that's a strategy you don't need
390
00:16:25,280 --> 00:16:29,240
a ceasefire you need isolation the pre-ETL snapshot pattern gives you zero
391
00:16:29,240 --> 00:16:32,360
downtime reporting while the warehouse mutates in peace here's the
392
00:16:32,360 --> 00:16:36,640
choreography that actually holds under pressure step one immediately before your
393
00:16:36,640 --> 00:16:40,320
ingestion window starts capture or roll a snapshot named current read only
394
00:16:40,320 --> 00:16:45,120
that becomes the stable read surface for analysts during the entire load step
395
00:16:45,120 --> 00:16:49,120
to run your ingest and transforms break things fix things privately step three
396
00:16:49,120 --> 00:16:54,720
validate row counts reconciliation checks schema expectations if everything passes
397
00:16:54,720 --> 00:16:59,600
step four roll forward current read only to the new time stamp clients keep the
398
00:16:59,600 --> 00:17:03,480
same connection string their world flips to the new consistent state without a
399
00:17:03,480 --> 00:17:07,480
reconnect without a tap closing festival without the which cluster am I on well
400
00:17:07,480 --> 00:17:13,520
scavenger hunt in a pipeline it looks like this snapshot ingest transform validate
401
00:17:13,520 --> 00:17:18,640
alter database update snapshot timestamp if validation fails you stop the snapshot
402
00:17:18,640 --> 00:17:22,320
stays at yesterday's good state and the business keeps querying a coherent
403
00:17:22,320 --> 00:17:26,520
world no partial snow wise yesterday smaller than two days ago because you
404
00:17:26,520 --> 00:17:29,760
didn't publish half a batch and call it progress what changes for analysts
405
00:17:29,760 --> 00:17:34,640
nothing noticeable which is the point kpi stay green visuals don't flicker
406
00:17:34,640 --> 00:17:38,680
model refreshes don't crash into schema changes mid-flight the only visible
407
00:17:38,680 --> 00:17:42,480
changes that your reports stop gaslighting people if a dashboard must refresh at
408
00:17:42,480 --> 00:17:45,960
eight thirty it pulls from yesterday's consistent snapshot if it refreshes at
409
00:17:45,960 --> 00:17:49,400
ten thirty after validation it pulls from today's consistent snapshot both
410
00:17:49,400 --> 00:17:53,120
are valid realities neither is a half-built bridge let me save you from two traps
411
00:17:53,120 --> 00:17:57,000
first rolling the snapshot forward before validations that's how you ship
412
00:17:57,000 --> 00:18:01,360
anomalies as facts validate first then promote the truth second rebinding models
413
00:18:01,360 --> 00:18:04,880
instead of updating the snapshot timestamp don't make users chase a new
414
00:18:04,880 --> 00:18:09,960
connection keep current read only as the stable name move the time anchor under
415
00:18:09,960 --> 00:18:14,680
the hood your semantic model stays untouched your governance stays boring if you
416
00:18:14,680 --> 00:18:18,400
need a sanity check add a tiny fact table that stores the snapshot's effective
417
00:18:18,400 --> 00:18:22,600
timestamp and expose it as a measure in power bi when someone claims these
418
00:18:22,600 --> 00:18:26,320
numbers changed during my meeting you point at the timestamp measure it didn't
419
00:18:26,320 --> 00:18:30,360
move their meeting just felt long cost wise this beats every clone the warehouse
420
00:18:30,360 --> 00:18:34,200
work around you've tried snapshots are zero copy you're not doubling storage
421
00:18:34,200 --> 00:18:38,440
you're pinning time and you're not thoughtling ETL to a piece panicked refreshes
422
00:18:38,440 --> 00:18:42,280
compute works when it should reports refresh when they should no more scheduling
423
00:18:42,280 --> 00:18:46,000
gymnastics to hit imaginary quiet windows the result is the same theme with a
424
00:18:46,000 --> 00:18:51,000
daily rhythm freeze validate advance you separate the kitchen from the dining
425
00:18:51,000 --> 00:18:54,760
room surf fully cooked data and stop warning customers not to taste the soup
426
00:18:54,760 --> 00:18:58,840
during seasoning query stability during loads isn't a miracle it's a time stamp
427
00:18:58,840 --> 00:19:03,360
with discipline scenario three audit replay without restores provenance on
428
00:19:03,360 --> 00:19:07,120
demand auditors don't want your best recollection they want the exact state as
429
00:19:07,120 --> 00:19:11,320
of a timestamp approximations fail control testing snapshots make audit
430
00:19:11,320 --> 00:19:15,920
replay boring in a good way workflow clean and repeatable you target the snapshot
431
00:19:15,920 --> 00:19:20,160
from the audit date run the query and package evidence with lineage the core is
432
00:19:20,160 --> 00:19:26,920
explicit time anchoring example select from finance warehouse at snapshot daily
433
00:19:26,920 --> 00:19:33,160
2025 10 14 you be dot the ledger where account key equals 410 pair that result
434
00:19:33,160 --> 00:19:37,680
with the snapshots metadata name timestamp pipeline run ID and validation status
435
00:19:37,680 --> 00:19:42,600
and your purview audit logs showing who created and access that that's provenance
436
00:19:42,600 --> 00:19:47,520
on demand numbers lineage and access proof in one bundle no restores no
437
00:19:47,520 --> 00:19:52,000
downtime no please wait while it spins up a clone two guardrails don't mix
438
00:19:52,000 --> 00:19:55,640
snapshot data with current warehouse tables in the same report that muddies
439
00:19:55,640 --> 00:19:59,600
the temporal context and run the LP on any exported evidence so sensitive data
440
00:19:59,600 --> 00:20:03,520
doesn't take an unplanned field trip quick win a 10 minute evidence pack that
441
00:20:03,520 --> 00:20:07,280
reconciled to the sent ties to the lineage graph and closes the ticket without a
442
00:20:07,280 --> 00:20:12,240
war room evidence beats opinion every time the read replica myth versus snapshot
443
00:20:12,240 --> 00:20:17,080
reality replicas mirror volatility they copyrights good bad and malformed at
444
00:20:17,080 --> 00:20:22,120
scale throughput improves certainty does not the truth a replica of a moving
445
00:20:22,120 --> 00:20:25,920
target is still a moving target just elsewhere snapshots freeze time transaction
446
00:20:25,920 --> 00:20:29,880
the consistent read only reproducible they don't chase rights they memorialize
447
00:20:29,880 --> 00:20:34,400
estate use replicas to balance load use snapshots to guarantee trust common
448
00:20:34,400 --> 00:20:39,520
confusion my replica will protect reporting during ETL no it faithfully streams
449
00:20:39,520 --> 00:20:43,600
the same mid flight changes your dashboard still catches half batches snapshot
450
00:20:43,600 --> 00:20:47,400
isolation avoids that by presenting only committed data as of a timestamp and
451
00:20:47,400 --> 00:20:52,600
it never morphs midquery when to choose replicas for concurrency and read
452
00:20:52,600 --> 00:20:57,520
scale snapshots for governance audit month and unstable analytics combine them
453
00:20:57,520 --> 00:21:02,400
if you enjoy performance uncertainty read scale on a snapshot back surface the
454
00:21:02,400 --> 00:21:06,280
reason this works is simple isolation semantics plus zero copy pointers beat
455
00:21:06,280 --> 00:21:11,400
eventual anything governance security and cost control purview plus zero copy
456
00:21:11,400 --> 00:21:15,680
this is where adults run the data estate are be asked first restrict who can
457
00:21:15,680 --> 00:21:19,640
create view or role forward snapshots not everyone gets scissors give data
458
00:21:19,640 --> 00:21:24,080
engineers the create advance rights give analysts read and keep finances month and
459
00:21:24,080 --> 00:21:27,880
snapshot read only for their group one reckless advance at the wrong moment and
460
00:21:27,880 --> 00:21:31,360
you're back to chaos so don't grant the button to the average users sensitivity
461
00:21:31,360 --> 00:21:36,640
labels next snapshots inherit sensitive data apply purview labels so PII stays
462
00:21:36,640 --> 00:21:40,520
classified address and in motion if a table is confidential in the warehouse it's
463
00:21:40,520 --> 00:21:44,160
confidential in the snapshot you don't get absolutely by freezing it pair that
464
00:21:44,160 --> 00:21:48,160
with DLP so exported evidence doesn't escape via someone's desktop heroics
465
00:21:48,160 --> 00:21:52,600
governance isn't a sticker it's enforced behavior audit and lineage are your
466
00:21:52,600 --> 00:21:57,320
proof turn on detailed logs for snapshot creation access and updates then
467
00:21:57,320 --> 00:22:00,840
surface them in a power BI compliance dashboard now when someone asks who
468
00:22:00,840 --> 00:22:04,760
touched the month and ledger you answer with a timestamp event not folklore
469
00:22:04,760 --> 00:22:08,760
lineage ties the snapshot to upstream pipelines and validations which is how you
470
00:22:08,760 --> 00:22:12,520
trace discrepancies in minutes instead of calendar weeks retention policy is
471
00:22:12,520 --> 00:22:17,400
your exposure control daily snapshots for 30 days then prune preserve month and
472
00:22:17,400 --> 00:22:22,080
and quarter and per policy keep a slim catalog name timestamp pipeline run ID
473
00:22:22,080 --> 00:22:25,760
validation checksum schema hash that's your chain of custody without it you're
474
00:22:25,760 --> 00:22:29,800
back to trust me bro which auditors love about as much as surprise karaoke and
475
00:22:29,800 --> 00:22:34,440
cost zero copy means you stop paying for duplicate bits snapshots are metadata
476
00:22:34,440 --> 00:22:38,600
pointers not terabyte clones compare that to CSV sprawl full duplicates with no
477
00:22:38,600 --> 00:22:42,560
governance that quietly inflates storage and incident risk you centralize access
478
00:22:42,560 --> 00:22:47,840
reduce exports and keep storage sane while ops stays fast performance is
479
00:22:47,840 --> 00:22:52,440
nice predictable cost under control is nicer the only version of truth is the one
480
00:22:52,440 --> 00:22:57,040
you freeze key takeaway stability beats recently snapshots give
481
00:22:57,040 --> 00:23:00,680
transactionally consistent auditable analytics that don't wobble during loads
482
00:23:00,680 --> 00:23:05,160
or willed under audit adopt the pre ETL snapshot pattern this week schedule
483
00:23:05,160 --> 00:23:09,240
month and captures with a real catalog and wire audit replace evidence is a 10
484
00:23:09,240 --> 00:23:13,200
minute task if you want the t-sequel and DAX pack I showed plus the retention
485
00:23:13,200 --> 00:23:18,480
and rollback checklist subscribe now and watch the next video proceed