Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
loisloriot
Helper I
Helper I

Performance Analyzer GUI vs JSON

Hi,

 

I'm trying to understand data exported from the Power BI Performance Analyzer.

 

The GUI display is quite easy to understand and the doc is explaning it well:

  • DAX query - if a DAX query was required, this is the time between the visual sending the query, and for Analysis Services to return the results.
  • Visual display - time required for the visual to draw on the screen, including time required to retrieve any web images or geocoding.
  • Other - time required by the visual for preparing queries, waiting for other visuals to complete, or performing other background processing.

 

But once you export the data into a JSON file, you get a very different hierarchy/categories and I can't find any informations about it.

 

I guess it looks like following:

 

(from left to right)

User Action
Visual Container LifecycleRenderData View Transform
Visual Container LifecycleQueryQuery Generation
Visual Container LifecycleQueryExecute Semantic QueryExecute DAX QueryExecute QuerySerialize Rowset

 

And:

Report CanvasUser Action
Report CanvasVisual Container Lifecycle
Report CanvasRender
Report CanvasQuery
Report CanvasData View Transform
Report CanvasQuery Generation
DSEExecute Semantic Query
DSEExecute DAX Query
ASExecute Query
ASSerialize Rowset

 

After testing and comparing it, I guess the GUI DAX query is for the JSON Execute DAX Query and the GUI Visual display is for Render but I have no clue about the rest Smiley Frustrated

 

Am I missing something? Do you know where I can find more information about the data inside the JSON file and who to match it with the GUI display?

 

I tried to compare this:

Performance Analyzer GUIPerformance Analyzer GUI

 

 

 

With the JSON exported:

