The 3 Ways Microsoft Hides Pixel-Perfect Reports

Mirko PetersPodcasts41 minutes ago4 Views


1
00:00:00,000 –> 00:00:02,500
You tried printing a gorgeous Power BI dashboard

2
00:00:02,500 –> 00:00:04,260
and got a pixelated multi-page mess

3
00:00:04,260 –> 00:00:06,700
that looked like it fell down a flight of stairs.

4
00:00:06,700 –> 00:00:09,340
The truth, Power BI visuals aren’t built for paper.

5
00:00:09,340 –> 00:00:10,900
Paginated reports are.

6
00:00:10,900 –> 00:00:12,900
Microsoft hides pixel-perfect output

7
00:00:12,900 –> 00:00:14,340
behind three different tools,

8
00:00:14,340 –> 00:00:17,420
each with trade-offs, the average user, blissfully ignores.

9
00:00:17,420 –> 00:00:19,340
In the next minutes, you’ll learn the three ways

10
00:00:19,340 –> 00:00:22,180
when to use each and how to avoid costly dead ends.

11
00:00:22,180 –> 00:00:24,380
Stay for a 30-second decision matrix

12
00:00:24,380 –> 00:00:26,260
and one shortcut that saves hours.

13
00:00:26,260 –> 00:00:28,380
Now let’s expose where each option lives

14
00:00:28,380 –> 00:00:31,100
and why the average user keeps picking the wrong door.

15
00:00:31,100 –> 00:00:32,180
Context.

16
00:00:32,180 –> 00:00:35,620
Why paginated reports exist and Power BI isn’t it?

17
00:00:35,620 –> 00:00:37,460
Executives want fixed layouts.

18
00:00:37,460 –> 00:00:39,420
Headers that repeat on every page.

19
00:00:39,420 –> 00:00:40,660
Page numbers that don’t lie.

20
00:00:40,660 –> 00:00:42,940
Legal disclaimers that never wander off the margin.

21
00:00:42,940 –> 00:00:44,540
They want what auditors want.

22
00:00:44,540 –> 00:00:46,060
The same output every time,

23
00:00:46,060 –> 00:00:48,340
regardless of screen size, browser zoom

24
00:00:48,340 –> 00:00:49,460
or printer mood swings.

25
00:00:49,460 –> 00:00:50,760
That’s not a dashboard problem.

26
00:00:50,760 –> 00:00:51,940
That’s a print problem.

27
00:00:51,940 –> 00:00:54,180
Paginated reports exist for that exact use case.

28
00:00:54,180 –> 00:00:56,420
They are RDL-based, report definition language,

29
00:00:56,420 –> 00:00:58,180
meaning print, first design,

30
00:00:58,180 –> 00:00:59,860
not a playground for slicers.

31
00:00:59,860 –> 00:01:01,180
It’s not just a different file.

32
00:01:01,180 –> 00:01:02,860
It’s a different philosophy.

33
00:01:02,860 –> 00:01:05,260
Interactive dashboards adapt fluidly.

34
00:01:05,260 –> 00:01:07,140
Paginated reports control every pixel

35
00:01:07,140 –> 00:01:09,140
like a Fuzzy stage manager with a ruler.

36
00:01:09,140 –> 00:01:10,300
Here’s how they fit.

37
00:01:10,300 –> 00:01:13,180
You connect an RDL report to a Power BI semantic model.

38
00:01:13,180 –> 00:01:15,660
Yes, the same data model feeding your dashboards.

39
00:01:15,660 –> 00:01:17,380
And the report engine renders pages

40
00:01:17,380 –> 00:01:18,980
with strict layout control.

41
00:01:18,980 –> 00:01:20,980
You define paper size, margins, headers,

42
00:01:20,980 –> 00:01:23,740
footers, groups and page breaks, the engine obeys.

43
00:01:23,740 –> 00:01:26,340
No mystery, no responsive surprises.

44
00:01:26,340 –> 00:01:28,420
Consequences of forcing dashboards to print,

45
00:01:28,420 –> 00:01:30,580
you waste time hacking column widths,

46
00:01:30,580 –> 00:01:32,420
then cry when a slicer reflows

47
00:01:32,420 –> 00:01:34,900
and your totals jump to page three.

48
00:01:34,900 –> 00:01:38,540
Export to PDF from Power BI is not pagination.

49
00:01:38,540 –> 00:01:41,020
It’s a screenshot with delusions of grandeur.

50
00:01:41,020 –> 00:01:43,620
The moment you need repeating headers, grouped totals

51
00:01:43,620 –> 00:01:46,260
or a thousand row list across clean pages,

52
00:01:46,260 –> 00:01:49,220
you’re in paginated territory whether you admit it or not.

53
00:01:49,220 –> 00:01:51,300
Benefits are obvious once you stop resisting.

54
00:01:51,300 –> 00:01:53,980
Precise pagination, reliable headers and footers

55
00:01:53,980 –> 00:01:56,020
and export ready formats like PDF and Word

56
00:01:56,020 –> 00:01:57,740
that hold their layout under pressure.

57
00:01:57,740 –> 00:01:59,300
You can do conditional visibility,

58
00:01:59,300 –> 00:02:01,140
show sections only when data exists,

59
00:02:01,140 –> 00:02:04,180
control widows and orphans and print like an adult.

60
00:02:04,180 –> 00:02:05,940
The quick win is painfully simple.

61
00:02:05,940 –> 00:02:07,100
Decide early.

62
00:02:07,100 –> 00:02:10,220
Dashboards are for screens, paginated is for paper.

63
00:02:10,220 –> 00:02:11,860
If the primary output goes to a printer,

64
00:02:11,860 –> 00:02:14,420
jump tools before you waste a sprint polishing a dashboard

65
00:02:14,420 –> 00:02:16,620
that will always betray you in the copy room.

66
00:02:16,620 –> 00:02:18,860
With the stakes set, here’s door number one,

67
00:02:18,860 –> 00:02:21,460
the deceptively easy option that seduces the average user

68
00:02:21,460 –> 00:02:24,980
because it lives in a browser and promises zero friction.

69
00:02:24,980 –> 00:02:29,220
Way one, power BI service, web paginated builder,

