EducationSoftwareStrategy.com
StrategyCommunity

Knowledge Base

Product

Community

Knowledge Base

TopicsBrowse ArticlesDeveloper Zone

Product

Download SoftwareProduct DocumentationSecurity Hub

Education

Tutorial VideosSolution GalleryEducation courses

Community

GuidelinesGrandmastersEvents
x_social-icon_white.svglinkedin_social-icon_white.svg
Strategy logoCommunity

© Strategy Inc. All Rights Reserved.

LegalTerms of UsePrivacy Policy
  1. Home
  2. Topics

KB19760: XML-generation-for-Dashboard-Performance-Optimizations


Community Admin

• Strategy


This technical note is part of How to troubleshoot Dashboard Performance document that can be found KB19625.

This technical note is part of How to troubleshoot Dashboard Performance document that can be found KB19625
The amount of data retrieved and objects being used in a Report Services Dashboard have a direct impact in the size of the final Dashboard. The bigger the Dashboard size the longer it will take to be prepared, be sent to the client, and render.
XML generation:
After the datasets in the Dashboard have been merged, the Intelligence Server generates the necessary XML or binary stream depending on the output selected by the end user.
 
If the dashboard has been executed for PDF output the Intelligence Server generates the binary stream that will be sent to the client.
 
For all other outputs, Strategy Office, Strategy Web in DHTML mode and Strategy Web in Flash mode the Intelligence Server generate XML.
 
The XML generated to transport data and Dashboard formatting information is generated using a tree of nodes, as any other XML file, in order to separate the different sections and pieces of data inside the file.
 

ka04W00000148kSQAQ_0EM4400000028U6.jpeg

 
The highlighted sections are an example of overheads in an XML file (data.xml)
 
Overheads are the tags and properties inside the XML file, used to create the placeholders necessary to separate the different object's data. Inside the XML the attribute elements inside a drop down need to be separated from the attribute elements displayed inside a grid. This separation is achieved by the use of tags. This tags is what we identify as overheads. Because of the nodes used to differentiate the data pertaining to different objects, certain objects added to a Dashboard, for example selectors, might carry higher overheads affecting the size of the XML file.
 
In general terms, one can understand that the XML generated contains the data needed to display the dashboard to the end user, structure information and overheads.
 
XML size = data + structure + overheads
 
Every time an object is added to a dashboard the size of the XML is increased. Different components have bigger impact on the XML size than others. The following two sections will discuss this impact based on whether the end user requests a Dashboard in DHTML or Flash view mode.
 
Two important concepts to understand the differences between Flash and DHTML documents are "Current View" and "Slices of Data".
 
When executing a grid with a page by the displayed data in the grid for the current selection is what we will call "Current View". All the possible views for all the available elements in the page by will be the "Slices of Data"
 

ka04W00000148kSQAQ_0EM4400000028U8.jpeg

 
Current View
 

ka04W00000148kSQAQ_0EM4400000028U3.jpeg

 
Slices of data
 
Common Optimization Techniques for Flash and DHTML dashboards

  • The number of dataset instances in the Dashboard has a direct impact on XML generation. The more dataset instances the larger the XML generated. Avoid adding unnecessary data to the dashboard and avoid adding instances of repetitive data.
  • Significant performance degradation could occur when using an OLAP report as a dataset in a dashboard instead of a regular report. This is because the analytical engine needs to process extra information and make an additional copy of the base report every time the dashboard is executed.
     
    The following technical note explains how to convert OLAP reports to regular reports
     
    KB5700-8X-3349
  • If the same dataset is required to be viewed in graph and grid view modes instead of adding an instance of the dataset in grid view mode and a second one in graph view mode, which would cause data duplication in the xml, add one instance and enable the "Quick Switch" option to allow users to switch between view modes.
     
ka04W00000148kSQAQ_0EM4400000028UB.jpeg
  •  
    Enabling "Quick Switch" allows users to see the same data in grid or graph view without adding the data of the grid twice into the data.xml file
     
  • Text fields from the same dataset perform better than entire dataset as a grid. However using grids from different datasets perform better than text fields from different datasets.
     
    This is true for small and medium size grids only. If too much of data needs to be displayed, grids perform better than fields in both scenarios.
     

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

    Certified
    Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard


    The image below shows the use of Dynamic text fields together with a grid instance
     
ka04W00000148kSQAQ_0EM4400000028U3.jpeg
  •  
    Example of dynamic text fields Vs grids
     

