Fabric Snapshots Deliver The ONLY Version of Truth

Mirko PetersPodcasts15 minutes ago4 Views


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





Source link

0 Votes: 0 Upvotes, 0 Downvotes (0 Points)

Leave a reply

Follow
Search
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...