70
00:02:29,220 –> 00:02:30,980
fastest, most limited.

71
00:02:30,980 –> 00:02:32,740
Why this exists is straightforward.

72
00:02:32,740 –> 00:02:35,900
Zero install, any OS and you can crank out a simple table

73
00:02:35,900 –> 00:02:39,500
or matrix with headers, footers and page numbers before lunch.

74
00:02:39,500 –> 00:02:41,140
It’s the web based paginated editor

75
00:02:41,140 –> 00:02:43,220
living right in the power BI service.

76
00:02:43,220 –> 00:02:45,900
Open a workspace, hit new, choose paginated report,

77
00:02:45,900 –> 00:02:48,020
point it at your semantic model and you’re in.

78
00:02:48,020 –> 00:02:50,060
No downloads, no admin rights, no excuses.

79
00:02:50,060 –> 00:02:52,540
What it does is a basic audio editor in the browser

80
00:02:52,540 –> 00:02:55,020
tied directly to a power BI semantic model.

81
00:02:55,020 –> 00:02:57,660
You can add fields, define groups, drop in a logo,

82
00:02:57,660 –> 00:03:00,860
set a header and footer and pick a page size like letter or a four.

83
00:03:00,860 –> 00:03:02,780
It handles page numbers, current date

84
00:03:02,780 –> 00:03:04,820
and simple text boxes without drama.

85
00:03:04,820 –> 00:03:07,180
Think quick listing, not annual reporter,

86
00:03:07,180 –> 00:03:09,500
how to implement step-by-step, go to your workspace,

87
00:03:09,500 –> 00:03:11,540
click new, paginated report.

88
00:03:11,540 –> 00:03:14,460
Select the semantic model you already use for your dashboard.

89
00:03:14,460 –> 00:03:16,500
That way measures and security behave the same.

90
00:03:16,500 –> 00:03:18,780
Add a table, drag fields from your entities,

91
00:03:18,780 –> 00:03:21,700
set a group on something logical like region or category,

92
00:03:21,700 –> 00:03:26,140
then open the page setup to define paper size, margins and orientation.

93
00:03:26,140 –> 00:03:28,900
Add a header with the title and parameter echoes,

94
00:03:28,900 –> 00:03:31,780
a footer with page X of Y and preview.

95
00:03:31,780 –> 00:03:34,500
If it spans to wide, reduce column widths or margins

96
00:03:34,500 –> 00:03:37,100
until the horizontal fit indicator stops complaining.

97
00:03:37,100 –> 00:03:39,260
Save, share, done.

98
00:03:39,260 –> 00:03:41,580
Strengths, accessibility and speed.

99
00:03:41,580 –> 00:03:44,340
It’s excellent for quick iterations, especially when you need

100
00:03:44,340 –> 00:03:46,540
to validate requirements with a business lead

101
00:03:46,540 –> 00:03:48,820
who’s allergic to software installs.

102
00:03:48,820 –> 00:03:52,700
Versioning and permissions live in the service, so collaboration is immediate.

103
00:03:52,700 –> 00:03:54,700
And because you’re bound to a semantic model,

104
00:03:54,700 –> 00:03:57,660
row-level security and DAX logic carry over neatly.

105
00:03:57,660 –> 00:03:59,340
Limits and they matter.

106
00:03:59,340 –> 00:04:01,220
It’s table, matrix, centric.

107
00:04:01,220 –> 00:04:03,500
Charts are spars, maps are absent.

108
00:04:03,500 –> 00:04:06,620
An expression support is shallow compared to desktop tooling.

109
00:04:06,620 –> 00:04:09,900
Layout control is minimal, so complex conditional formatting,

110
00:04:09,900 –> 00:04:13,260
nested regions and elaborate groupings will hit a wall.

111
00:04:13,260 –> 00:04:16,100
If you want precision control over page breaks between groups,

112
00:04:16,100 –> 00:04:17,820
you’ll feel the constraint quickly.

113
00:04:17,820 –> 00:04:21,140
Use cases that actually fit simple invoices, index style listings,

114
00:04:21,140 –> 00:04:24,660
operational pick lists, or mail merch like summaries

115
00:04:24,660 –> 00:04:28,580
where the heavy lifting is rose on paper with a consistent mask head.

116
00:04:28,580 –> 00:04:29,500
Translation.

117
00:04:29,500 –> 00:04:30,540
You need it now.

118
00:04:30,540 –> 00:04:32,620
You don’t need fancy visuals, and nobody

119
00:04:32,620 –> 00:04:35,820
will require surgical control over typography next week.

120
00:04:35,820 –> 00:04:37,780
Common mistakes the average user makes.

121
00:04:37,780 –> 00:04:41,420
Treating this like full SSRS and expecting advanced features

122
00:04:41,420 –> 00:04:42,500
to magically appear.

123
00:04:42,500 –> 00:04:44,500
Ignoring margins and printable width, which

124
00:04:44,500 –> 00:04:46,660
leads to accidental horizontal overflow and surprise

125
00:04:46,660 –> 00:04:47,620
blank pages.

126
00:04:47,620 –> 00:04:49,860
Failing to learn basic field level expressions

127
00:04:49,860 –> 00:04:52,380
like concatenating a title or formatting numbers

128
00:04:52,380 –> 00:04:55,340
so reports look amateur when a tiny expression would fix it

129
00:04:55,340 –> 00:04:58,940
and anchoring too many columns because we need everything,

130
00:04:58,940 –> 00:05:01,460
which guarantees wrapping chaos.

131
00:05:01,460 –> 00:05:02,940
Quick win you can deploy today.

132
00:05:02,940 –> 00:05:06,500
Build a one page prototype here before committing to deeper tooling.

133
00:05:06,500 –> 00:05:09,420
Use it as a live spec, align on paper size, headers,

134
00:05:09,420 –> 00:05:11,580
footers, and grouping with your stakeholder.

135
00:05:11,580 –> 00:05:14,700
If they ask for charts, parameters, or conditional sections,

136
00:05:14,700 –> 00:05:17,820
you’ve just justified graduating to the desktop tool without arguing.