{"version":"1.0.0","events":[{"name":"User Action","component":"Report Canvas","start":"2019-06-26T09:46:42.601Z","id":"ccdc8d42a77262a7c866","metrics":{"sourceLabel":"UserAction_Refresh"}},{"name":"Visual Container Lifecycle","component":"Report Canvas","start":"2019-06-26T09:46:42.605Z","end":"2019-06-26T09:46:42.689Z","id":"4f4ad20c7589b5410055","metrics":{"status":"finished","visualTitle":"Slicer"}},{"name":"Query","component":"Report Canvas","start":"2019-06-26T09:46:42.606Z","end":"2019-06-26T09:46:42.680Z","id":"ddeb60c0055ae5117113","parentId":"4f4ad20c7589b5410055"},{"name":"Render","component":"Report Canvas","start":"2019-06-26T09:46:42.679Z","end":"2019-06-26T09:46:42.689Z","id":"00c7257f7c270570e97a","parentId":"4f4ad20c7589b5410055"},{"name":"Data View Transform","component":"Report Canvas","start":"2019-06-26T09:46:42.683Z","end":"2019-06-26T09:46:42.684Z","id":"3d1f1275c5e60e2387d7","parentId":"00c7257f7c270570e97a"},{"name":"Query Generation","component":"Report Canvas","start":"2019-06-26T09:46:42.618Z","end":"2019-06-26T09:46:42.619Z","id":"aa1ee88180dc08d344d3","parentId":"ddeb60c0055ae5117113"},{"name":"Execute Semantic Query","component":"DSE","start":"2019-06-26T09:46:42.665Z","end":"2019-06-26T09:46:42.672Z","id":"5e13d473-6a2b-452b-9ca8-84c70e7fcdf4","parentId":"ddeb60c0055ae5117113"},{"name":"Execute DAX Query","component":"DSE","start":"2019-06-26T09:46:42.668Z","end":"2019-06-26T09:46:42.672Z","id":"af473852-aa88-4f43-b379-a841b2a8cee9","parentId":"5e13d473-6a2b-452b-9ca8-84c70e7fcdf4","metrics":{"QueryText":"EVALUATE\r\n  TOPN(101, VALUES('Sources'[Source file name]), 'Sources'[Source file name], 1)\r\n\r\nORDER BY\r\n  'Sources'[Source file name]","RowCount":8}},{"name":"Execute Query","component":"AS","start":"2019-06-26T09:46:42.670Z","end":"2019-06-26T09:46:42.670Z","id":"D8C45547-7EC0-43A1-B33B-2FABBED74ECC","parentId":"af473852-aa88-4f43-b379-a841b2a8cee9"},{"name":"Serialize Rowset","component":"AS","start":"2019-06-26T09:46:42.670Z","end":"2019-06-26T09:46:42.670Z","id":"A4D76E75-1320-49EC-919A-F9B2624AB3F2","parentId":"D8C45547-7EC0-43A1-B33B-2FABBED74ECC"},{"name":"Visual Container Lifecycle","component":"Report Canvas","start":"2019-06-26T09:46:42.607Z","end":"2019-06-26T09:46:42.702Z","id":"0e637d6ab00791aad5dc","metrics":{"status":"finished","visualTitle":"Average of Duration in second by Event component"}},{"name":"Query","component":"Report Canvas","start":"2019-06-26T09:46:42.607Z","end":"2019-06-26T09:46:42.695Z","id":"d328a2280ea702328479","parentId":"0e637d6ab00791aad5dc"},{"name":"Render","component":"Report Canvas","start":"2019-06-26T09:46:42.694Z","end":"2019-06-26T09:46:42.702Z","id":"463a184031590cbdd81b","parentId":"0e637d6ab00791aad5dc"},{"name":"Data View Transform","component":"Report Canvas","start":"2019-06-26T09:46:42.697Z","end":"2019-06-26T09:46:42.698Z","id":"6a9e1b677c169a6de00b","parentId":"463a184031590cbdd81b"},{"name":"Query Generation","component":"Report Canvas","start":"2019-06-26T09:46:42.619Z","end":"2019-06-26T09:46:42.621Z","id":"8b07662b3a29e8dc6800","parentId":"d328a2280ea702328479"},{"name":"Execute Semantic Query","component":"DSE","start":"2019-06-26T09:46:42.665Z","end":"2019-06-26T09:46:42.673Z","id":"73e37c36-c829-4f02-823b-fb73a2233178","parentId":"d328a2280ea702328479"},{"name":"Execute DAX Query","component":"DSE","start":"2019-06-26T09:46:42.668Z","end":"2019-06-26T09:46:42.673Z","id":"c8d980cf-0e50-447d-855a-43ce4efec94d","parentId":"73e37c36-c829-4f02-823b-fb73a2233178","metrics":{"QueryText":"EVALUATE\r\n  TOPN(\r\n    1002,\r\n    SUMMARIZECOLUMNS(\r\n      'Attributes'[Event component],\r\n      \"AverageDuration_in_second\", CALCULATE(AVERAGE('Attributes'[Duration in second]))\r\n    ),\r\n    [AverageDuration_in_second],\r\n    0,\r\n    'Attributes'[Event component],\r\n    1\r\n  )\r\n\r\nORDER BY\r\n  [AverageDuration_in_second] DESC, 'Attributes'[Event component]","RowCount":3}},{"name":"Execute Query","component":"AS","start":"2019-06-26T09:46:42.670Z","end":"2019-06-26T09:46:42.673Z","id":"3F0173F8-E264-4F12-BA89-D5F4970725E7","parentId":"c8d980cf-0e50-447d-855a-43ce4efec94d"},{"name":"Serialize Rowset","component":"AS","start":"2019-06-26T09:46:42.673Z","end":"2019-06-26T09:46:42.673Z","id":"63DEC83B-9498-44C8-AED8-42702CB81A8D","parentId":"3F0173F8-E264-4F12-BA89-D5F4970725E7"},{"name":"Visual Container Lifecycle","component":"Report Canvas","start":"2019-06-26T09:46:42.608Z","end":"2019-06-26T09:46:42.730Z","id":"28f4da8fd13884ebb507","metrics":{"status":"finished","visualTitle":"Average of Duration in second by Event name and Event component"}},{"name":"Query","component":"Report Canvas","start":"2019-06-26T09:46:42.608Z","end":"2019-06-26T09:46:42.716Z","id":"a65d5baf00d59810b06d","parentId":"28f4da8fd13884ebb507"},{"name":"Render","component":"Report Canvas","start":"2019-06-26T09:46:42.716Z","end":"2019-06-26T09:46:42.730Z","id":"36e8a808c4b70040268e","parentId":"28f4da8fd13884ebb507"},{"name":"Data View Transform","component":"Report Canvas","start":"2019-06-26T09:46:42.717Z","end":"2019-06-26T09:46:42.719Z","id":"db8658f0dd3873b18360","parentId":"36e8a808c4b70040268e"},{"name":"Query Generation","component":"Report Canvas","start":"2019-06-26T09:46:42.621Z","end":"2019-06-26T09:46:42.622Z","id":"61a0614382d084817bcd","parentId":"a65d5baf00d59810b06d"},{"name":"Execute Semantic Query","component":"DSE","start":"2019-06-26T09:46:42.665Z","end":"2019-06-26T09:46:42.682Z","id":"79d5cfec-127a-437b-b19e-d96d4f5acf3f","parentId":"a65d5baf00d59810b06d"},{"name":"Execute DAX Query","component":"DSE","start":"2019-06-26T09:46:42.669Z","end":"2019-06-26T09:46:42.681Z","id":"d4ea411c-c68f-4294-aaf6-3be4fa459d03","parentId":"79d5cfec-127a-437b-b19e-d96d4f5acf3f","metrics":{"QueryText":"DEFINE\r\n  VAR __DS0Core = \r\n    SUMMARIZECOLUMNS(\r\n      'Attributes'[Event name],\r\n      ROLLUPADDISSUBTOTAL('Attributes'[Event component], \"IsGrandTotalColumnTotal\"),\r\n      \"AverageDuration_in_second\", CALCULATE(AVERAGE('Attributes'[Duration in second]))\r\n    )\r\n\r\n  VAR __DS0CoreOnlyOutputTotals = \r\n    SELECTCOLUMNS(\r\n      KEEPFILTERS(FILTER(KEEPFILTERS(__DS0Core), [IsGrandTotalColumnTotal] = FALSE)),\r\n      \"'Attributes'[Event name]\", 'Attributes'[Event name],\r\n      \"'Attributes'[Event component]\", 'Attributes'[Event component],\r\n      \"AverageDuration_in_second\", [AverageDuration_in_second]\r\n    )\r\n\r\n  VAR __DS0CoreTableByDM0 = \r\n    SELECTCOLUMNS(\r\n      KEEPFILTERS(FILTER(KEEPFILTERS(__DS0Core), [IsGrandTotalColumnTotal] = TRUE)),\r\n      \"'Attributes'[Event name]\", 'Attributes'[Event name],\r\n      \"SortBy_DM0_0\", [AverageDuration_in_second]\r\n    )\r\n\r\n  VAR __DS0PrimaryWithSortColumns = \r\n    NATURALLEFTOUTERJOIN(\r\n      SUMMARIZE(__DS0Core, 'Attributes'[Event name]),\r\n      __DS0CoreTableByDM0\r\n    )\r\n\r\n  VAR __DS0Primary = \r\n    TOPN(201, __DS0PrimaryWithSortColumns, [SortBy_DM0_0], 0, 'Attributes'[Event name], 1)\r\n\r\n  VAR __DS0Secondary = \r\n    TOPN(\r\n      62,\r\n      SUMMARIZE(__DS0CoreOnlyOutputTotals, 'Attributes'[Event component]),\r\n      'Attributes'[Event component],\r\n      1\r\n    )\r\n\r\nEVALUATE\r\n  __DS0Secondary\r\n\r\nORDER BY\r\n  'Attributes'[Event component]\r\n\r\nEVALUATE\r\n  NATURALLEFTOUTERJOIN(\r\n    __DS0Primary,\r\n    SUBSTITUTEWITHINDEX(\r\n      __DS0CoreOnlyOutputTotals,\r\n      \"ColumnIndex\",\r\n      __DS0Secondary,\r\n      'Attributes'[Event component],\r\n      ASC\r\n    )\r\n  )\r\n\r\nORDER BY\r\n  [SortBy_DM0_0] DESC, 'Attributes'[Event name], [ColumnIndex]","RowCount":13}},{"name":"Execute Query","component":"AS","start":"2019-06-26T09:46:42.673Z","end":"2019-06-26T09:46:42.680Z","id":"F2CC4AED-5D83-4F64-9FD1-941B655DE695","parentId":"d4ea411c-c68f-4294-aaf6-3be4fa459d03"},{"name":"Serialize Rowset","component":"AS","start":"2019-06-26T09:46:42.680Z","end":"2019-06-26T09:46:42.680Z","id":"D55C90D9-7B48-4019-9856-2A472DBC0AE7","parentId":"F2CC4AED-5D83-4F64-9FD1-941B655DE695"}]}

 

