- Ciao, friends.
Performance Analyzer is an interesting tool
in Power BI Desktop that helps you find
the bottleneck in your reports.
Performance Analyzer displays a number of information
about every visualization in your report
that is mainly represented by the duration.
However, these numbers sometimes can be better analyzed
using a tool like DAX Studio in order to get
a better understanding of what is happening.
Let me describe one.
As you see, every visualization here has a number,
which is the total execution time,
which is the duration required to complete
the preparation and the visualization of the report.
But if you think, for a moment,
every visualization has to perform a couple of operations.
First, every visualization has to execute the query over
data retrieving the numbers that have to be displayed.
Second, these numbers have to be correctly displayed
in the visualization, through a map, a chart, or a table.
Now, in reality,
a report can have many of these visualizations,
and of course, it is impossible
to execute all these operations at once.
There is one operation, then another,
so you can imagine that there is a waiting time required
to complete one operation after the other.
Now, this time is what is included in this Other row.
So, Other, the presence of Other,
is just the number that says okay, in order to complete
the entire visualization of this visual,
we spent also 115 milliseconds.
But this number is just the difference between
the total execution time and the actual time spent
to complete the report.
And the thing is that we don't have any leverage,
any way to control this Other.
This number, Other, partially depends on the number
of visualizations that we have in the report,
and so certainly, the more visuals you have in the report,
the bigger could be Other here.
So, when we want to understand what is impacting
our report overall,
it could be a good idea to try to understand
the execution time of all the visuals,
ignoring the Other, 'cause Other is not something
you can actually leverage.
So, Performance Analyzer has an interesting tool,
Export, that creates a file with all the information
that had been gathered in a session of Performance Analyzer.
So, let me do this.
So if I click Export,
and I save this information into a file,
what I get is the ability to open this information
with another tool.
DAX Studio is the tool I want to use,
'cause DAX Studio has a specific feature,
Load Performance Data, that can open the file
we save from Performance Analyzer in Power BI Desktop.
This file is a JSON file.
It's just the extension name that we have here,
and if I open the file that I saved before,
I see here in this pane at the bottom.
This new pane, Power BI Performance,
just display the same information we have seen
in Power BI Desktop with a different representation,
'cause this file has more details.
But let's start with what we've already seen
in Performance Analyzer.
Query Millisecond is the number you have seen
for DAX Query, and Render Millisecond
is the time you have seen for visual display.
The sum of these two numbers is what actually
is the cost of the visual,
and this sum is represented here in Total Millisecond.
If I want to know what is the slowest visual in my report,
what I have to do, I have to sort this report,
this list, by Total Millisecond,
and I can say top 10 customer is the visual
that overall is the more expensive one in my report.
This operation is not possible, summing the two numbers,
in Performance Analyzer, for example.
The second information we have here
is the number of rows returned by the query.
The query requested 11 rows to the database
and these 11 rows has been displayed in the table.
I can show you, one second.
This is the table that represents the top 10 customer.
Why 11?
10 customers, plus one with the total,
so you see that there is a direct correlation
between the number of rows and the content
of the visualization.
Finally, we also have the complete DAX query,
executed for the visualization,
and we can double-click this line to show here
the complete text of the query plus
additional information in this comment,
that inform me about the exact timing
and other details about the query.
Once I have this query, I can also in DAX Studio
execute the query again,
retrieve the query plan, retrieve other information
that can help me understanding which part of the DAX code
requires some optimization.
But this is the topic for other videos.
Enjoy DAX!