137
00:05:17,820 –> 00:05:20,100
The trade-off is speed versus sophistication.

138
00:05:20,100 –> 00:05:22,860
This is perfect for validating structure, simple outputs,

139
00:05:22,860 –> 00:05:23,900
and short term needs.

140
00:05:23,900 –> 00:05:27,340
But the minute requirements evolve, charts, multilevel groups,

141
00:05:27,340 –> 00:05:29,780
conditional visibility, advanced expressions,

142
00:05:29,780 –> 00:05:31,420
you’ll pay a migration tax.

143
00:05:31,420 –> 00:05:33,380
That’s fine as long as you plan for it.

144
00:05:33,380 –> 00:05:36,820
If you didn’t, congratulations, you just built a cul-de-sac.

145
00:05:36,820 –> 00:05:39,340
Now, when you hit those layout walls and you

146
00:05:39,340 –> 00:05:42,460
will, you graduate to the real tool for analysts.

147
00:05:42,460 –> 00:05:45,660
The desktop-authoring environment that gives you pixel control,

148
00:05:45,660 –> 00:05:48,820
robust expressions, and parameters without dragging you

149
00:05:48,820 –> 00:05:50,860
into full developer land.

150
00:05:50,860 –> 00:05:55,260
Way to, Power BI, Report Builder, the professional print shop.

151
00:05:55,260 –> 00:05:58,340
Enter the tool that treats paper like a first-class citizen.

152
00:05:58,340 –> 00:06:00,820
Power BI Report Builder exists because business adults

153
00:06:00,820 –> 00:06:02,900
want print control, richer visuals, parameters,

154
00:06:02,900 –> 00:06:04,220
and expressions that don’t feel like they

155
00:06:04,220 –> 00:06:05,900
were added as an afterthought.

156
00:06:05,900 –> 00:06:09,180
You get charts, gauges, and maps, you get groups, nested regions,

157
00:06:09,180 –> 00:06:10,900
and page breaks that actually obey you.

158
00:06:10,900 –> 00:06:12,900
It’s the difference between doodling in a browser

159
00:06:12,900 –> 00:06:15,900
and walking into a proper print shop with rulers, templates,

160
00:06:15,900 –> 00:06:18,980
and a foreman who says, no, that won’t fit, fix it.

161
00:06:18,980 –> 00:06:19,820
Why this matters?

162
00:06:19,820 –> 00:06:22,220
When you’re producing board packs, financial statements,

163
00:06:22,220 –> 00:06:24,180
regulatory filings, or operational lists

164
00:06:24,180 –> 00:06:26,180
with strict headers, you can’t wing it.

165
00:06:26,180 –> 00:06:29,740
Executives expect the cover page to look like a cover page,

166
00:06:29,740 –> 00:06:31,980
the subtotal to land at the bottom of the group,

167
00:06:31,980 –> 00:06:33,700
and the page numbers to behave.

168
00:06:33,700 –> 00:06:35,980
Report Builder gives you the pixel-level control

169
00:06:35,980 –> 00:06:38,100
and the expression engine to make that happen

170
00:06:38,100 –> 00:06:41,380
without dragging your entire team into full developer workflows.

171
00:06:41,380 –> 00:06:44,540
What it actually does, it’s a full RDL authoring environment.

172
00:06:44,540 –> 00:06:47,620
You define page size, margins, and orientation upfront.

173
00:06:47,620 –> 00:06:50,780
You design data sets against your Power BI semantic model,

174
00:06:50,780 –> 00:06:53,140
using the same measures and row-level security

175
00:06:53,140 –> 00:06:54,180
your dashboards use.

176
00:06:54,180 –> 00:06:56,260
You build tables, matrices, and charts,

177
00:06:56,260 –> 00:06:59,740
and you wire up parameters so a CFO can switch months

178
00:06:59,740 –> 00:07:01,340
or regions without calling you.

179
00:07:01,340 –> 00:07:03,340
Then you set page breaks and visibility rules

180
00:07:03,340 –> 00:07:04,460
to keep sections clean.

181
00:07:04,460 –> 00:07:07,060
The engine renders exactly what you told it to render,

182
00:07:07,060 –> 00:07:08,660
no responsive surprise.

183
00:07:08,660 –> 00:07:11,540
Let me show you exactly how to implement it, step by step.

184
00:07:11,540 –> 00:07:13,500
Install report builder, open it,

185
00:07:13,500 –> 00:07:15,340
connect to your Power BI semantic model,

186
00:07:15,340 –> 00:07:16,580
wire the built-in connector,

187
00:07:16,580 –> 00:07:18,460
so you’re querying the same data model.

188
00:07:18,460 –> 00:07:21,380
In the query designer, select fields and measures.

189
00:07:21,380 –> 00:07:25,140
Behind the scenes, it builds a DAX query over XMLA.

190
00:07:25,140 –> 00:07:27,060
Click OK, you now have a data set,

191
00:07:27,060 –> 00:07:28,860
drop a table, drag fields into detail,

192
00:07:28,860 –> 00:07:31,260
add a row group on something logical like country,

193
00:07:31,260 –> 00:07:34,100
and a parent group on region if you need hierarchy.

194
00:07:34,100 –> 00:07:36,700
Now before you get excited, go to page setup

195
00:07:36,700 –> 00:07:39,780
and define paper size, margins, and orientation.

196
00:07:39,780 –> 00:07:41,580
This clicked for me when I realized,

197
00:07:41,580 –> 00:07:43,660
if you designed before setting paper,

198
00:07:43,660 –> 00:07:45,540
you will chase with problems for hours.

199
00:07:45,540 –> 00:07:47,020
Don’t.

200
00:07:47,020 –> 00:07:48,940
Once your canvas is honest about its size,

201
00:07:48,940 –> 00:07:51,020
add a header with your title, parameter echoes,

202
00:07:51,020 –> 00:07:51,860
and the run date.

203
00:07:51,860 –> 00:07:53,940
Add a footer with page X of Y.

204
00:07:53,940 –> 00:07:55,180
Use consistent fonts.

205
00:07:55,180 –> 00:07:57,220
Now configure page breaks, set a page break

