Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated:
1
00:00:00,000 --> 00:00:03,000
Tutor: Up next, let's talk about the Performance Analyzer
2
00:00:03,000 --> 00:00:06,000
which is another tool that's native to Power BI.
3
00:00:06,000 --> 00:00:09,000
And the Performance Analyzer is a tool that records all
4
00:00:09,000 --> 00:00:10,000
of the behind the scenes actions
5
00:00:10,000 --> 00:00:12,000
that are happening within your report.
6
00:00:12,000 --> 00:00:14,000
When filters are changed,
7
00:00:14,000 --> 00:00:17,000
a visual is updated, cross filtering occurs,
8
00:00:17,000 --> 00:00:20,000
DAX measures are calculated, et cetera.
9
00:00:20,000 --> 00:00:23,000
Basically, anytime something is updated within the report
10
00:00:23,000 --> 00:00:25,000
the performance Analyzer records it
11
00:00:25,000 --> 00:00:27,000
and will then display it for you.
12
00:00:27,000 --> 00:00:31,000
So you can almost think of this like Excel's macro recorder.
13
00:00:31,000 --> 00:00:33,000
The Performance Analyzer tracks the time
14
00:00:33,000 --> 00:00:36,000
in milliseconds for each action
15
00:00:36,000 --> 00:00:40,000
and then groups those actions into distinct buckets,
16
00:00:40,000 --> 00:00:44,000
query load time, the visual load time, other tasks
17
00:00:44,000 --> 00:00:46,000
and then you'll have a specific line item
18
00:00:46,000 --> 00:00:48,000
for direct query visuals
19
00:00:48,000 --> 00:00:51,000
if a direct query connection is present.
20
00:00:51,000 --> 00:00:55,000
So looking at this Performance Analyzer image on screen
21
00:00:55,000 --> 00:00:59,000
we can see here the output of each of these steps.
22
00:00:59,000 --> 00:01:02,000
After the Performance Analyzer is finished recording
23
00:01:02,000 --> 00:01:04,000
all of those recorded steps will show
24
00:01:04,000 --> 00:01:07,000
up with an associated time, they'll be named
25
00:01:07,000 --> 00:01:10,000
and they'll be in this pane here.
26
00:01:10,000 --> 00:01:12,000
And by expanding an individual query
27
00:01:12,000 --> 00:01:15,000
like our card query that we have highlighted,
28
00:01:15,000 --> 00:01:18,000
you'll be able to see all of these different buckets.
29
00:01:18,000 --> 00:01:21,000
So let's talk about each of these categories.
30
00:01:21,000 --> 00:01:23,000
First, we've got the DAX query, and this shows the amount
31
00:01:23,000 --> 00:01:27,000
of time that it takes for the visual to send the query
32
00:01:27,000 --> 00:01:31,000
to the internal engine for the engine to process and run it
33
00:01:31,000 --> 00:01:34,000
and then to return the result.
34
00:01:34,000 --> 00:01:37,000
So basically this is how long it takes the DAX engines
35
00:01:37,000 --> 00:01:39,000
to process your code.
36
00:01:39,000 --> 00:01:41,000
And for the DAX query specifically
37
00:01:41,000 --> 00:01:43,000
this is where some external tools,
38
00:01:43,000 --> 00:01:46,000
like DAX Studio are really useful for optimizations.
39
00:01:47,000 --> 00:01:50,000
Next up we have the visual display bucket
40
00:01:50,000 --> 00:01:51,000
and this bucket shows the amount
41
00:01:51,000 --> 00:01:55,000
of time it takes for the visual you've selected to render.
42
00:01:55,000 --> 00:01:59,000
In basic terms, it's simply just the time it takes
43
00:01:59,000 --> 00:02:02,000
for that visual to kind of draw itself on screen.
44
00:02:02,000 --> 00:02:06,000
Now, keep in mind that if the visual contains web-based
45
00:02:06,000 --> 00:02:09,000
or geocoded images, those will also be included
46
00:02:09,000 --> 00:02:10,000
in this duration as well.
47
00:02:11,000 --> 00:02:14,000
And then last we've got our other bucket.
48
00:02:14,000 --> 00:02:14,000
In the other bucket
49
00:02:14,000 --> 00:02:18,000
it's really just all of the other tasks that the engine is
50
00:02:18,000 --> 00:02:21,000
performing that aren't related to either creating the visual
51
00:02:21,000 --> 00:02:25,000
or returning the results of the specific DAX query.
52
00:02:25,000 --> 00:02:27,000
So the other bucket includes activities
53
00:02:27,000 --> 00:02:30,000
like preparing the query, waiting for other visuals
54
00:02:30,000 --> 00:02:33,000
on the page to complete their queries,
55
00:02:33,000 --> 00:02:36,000
plus other background tasks that the engines are performing.
56
00:02:36,000 --> 00:02:39,000
All right, so let's head over to Power BI
57
00:02:39,000 --> 00:02:40,000
and we're gonna explore
58
00:02:40,000 --> 00:02:42,000
the Performance Analyzer for ourselves.
59
00:02:43,000 --> 00:02:46,000
All right, so back in our AdventureWorks report here.
60
00:02:46,000 --> 00:02:49,000
And first things first, I'm gonna collapse these panes,
61
00:02:49,000 --> 00:02:51,000
I'm gonna remove formatting.
62
00:02:51,000 --> 00:02:52,000
We'll clean this up a little bit,
63
00:02:52,000 --> 00:02:54,000
and then I'm gonna select the white space here just
64
00:02:54,000 --> 00:02:57,000
so we don't have a specific visual selected.
65
00:02:57,000 --> 00:02:59,000
So if we come up to the optimized pane
66
00:02:59,000 --> 00:03:02,000
we're gonna click on Performance Analyzer.
67
00:03:02,000 --> 00:03:06,000
And this launches a brand new Performance Analyzer pane.
68
00:03:06,000 --> 00:03:09,000
And we'll change the size of this a little bit.
69
00:03:09,000 --> 00:03:09,000
You can see
70
00:03:09,000 --> 00:03:14,000
that we have one option here right now is start recording.
71
00:03:14,000 --> 00:03:17,000
So if we click start recording, nothing's happened yet.
72
00:03:17,000 --> 00:03:21,000
So there's two ways to start generating this list of items.
73
00:03:21,000 --> 00:03:24,000
We can either click this refresh visuals button
74
00:03:24,000 --> 00:03:27,000
and this is going to refresh all of the visuals on the page
75
00:03:27,000 --> 00:03:30,000
or you could start interacting with the report
76
00:03:30,000 --> 00:03:32,000
and that will also trigger this
77
00:03:32,000 --> 00:03:35,000
Performance Analyzer list to populate.
78
00:03:35,000 --> 00:03:36,000
So let's start off here
79
00:03:36,000 --> 00:03:38,000
and we're gonna click Refresh Visuals.
80
00:03:38,000 --> 00:03:41,000
So what this does is Power BI goes through
81
00:03:41,000 --> 00:03:42,000
and it's going to refresh all
82
00:03:42,000 --> 00:03:45,000
of the different visuals within the page
83
00:03:45,000 --> 00:03:50,000
and it's gonna return the results in milliseconds, right?
84
00:03:50,000 --> 00:03:53,000
And you can see we've got a bunch of different values here.
85
00:03:53,000 --> 00:03:54,000
And if we expand one of these
86
00:03:54,000 --> 00:03:56,000
we can start at the top of the list here.
87
00:03:56,000 --> 00:03:59,000
Like with our left nav background
88
00:04:00,000 --> 00:04:04,000
you can see that the visual display took 604 milliseconds
89
00:04:04,000 --> 00:04:09,000
and then our other bucket took 453 milliseconds.
90
00:04:09,000 --> 00:04:11,000
Because this is more or less an image
91
00:04:11,000 --> 00:04:14,000
there's no DAX associated with this, right?
92
00:04:14,000 --> 00:04:17,000
So it makes sense that we're not seeing that DAX bucket.
93
00:04:17,000 --> 00:04:19,000
Same thing with our next shape here.
94
00:04:19,000 --> 00:04:21,000
We've got this shape that's highlighted
95
00:04:21,000 --> 00:04:23,000
for this first kind of KPI card.
96
00:04:23,000 --> 00:04:28,000
And you can see again in total it took 1,049 milliseconds
97
00:04:28,000 --> 00:04:29,000
for this to initially load.
98
00:04:29,000 --> 00:04:32,000
The visual display was 604
99
00:04:32,000 --> 00:04:35,000
and then the other bucket was 444.
100
00:04:35,000 --> 00:04:37,000
So pretty straightforward there.
101
00:04:37,000 --> 00:04:42,000
Let's collapse these and let's head down to our first card.
102
00:04:42,000 --> 00:04:47,000
So now, because this card actually contains a DAX query
103
00:04:47,000 --> 00:04:49,000
we now have that detail.
104
00:04:49,000 --> 00:04:52,000
So again, this is a long time right to wait
105
00:04:52,000 --> 00:04:56,000
for this to load, 5,966 milliseconds.
106
00:04:56,000 --> 00:05:00,000
But what's interesting here is the DAX query was 408,
107
00:05:00,000 --> 00:05:03,000
the visual display was 23, and the other component, right
108
00:05:03,000 --> 00:05:05,000
that time that we spent waiting
109
00:05:05,000 --> 00:05:06,000
for everything else to kind of load
110
00:05:06,000 --> 00:05:11,000
or render ahead of this took 5,535 milliseconds.
111
00:05:12,000 --> 00:05:15,000
So again, you get some really interesting insights here
112
00:05:15,000 --> 00:05:19,000
as you start poking around at how long load times take.
113
00:05:19,000 --> 00:05:22,000
All right, so at any point here, you know, say you're happy
114
00:05:22,000 --> 00:05:24,000
with the results here, you kind of understand how
115
00:05:24,000 --> 00:05:27,000
things are working, click stop.
116
00:05:28,000 --> 00:05:31,000
We can close out of the Performance Analyzer pane.
117
00:05:31,000 --> 00:05:35,000
And then again, it's a simple is turning it back on again,
118
00:05:35,000 --> 00:05:37,000
start recording, and then we can refresh all
119
00:05:37,000 --> 00:05:40,000
of the visuals to get those durations
120
00:05:40,000 --> 00:05:41,000
and milliseconds again.
121
00:05:41,000 --> 00:05:44,000
One other interesting thing to call out here is
122
00:05:44,000 --> 00:05:48,000
that you can actually export the entire list here
123
00:05:48,000 --> 00:05:50,000
as a JSON file, right?
124
00:05:50,000 --> 00:05:52,000
So if you click export, it's basically
125
00:05:52,000 --> 00:05:56,000
gonna give you this entire output in JSON format.
126
00:05:56,000 --> 00:05:58,000
Pretty cool stuff here.
127
00:05:58,000 --> 00:06:00,000
And at this point you may be thinking,
128
00:06:00,000 --> 00:06:01,000
"All right this is great.
129
00:06:01,000 --> 00:06:03,000
Like I can see what's happening
130
00:06:03,000 --> 00:06:06,000
and I can export this as a JSON file.
131
00:06:06,000 --> 00:06:08,000
But what does that mean?
132
00:06:08,000 --> 00:06:09,000
Like what do I do with this?"
133
00:06:09,000 --> 00:06:12,000
And there are some great performance optimization tips
134
00:06:12,000 --> 00:06:14,000
on learn.microsoft.com.
135
00:06:14,000 --> 00:06:16,000
So things like making sure
136
00:06:16,000 --> 00:06:19,000
that your data model is really well built, right?
137
00:06:19,000 --> 00:06:21,000
A lot of those best practices that we covered
138
00:06:21,000 --> 00:06:23,000
in the modeling section, limiting the number
139
00:06:23,000 --> 00:06:27,000
of visuals on the page to only what's necessary, right?
140
00:06:27,000 --> 00:06:30,000
That's gonna help decrease those other wait times.
141
00:06:30,000 --> 00:06:34,000
Making sure that you're applying restrictive filters so that
142
00:06:34,000 --> 00:06:38,000
only the data that needs to be loaded is actually loaded.
143
00:06:38,000 --> 00:06:41,000
You know, if you're using custom visuals
144
00:06:41,000 --> 00:06:43,000
check on their performance, right?
145
00:06:43,000 --> 00:06:46,000
Is a custom visual loading really slowly
146
00:06:46,000 --> 00:06:49,000
and dragging down the overall performance of your report?
147
00:06:49,000 --> 00:06:51,000
And you can also start digging into your DAX,
148
00:06:51,000 --> 00:06:54,000
right within the Power BI report as well.
149
00:06:54,000 --> 00:06:55,000
So let's say that you notice one
150
00:06:55,000 --> 00:06:59,000
of your DAX calculations is running really, really slow.
151
00:06:59,000 --> 00:07:01,000
You know, let's jump down to, you know
152
00:07:01,000 --> 00:07:04,000
this revenue trending chart here, right?
153
00:07:04,000 --> 00:07:07,000
But let's say your DAX query here is running
154
00:07:07,000 --> 00:07:08,000
very, very slow.
155
00:07:08,000 --> 00:07:11,000
You could dig into that measure and try and determine
156
00:07:11,000 --> 00:07:14,000
what types of DAX optimizations could be made.
157
00:07:14,000 --> 00:07:17,000
Maybe you're using iterator functions that end
158
00:07:17,000 --> 00:07:19,000
up being slower than you anticipated
159
00:07:19,000 --> 00:07:21,000
or maybe you're using a bunch
160
00:07:21,000 --> 00:07:24,000
of different logical functions that are slowing things down.
161
00:07:24,000 --> 00:07:26,000
So there's some instances like that where
162
00:07:26,000 --> 00:07:28,000
you could kind of discern or understand like,
163
00:07:28,000 --> 00:07:31,000
"Hey, if I update these functions that I'm using
164
00:07:31,000 --> 00:07:35,000
within a measure that may impact the optimization."
165
00:07:35,000 --> 00:07:38,000
But if you're really looking for some deeper optimizations
166
00:07:38,000 --> 00:07:42,000
and understanding into exactly what's happening,
167
00:07:42,000 --> 00:07:45,000
there are some great third party tools, like Dax Studio
168
00:07:45,000 --> 00:07:48,000
and we're gonna talk about some of those quickly, next.
13833
Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.