I don't clearly understand how (based on the example I provided), we come from:

DATA FROM PERFORMANCE ANALYZER GUI 
NameDuration (ms)
Slicer84
DAX query4
Visual display10
Other70

 

to:

DATA FROM JSON FILE    
Metric Visual TileMetric Source LabelComponentNameDuration (ms)
 UserAction_RefreshReport CanvasUser Action/
Slicer Report CanvasVisual Container Lifecycle84
  Report CanvasRender10
  Report CanvasQuery74
  Report CanvasData View Transform1
  Report CanvasQuery Generation1
  DSEExecute Semantic Query7
  DSEExecute DAX Query4
  ASExecute Query0
  ASSerialize Rowset0

and also, where to find a definition of Report Canvas/DSE/AS/Visual Container Lifecycle and all others?

 

 

Thanks!

Loïs

3 REPLIES 3
v-yuta-msft
Community Support
Community Support

@loisloriot ,

 

Currently there's no doc which can explain every fields in the exported json file. I would suggest you to submit your idea here to let power bi team know your requirement.

 

Regards,

Jimmy Tao

Hi @v-yuta-msft,

 

I also added an comment on the MicrosoftDoc GitHub since it's linked to the MSDN doc!

 

https://github.com/MicrosoftDocs/powerbi-docs/issues/1210

 

Regards,

Lois

Helpful resources

Announcements
Europe Fabric Conference

Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

AugPowerBI_Carousel

Power BI Monthly Update - August 2024

Check out the August 2024 Power BI update to learn about new features.

August Carousel

Fabric Community Update - August 2024

Find out what's new and trending in the Fabric Community.