206
00:07:57,220 –> 00:07:59,260
between each region group and a separate break

207
00:07:59,260 –> 00:08:01,380
at the end of each country group if needed.

208
00:08:01,380 –> 00:08:04,260
Preview, if you see often group headers or subtotals

209
00:08:04,260 –> 00:08:06,140
wandering onto new pages alone,

210
00:08:06,140 –> 00:08:08,780
adjust, keep together, and repeat header rows

211
00:08:08,780 –> 00:08:10,700
on each page in the tablix properties.

212
00:08:10,700 –> 00:08:14,300
The truth, the thing most people miss is printable width.

213
00:08:14,300 –> 00:08:18,260
Your page width minus margins defines a hard limit, exceeded,

214
00:08:18,260 –> 00:08:20,420
and you’ll get phantom blank pages.

215
00:08:20,420 –> 00:08:21,820
Respect the math.

216
00:08:21,820 –> 00:08:24,260
Strengths you actually feel pixel control is precise.

217
00:08:24,260 –> 00:08:25,580
Expressions are powerful.

218
00:08:25,580 –> 00:08:27,900
Build dynamic titles like sales by region for at month,

219
00:08:27,900 –> 00:08:29,660
hide sections when totals are zero,

220
00:08:29,660 –> 00:08:32,020
color exceptions when thresholds are breached.

221
00:08:32,020 –> 00:08:35,140
Parameters are native so you can build a clean prompt experience.

222
00:08:35,140 –> 00:08:38,220
You can nest data regions at conditional visibility

223
00:08:38,220 –> 00:08:41,340
and create repeatable templates so every report looks like

224
00:08:41,340 –> 00:08:44,700
it belongs to the same company rather than a ransom load.

225
00:08:44,700 –> 00:08:47,340
Advanced tricks that separate beginners from pros.

226
00:08:47,340 –> 00:08:50,020
Use grouping and subtotals with explicit page breaks

227
00:08:50,020 –> 00:08:51,620
to produce clean book sections.

228
00:08:51,620 –> 00:08:54,660
Leverage, lookup and lookup set when you need to enrich rows

229
00:08:54,660 –> 00:08:57,300
from another data set without exploding cardinality.

230
00:08:57,300 –> 00:08:59,980
Use conditional formatting to highlight variances.

231
00:08:59,980 –> 00:09:01,940
Create shared data sets for common lists

232
00:09:01,940 –> 00:09:03,660
like date ranges or entities

233
00:09:03,660 –> 00:09:06,020
so you don’t duplicate logic across reports.

234
00:09:06,020 –> 00:09:08,620
And yes, maps and gauges exist for when leadership

235
00:09:08,620 –> 00:09:10,340
insists on shapes and needles.

236
00:09:10,340 –> 00:09:11,300
Common mistakes.

237
00:09:11,300 –> 00:09:12,860
Don’t do what the average user does.

238
00:09:12,860 –> 00:09:14,300
They don’t test pagination early.

239
00:09:14,300 –> 00:09:16,060
They design on a sprawling canvas.

240
00:09:16,060 –> 00:09:18,740
Then discover page two is a blank artifact created

241
00:09:18,740 –> 00:09:21,340
by a 1-inch overflow they ignore printable width.

242
00:09:21,340 –> 00:09:24,220
They overnest tablixes until performance collapses.

243
00:09:24,220 –> 00:09:26,100
They forget that row by row expressions

244
00:09:26,100 –> 00:09:27,580
are evaluated for every row.

245
00:09:27,580 –> 00:09:30,140
So acute string manipulation becomes a performance tax

246
00:09:30,140 –> 00:09:31,540
on 200,000 rows.

247
00:09:31,540 –> 00:09:33,420
And the classic hammering Excel exports

248
00:09:33,420 –> 00:09:35,900
and wondering why the layout mutates because Excel is cell

249
00:09:35,900 –> 00:09:37,940
first, not print first, performance notes

250
00:09:37,940 –> 00:09:41,100
because you like your reports to finish before quarter end.

251
00:09:41,100 –> 00:09:43,500
Push aggregation into the semantic model.

252
00:09:43,500 –> 00:09:47,220
Measures and summarized queries return fewer rows.

253
00:09:47,220 –> 00:09:49,540
Control data set granularity.

254
00:09:49,540 –> 00:09:51,140
Don’t bring a million detail rows

255
00:09:51,140 –> 00:09:53,180
if the output is grouped by month.

256
00:09:53,180 –> 00:09:54,860
Avoid row by row custom code.

257
00:09:54,860 –> 00:09:56,940
If you must do heavy logic, do it once

258
00:09:56,940 –> 00:10:00,140
at the group level or as a calculated column upstream.

259
00:10:00,140 –> 00:10:03,140
Export nuances PDF preserves layout faithfully.

260
00:10:03,140 –> 00:10:06,660
Word preserves structure but can reflow if editors poke at it.

261
00:10:06,660 –> 00:10:08,260
Still fine for distribution.

262
00:10:08,260 –> 00:10:10,820
Excel is for data work, not pixel worship.

263
00:10:10,820 –> 00:10:12,980
It will translate regions into cells,

264
00:10:12,980 –> 00:10:16,260
which is great for analysis, less great for perfect spacing.

265
00:10:16,260 –> 00:10:18,780
Choose the export based on the recipient’s behavior.

266
00:10:18,780 –> 00:10:20,580
Not your wishful thinking.

267
00:10:20,580 –> 00:10:21,700
Publishing is straightforward.

268
00:10:21,700 –> 00:10:23,740
Save the RDL, publish to the service,

269
00:10:23,740 –> 00:10:25,580
bind parameters to default values

270
00:10:25,580 –> 00:10:27,060
and test with real security.

271
00:10:27,060 –> 00:10:28,580
Manage credentials where needed,

272
00:10:28,580 –> 00:10:30,820
then lock the template, standardized header,

273
00:10:30,820 –> 00:10:32,620
footer, fonts and colors.

274
00:10:32,620 –> 00:10:34,260
Most business needs land here.

275
00:10:34,260 –> 00:10:36,980
Enough power to deliver professional print outputs