DHTML Dashboards:
When executing a Report Services Dashboard in DHTML view mode the Intelligence Server generates the XML needed to display the Current View to the end user. If the document has a page by or a selector that calculates further slices of the document, when the user changes the selection on those components Strategy Web makes a new request for the new View to the Intelligence Server.
 
Optimization Techniques:

  • A simple but very efficient way to optimize a DHTML dashboard is by slicing the data using either page by attributes or selectors to decrease the size of the Current View
     
  • When selectors are used in a DHTML Dashboard, every time a user changes the selection in the selector Strategy will fetch the new view from the Intelligence Server. The same is not true for panel stacks. When having a panel stack the hidden panels are not visible to the user but are also loaded. Reduce panel stacks on the dashboard if you want to reduce initial load time. Alternatively add Panel stacks if you want to avoid round trips to the Intelligence Server.
     
  • Although only the first panel in a panel stack is visible, the underlying panels still contribute to the data and definition of a dashboard and therefore can affect memory consumption and time it takes for a dashboard to be generated and rendering
     
  • Because Strategy Web will fetch the new view from the Intelligence Server every time a selection is made in a selector the use of selector controls to slice the data as much as possible in DHTML mode is encouraged; this will improve response times by making the dashboard more compact.
     
  • If the final dashboard relies in the use of many objects and retrieves a large amount of data, efforts should be made to split one dashboard into multiple smaller dashboards and using HTML links to link the main dashboards to the child dashboards. This optimizes the performance as well as resource utilization of the system resulting in increased throughput.
     

Flash Documents:
For Flash Documents the Intelligence Server generates the XML necessary to display the Current View and all other Slices of Data present in the Dashboard. XML generation and transport times are increased but responsiveness once the data is on the client is immediate. Flash documents also have the advantage of being more visually appealing and flow smoother between transitions.
 
The three main components of a Report Services Dashboard in Flash view mode are:
 

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Certified
Amount of dataData coming fromUseMediumSame datasetText fields Different DatasetsGridsLargeSame datasetGrids Different DatasetsGridsFile nameDescriptiondashboard.swfDashboard rendering containerdata.xmlContains data necessary to render the dashboarddefinition.xmlContains formatting and properties for each element on a dashboard

Optimization Techniques

  • The key is to keep the size of the Data and Definition XML files small. Data XML is the usual suspect for performance issues and is important to try to keep the size of this file as small as possible achieving the Dashboard design goals.
     
  • One important thing to keep in mind when designing Dashboards, in terms of XML generation, is that if multiple instances of the same dataset are used in a dashboard, the Intelligence Server treats them as separate datasets instances and sends information of this data multiple times affecting the XML size.
     
ka04W00000148kSQAQ_0EM4400000028U7.jpeg
  •  
    For instance having one data set that produces 10 rows. If we add three grids from this data set into the dashboard the Intelligence Server will generate XML to send three grids of 10 rows regardless if the data all comes from the same dataset.
     
    Instead of adding similar datasets instances to a dashboard, each with its own filter, consider using one dataset by placing view filters on the grid templates. View filters on grids can be applied when designing the Dashboard.
     
    Having the same dataset instance twice in a dashboard showing the exact same data does not make sense in terms of dashboard design, since the same data will be sent twice.
     
  • Reduce the number of selector controls whenever possible or the amount of attribute elements they contain. For each selection of a selector control that controls a grid, the corresponding slice of data is pre-calculated and stored in the XML.
     
  • Selector controls are more efficient than group bys in terms of XML overheads. This is because selector controls store the slices of data whereas group bys have been known to store the entire data.
     
  • A densely formatted dashboard increases the size of the definition XML, which reduces performance. It is recommended to keep formatting to as low as possible; not compromising on the looks of the dashboard. Shading, rounded corners, boxes, images etc. all contribute to increasing the size of the dashboard.
     
  • Strategy Widgets can be used to display multiple grids and graphs in a single visualization to reduce the size of the output data XML
     
ka04W00000148kSQAQ_0EM4400000028U5.jpeg
  • Reduce the length of the image path and the name of the image.
  • If a panel is targeted by a selector and the panel contains Text lable for each Metric, Move all the labels outside of this selected panel. The selected panel should only contain content that needs to be changed on the fly.

Comment

0 comments

Details

Knowledge Article

Published:

June 2, 2017

Last Updated:

March 26, 2018