276
00:10:36,980 –> 00:10:39,380
without the overhead of a full developer solution.

277
00:10:39,380 –> 00:10:41,620
Once you nail this, everything else clicks.

278
00:10:41,620 –> 00:10:44,900
Way three, visual studio plus SSRS projects,

279
00:10:44,900 –> 00:10:46,300
enterprise control room.

280
00:10:46,300 –> 00:10:48,500
If report builder is a professional print shop,

281
00:10:48,500 –> 00:10:50,740
visual studio with reporting services projects

282
00:10:50,740 –> 00:10:52,300
is the entire print factory,

283
00:10:52,300 –> 00:10:53,900
loading docs, conveyor belts,

284
00:10:53,900 –> 00:10:56,020
and a form and who tracks everything in a clipboard

285
00:10:56,020 –> 00:10:57,100
and version control.

286
00:10:58,100 –> 00:11:00,620
This exists for one reason, solution level management,

287
00:11:00,620 –> 00:11:05,380
multiple RDLs, shared data sources, source control, CI/CD.

288
00:11:05,380 –> 00:11:08,020
In other words, the environment grown-up enterprises need

289
00:11:08,020 –> 00:11:10,420
when a report quietly turns into a portfolio

290
00:11:10,420 –> 00:11:12,100
of reports with governance.

291
00:11:12,100 –> 00:11:13,980
What it actually does is give you a project

292
00:11:13,980 –> 00:11:16,060
and solution structure instead of single files

293
00:11:16,060 –> 00:11:18,020
floating around like unsupervised toddlers.

294
00:11:18,020 –> 00:11:19,900
You create a reporting services project.

295
00:11:19,900 –> 00:11:22,900
Inside it, you define shared data sources and shared data sets

296
00:11:22,900 –> 00:11:25,020
then add as many RDLs as you like.

297
00:11:25,020 –> 00:11:27,340
Sub-reports native, drill through navigation

298
00:11:27,340 –> 00:11:29,500
across a suite, easy, complex expressions

299
00:11:29,500 –> 00:11:31,820
with centralized parameters, routine.

300
00:11:31,820 –> 00:11:33,060
And because it’s visual studio,

301
00:11:33,060 –> 00:11:36,580
you get integration with Git or Azure DevOps

302
00:11:36,580 –> 00:11:38,980
for versioning, branching, and deployments

303
00:11:38,980 –> 00:11:40,740
that don’t depend on someone remembering

304
00:11:40,740 –> 00:11:44,100
which desktop had the final, final, latest,

305
00:11:44,100 –> 00:11:46,180
or implementation, clean and simple,

306
00:11:46,180 –> 00:11:48,540
install visual studio, community is fine.

307
00:11:48,540 –> 00:11:50,660
Add the reporting services project extension,

308
00:11:50,660 –> 00:11:52,740
create a new reporting services project.

309
00:11:52,740 –> 00:11:54,700
First, add shared data sources

310
00:11:54,700 –> 00:11:57,340
that point to your power BI semantic model endpoints

311
00:11:57,340 –> 00:11:58,980
or other govern stores.

312
00:11:58,980 –> 00:12:01,180
Then design shared data sets for common lists,

313
00:12:01,180 –> 00:12:02,980
calendar, entities, parameters,

314
00:12:02,980 –> 00:12:05,340
so every report pulls from the same definitions.

315
00:12:05,340 –> 00:12:08,500
Add a new report, set page setup for your corporate standard,

316
00:12:08,500 –> 00:12:11,860
letter or A4, margins, portrait or landscape.

317
00:12:11,860 –> 00:12:13,820
Insert your company’s base report elements,

318
00:12:13,820 –> 00:12:17,220
header with logo, footer with page X of Y, and brand fonts.

319
00:12:17,220 –> 00:12:19,620
Now you’re ready to build RDLs that look related

320
00:12:19,620 –> 00:12:22,260
because the assets they use are in fact shared.

321
00:12:22,260 –> 00:12:25,100
Strengths you feel on day one, team workflows and reuse.

322
00:12:25,100 –> 00:12:28,620
Multiple developers can work on different RDLs in parallel,

323
00:12:28,620 –> 00:12:32,500
review each other’s changes, and avoid override roulette.

324
00:12:32,500 –> 00:12:34,420
Shared assets eliminate drift.

325
00:12:34,420 –> 00:12:37,020
Your date parameter behaves the same in 12 reports

326
00:12:37,020 –> 00:12:38,220
because it’s defined once.

327
00:12:38,220 –> 00:12:40,020
You also get advanced property control.

328
00:12:40,020 –> 00:12:42,060
Need a configurable deployment target?

329
00:12:42,060 –> 00:12:43,740
Create multiple configurations,

330
00:12:43,740 –> 00:12:46,380
dev, test, prod, with different server URLs

331
00:12:46,380 –> 00:12:50,100
and data source bindings, press build, deploy, no sneakernet.

332
00:12:51,100 –> 00:12:52,900
Enterprise patterns that shine here.

333
00:12:52,900 –> 00:12:55,300
Master detail with sub-reports to split big books

334
00:12:55,300 –> 00:12:56,780
into maintainable parts.

335
00:12:56,780 –> 00:12:58,900
Parameterized drill through navigation

336
00:12:58,900 –> 00:13:02,860
from summary to detail across reports, passing context cleanly.

337
00:13:02,860 –> 00:13:05,300
Shared styles via report parts or templates

338
00:13:05,300 –> 00:13:07,820
to enforce consistent typography and spacing,

339
00:13:07,820 –> 00:13:10,260
deployment profiles that map folders and permissions,

340
00:13:10,260 –> 00:13:12,580
so your finance pack lands in finance reports

341
00:13:12,580 –> 00:13:15,140
with the right role assignments every time.

342
00:13:15,140 –> 00:13:17,300
This is the difference between we email the file

343
00:13:17,300 –> 00:13:18,580
and we ship a product.

344
00:13:18,580 –> 00:13:19,420
Use cases.

345
00:13:19,420 –> 00:13:21,940
Enterprise packs that ship monthly departmental suites

346
00:13:21,940 –> 00:13:24,260
covering the same dimensions with different filters,

347
00:13:24,260 –> 00:13:27,380
governed financials where auditability and consistency matter,

348
00:13:27,380 –> 00:13:29,500
and multi-region rollouts where the same report

349
00:13:29,500 –> 00:13:32,340
deploys to 10 work spaces with environment-specific data

350
00:13:32,340 –> 00:13:33,260
sources.

351
00:13:33,260 –> 00:13:35,660
If you’re thinking in portfolios rather than one offs,

352
00:13:35,660 –> 00:13:37,020
you’re in the right room.

353
00:13:37,020 –> 00:13:39,860
Common mistakes when people wander in from report builder,

354
00:13:39,860 –> 00:13:42,820
treating the project like a folder of independent RDLs

355
00:13:42,820 –> 00:13:44,940
instead of engineering a modular solution.

356
00:13:44,940 –> 00:13:47,460
Not modularizing data sets, so every report

357
00:13:47,460 –> 00:13:49,980
rebuilds the same calendar list 15 times.

358
00:13:49,980 –> 00:13:53,340
No naming conventions which leads to report one final two chaos,

359
00:13:53,340 –> 00:13:55,180
skipping source control and losing history

360
00:13:55,180 –> 00:13:57,060
when someone fixes the template.

361
00:13:57,060 –> 00:14:00,180
And my favorite, hard-coding server parts or credentials,

362
00:14:00,180 –> 00:14:02,020
then wondering why deployments break the moment

363
00:14:02,020 –> 00:14:03,420
you change environments.

364
00:14:03,420 –> 00:14:05,340
Quick win, you can implement immediately.

365
00:14:05,340 –> 00:14:07,380
Create a base report template, RDL

366
00:14:07,380 –> 00:14:10,780
with your header, footer, margins, fonts, and common expressions,

367
00:14:10,780 –> 00:14:12,860
then clone it for every new report.

368
00:14:12,860 –> 00:14:15,220
Centralize a shared data source to your semantic model

369
00:14:15,220 –> 00:14:17,260
and share data sets for parameters.

370
00:14:17,260 –> 00:14:20,620
In one hour you eliminate 80% of drift and 100% of the,

371
00:14:20,620 –> 00:14:22,020
why does this one look different?

372
00:14:22,020 –> 00:14:23,660
Conversations.

373
00:14:23,660 –> 00:14:25,900
Compatibility caveats you need to respect.

374
00:14:25,900 –> 00:14:28,700
Some legacy SSRS visuals and custom fonts

375
00:14:28,700 –> 00:14:31,180
won’t render identically in the Power BI service.

376
00:14:31,180 –> 00:14:32,260
Test early.

377
00:14:32,260 –> 00:14:34,460
If your design depends on a niche chart or font,

378
00:14:34,460 –> 00:14:36,060
confirm it in the target environment

379
00:14:36,060 –> 00:14:38,460
before you build an entire suite around it.

380
00:14:38,460 –> 00:14:41,980
And yes, PDF will be faithful, Excel will do Excel things

381
00:14:41,980 –> 00:14:44,900
because cells are not pages, manage expectations.

382
00:14:44,900 –> 00:14:45,900
Governance matters here.

383
00:14:45,900 –> 00:14:48,260
Design a folder structure that mirrors your organization

384
00:14:48,260 –> 00:14:49,660
by domain, not by author.

385
00:14:49,660 –> 00:14:51,580
Apply role-based access consistently.

386
00:14:51,580 –> 00:14:55,460
Map environments, dev, test, prod, via deployment profiles,

387
00:14:55,460 –> 00:14:58,460
so promoting a release is a button, not a scavenger hunt.

388
00:14:58,460 –> 00:15:01,140
Document naming conventions for reports, data sets,

389
00:15:01,140 –> 00:15:02,340
and parameters.

390
00:15:02,340 –> 00:15:05,620
The result is boring in the best way, predictable, traceable,

391
00:15:05,620 –> 00:15:06,420
and safe.

392
00:15:06,420 –> 00:15:07,260
The trade-off is obvious.

393
00:15:07,260 –> 00:15:09,580
Maximum control for maximal complexity.

394
00:15:09,580 –> 00:15:13,020
You get reusable assets, team workflows, and CI/CD,

395
00:15:13,020 –> 00:15:15,180
but you also inherit the ceremony.

396
00:15:15,180 –> 00:15:18,020
Branches, reviews, build pipelines, training.

397
00:15:18,020 –> 00:15:19,700
For a single invoice, it’s overkill.

398
00:15:19,700 –> 00:15:22,020
For a governed suite that affects finance or operations,

399
00:15:22,020 –> 00:15:23,460
it’s the only adult option.

400
00:15:23,460 –> 00:15:24,580
The truth.

401
00:15:24,580 –> 00:15:26,420
If your reporting footprint is growing,

402
00:15:26,420 –> 00:15:28,500
Visual Studio stops being developer theater

403
00:15:28,500 –> 00:15:29,820
and becomes the control room.

404
00:15:29,820 –> 00:15:31,020
You don’t just make reports.

405
00:15:31,020 –> 00:15:33,220
You ship a reporting product with standards, tests,

406
00:15:33,220 –> 00:15:34,060
and releases.

407
00:15:34,060 –> 00:15:35,420
And yes, the average user will complain.

408
00:15:35,420 –> 00:15:36,900
It feels heavy, correct.

409
00:15:36,900 –> 00:15:38,660
So is a seatbelt.

410
00:15:38,660 –> 00:15:41,380
Decision matrix, pick the right door in 30 seconds.

411
00:15:41,380 –> 00:15:42,740
You want fast, not fuzzy.

412
00:15:42,740 –> 00:15:44,580
Here’s the decision in plain English.

413
00:15:44,580 –> 00:15:46,860
If you need a simple tabular printout today,

414
00:15:46,860 –> 00:15:50,380
rows, a logo, page numbers, use the service builder.

415
00:15:50,380 –> 00:15:51,580
It’s minutes, not meetings.

416
00:15:51,580 –> 00:15:54,340
If you need real page control, charts, and parameters,

417
00:15:54,340 –> 00:15:55,500
use report builder.

418
00:15:55,500 –> 00:15:56,700
It’s days, not drama.

419
00:15:56,700 –> 00:15:59,340
If you need suites with sub-reports, shared assets,

420
00:15:59,340 –> 00:16:01,180
and governance, use Visual Studio.

421
00:16:01,180 –> 00:16:02,620
It’s weeks, but it scales.

422
00:16:02,620 –> 00:16:05,100
Budget and time-lens, service equals minutes,

423
00:16:05,100 –> 00:16:07,140
report builder equals a few focused days

424
00:16:07,140 –> 00:16:09,540
to nail layout parameters and exports.

425
00:16:09,540 –> 00:16:12,220
Visual Studio equals weeks to set up shared data sets,

426
00:16:12,220 –> 00:16:14,100
templates, and deployment profiles.

427
00:16:14,100 –> 00:16:16,020
Then it pays you back on every release.

428
00:16:16,020 –> 00:16:16,820
Skill Lens.

429
00:16:16,820 –> 00:16:18,540
An analyst can survive in the service

430
00:16:18,540 –> 00:16:19,940
with basic expressions.

431
00:16:19,940 –> 00:16:22,700
A power user thrives in report builder, comfortable

432
00:16:22,700 –> 00:16:25,740
with groups, page breaks, and DAX-backed data sets.

433
00:16:25,740 –> 00:16:28,100
A dev team, or at least a disciplined analyst,

434
00:16:28,100 –> 00:16:30,180
dev hybrid, should handle Visual Studio

435
00:16:30,180 –> 00:16:32,900
because source control, profiles, and solution structure

436
00:16:32,900 –> 00:16:34,100
aren’t optional there.

437
00:16:34,100 –> 00:16:34,980
Risk Lens.

438
00:16:34,980 –> 00:16:37,260
Evolving requirements punish the service.

439
00:16:37,260 –> 00:16:39,580
It’s a trap if stakeholders just want a list

440
00:16:39,580 –> 00:16:41,580
until they inevitably ask for charts,

441
00:16:41,580 –> 00:16:43,580
conditional sections, and parameters.

442
00:16:43,580 –> 00:16:46,140
Enterprise Risk punishes ad hoc report builder,

443
00:16:46,140 –> 00:16:48,780
one of RDL sprawl, styles drift, and deployment

444
00:16:48,780 –> 00:16:49,820
becomes folklore.

445
00:16:49,820 –> 00:16:52,900
If compliance, audit readiness, or broad reuse matters,

446
00:16:52,900 –> 00:16:55,620
you want Visual Studio’s shared assets and versioning.

447
00:16:55,620 –> 00:16:58,340
Migration path that doesn’t hurt prototype

448
00:16:58,340 –> 00:17:02,500
in the service to lock paper size, header, footer, and grouping.

449
00:17:02,500 –> 00:17:05,020
Move to report builder when you need page control,

450
00:17:05,020 –> 00:17:06,620
expressions, and parameters.

451
00:17:06,620 –> 00:17:09,300
Productize in Visual Studio when you need multiple reports,

452
00:17:09,300 –> 00:17:11,420
shared data sets, and consistent deployment

453
00:17:11,420 –> 00:17:12,700
across environments.

454
00:17:12,700 –> 00:17:13,820
This is not rework.

455
00:17:13,820 –> 00:17:15,220
It’s staged investment.

456
00:17:15,220 –> 00:17:17,420
Checklist before you publish anything.

457
00:17:17,420 –> 00:17:20,700
Paper size and margin set, printable with respected,

458
00:17:20,700 –> 00:17:23,580
headers and footers repeating, parameters tested

459
00:17:23,580 –> 00:17:26,940
with ugly edge cases, and export formats verified,

460
00:17:26,940 –> 00:17:30,220
PDF for fidelity, word for editable distribution,

461
00:17:30,220 –> 00:17:33,220
Excel only when analysis is the point.

462
00:17:33,220 –> 00:17:35,900
If any box is unchecked, you are shipping a support ticket,

463
00:17:35,900 –> 00:17:38,820
shortcut most people ignore, analyze in Excel.

464
00:17:38,820 –> 00:17:41,140
For purely tabular, page-friendly outputs

465
00:17:41,140 –> 00:17:44,100
with light governance, connect Excel to the semantic model

466
00:17:44,100 –> 00:17:46,780
and print from a tool everyone already understands.

467
00:17:46,780 –> 00:17:48,260
It’s not a replacement for RDL,

468
00:17:48,260 –> 00:17:50,580
but it’s a pragmatic fast lane for lists.

469
00:17:50,580 –> 00:17:51,460
Don’t do this.

470
00:17:51,460 –> 00:17:53,780
Don’t jam a dashboard into a printer.

471
00:17:53,780 –> 00:17:56,420
Don’t skip page tests until the night before a board meeting.

472
00:17:56,420 –> 00:17:58,420
Don’t ignore data set scope and then complain

473
00:17:58,420 –> 00:17:59,500
when exports crawl.

474
00:17:59,500 –> 00:18:02,580
Choose the door that matches the ask, not your mood.

475
00:18:02,580 –> 00:18:03,700
Technique upgrades.

476
00:18:03,700 –> 00:18:05,860
Make any paginated report look pro.

477
00:18:05,860 –> 00:18:07,580
Start with the layout model.

478
00:18:07,580 –> 00:18:09,900
Define paper first, A4, or letter, portrait,

479
00:18:09,900 –> 00:18:11,460
or landscape then design.

480
00:18:11,460 –> 00:18:12,740
Refuse to place a single control

481
00:18:12,740 –> 00:18:14,500
until the canvas matches the printer.

482
00:18:14,500 –> 00:18:17,420
Your width equals paper width minus margins.

483
00:18:17,420 –> 00:18:19,660
That number is non-negotiable.

484
00:18:19,660 –> 00:18:22,740
Typography next, two fonts max, one for headings, one for body.

485
00:18:22,740 –> 00:18:25,700
Set consistent sizes, don’t improvise, align numerics write,

486
00:18:25,700 –> 00:18:28,180
apply 1000 separators and fix decimal precision

487
00:18:28,180 –> 00:18:29,460
by measure type.

488
00:18:29,460 –> 00:18:31,460
Title sentence case labels concise.

489
00:18:31,460 –> 00:18:34,620
If you remember nothing else, consistency equals credibility.

490
00:18:34,620 –> 00:18:35,540
Structure matters.

491
00:18:35,540 –> 00:18:39,260
Use groups for logical breaks, region, then country, then store.

492
00:18:39,260 –> 00:18:41,460
Add explicit page breaks between major sections

493
00:18:41,460 –> 00:18:43,940
so cover pages don’t blend into detail.

494
00:18:43,940 –> 00:18:46,260
Turn on repeat header rows on each page

495
00:18:46,260 –> 00:18:48,260
and keep together thoughtfully to prevent

496
00:18:48,260 –> 00:18:49,900
often headers and stray sub-totals.

497
00:18:49,900 –> 00:18:51,860
Expressions elevate everything.

498
00:18:51,860 –> 00:18:54,180
Dynamic titles with parameter echoes.

499
00:18:54,180 –> 00:18:56,220
Sales by region for at-month.

500
00:18:56,220 –> 00:18:57,740
Conditional visibility.

501
00:18:57,740 –> 00:18:59,180
Hide empty sections.

502
00:18:59,180 –> 00:19:01,860
Show warnings when thresholds fail.

503
00:19:01,860 –> 00:19:04,740
Page tanks of Y and run date in the footer standard.

504
00:19:04,740 –> 00:19:07,140
Use IEFs bearingly and prefer clean expressions

505
00:19:07,140 –> 00:19:09,660
at the group level rather than row by row gymnastics.

506
00:19:09,660 –> 00:19:11,140
Performance is a design choice.

507
00:19:11,140 –> 00:19:14,380
Aggregate in the semantic model so you query fewer rows.

508
00:19:14,380 –> 00:19:17,540
Reduce data set granularity to what the layout actually prints.

509
00:19:17,540 –> 00:19:19,140
Avoid per row custom code.

510
00:19:19,140 –> 00:19:21,740
If you must compute, do it once per group or upstream.

511
00:19:21,740 –> 00:19:24,060
Preview with realistic parameter selections.

512
00:19:24,060 –> 00:19:25,620
Not tiny samples that lie.

513
00:19:25,620 –> 00:19:27,060
Reusability is sanity.

514
00:19:27,060 –> 00:19:29,140
Build header, footer and style templates.

515
00:19:29,140 –> 00:19:32,700
In report builder, save a starter RDL with fonts, margins,

516
00:19:32,700 –> 00:19:35,020
header, footer and placeholder text.

517
00:19:35,020 –> 00:19:37,940
In visual studio, promote shared data sets and a base template.

518
00:19:37,940 –> 00:19:40,940
Use naming conventions, Arpti, Finance, but MTD,

519
00:19:40,940 –> 00:19:43,420
SummaryDestate.calendar, paramd region

520
00:19:43,420 –> 00:19:45,180
to stop the final final chaos.

521
00:19:45,180 –> 00:19:47,860
Testing discipline separates pros from hopefuls.

522
00:19:47,860 –> 00:19:50,620
Preview with multiple parameters including extremes.

523
00:19:50,620 –> 00:19:53,580
The most verbose region name, the densest month.

524
00:19:53,580 –> 00:19:56,660
Export to PDF and Word and check for layout drift.

525
00:19:56,660 –> 00:19:59,260
Scan for off-hand rows on page starts.

526
00:19:59,260 –> 00:20:02,260
Validate that conditional sections truly hide when empty

527
00:20:02,260 –> 00:20:04,140
and that totals don’t float.

528
00:20:04,140 –> 00:20:05,820
Compliance isn’t decoration.

529
00:20:05,820 –> 00:20:08,580
Lock decimals to the policy include legal disclaimers

530
00:20:08,580 –> 00:20:12,340
in the footer and fix branding, logo size, padding and colors.

531
00:20:12,340 –> 00:20:14,020
So marketing doesn’t chase you.

532
00:20:14,020 –> 00:20:16,020
If signatures or approval blocks are required,

533
00:20:16,020 –> 00:20:17,460
design space for them.

534
00:20:17,460 –> 00:20:21,180
And yes, test the exact printer if the output goes to a physical device

535
00:20:21,180 –> 00:20:22,580
that trims aggressively.

536
00:20:22,580 –> 00:20:23,180
Quick win.

537
00:20:23,180 –> 00:20:25,460
Build a one-page cover with KPIs, big numbers,

538
00:20:25,460 –> 00:20:28,660
sparkline or small chart, then drive detail pages via parameters

539
00:20:28,660 –> 00:20:29,540
or drill through.

540
00:20:29,540 –> 00:20:32,780
Stakeholders get instant signal, auditors get detail,

541
00:20:32,780 –> 00:20:35,940
and nobody scrolls through 10 pages to find the point.

542
00:20:35,940 –> 00:20:39,580
Dashboards are for screens, paginated reports are for paper.

543
00:20:39,580 –> 00:20:41,100
Choose the tool that matches the job

544
00:20:41,100 –> 00:20:42,620
and you stop fighting physics.

545
00:20:42,620 –> 00:20:44,900
Use the matrix, prototype in service,

546
00:20:44,900 –> 00:20:48,300
produce in report builder, productize in visual studio

547
00:20:48,300 –> 00:20:49,580
when governance demands it.

548
00:20:49,580 –> 00:20:53,260
Today, pick your door, build a one-page prototype, test

549
00:20:53,260 –> 00:20:57,140
exports and escalate only if requirements truly expand.

550
00:20:57,140 –> 00:21:00,660
If this saved you hours, repay the time, subscribe.

551
00:21:00,660 –> 00:21:03,700
Listen the next podcast for live report builder expressions,

552
00:21:03,700 –> 00:21:05,500
a visual studio enterprise template,

553
00:21:05,500 –> 00:21:07,300
and a downloadable checklist.

554
00:21:07,300 –> 00:21:09,020
Lock in your upgrade path, tap follow

555
00:21:09,020 –> 00:21:11,780
and let the next lesson deploy automatically.





Source link

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

Leave a reply

Follow
Search
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...