Dashboard Change Monitoring

    The purpose of this document is to provide a simple solution to monitoring the change of data and performance over time within one or more dashboards.


    I've included the script below as well as a qvw application to illustrate the set up.


    To implement, include the script at the end of any dashboard you wish to monitor as well as this line at the start - LET vReloadStart=timestamp(now());


    The script will read common attributes of information pertaining to the dashboard and will build a historical "log" of this information into a qvd file. Scalability if applied to multiple dashboards is to store qvd's into a common location for loading into a monitoring dashboard for trending the changes over time as well as comparatively assessing each dashboard. This could provide high-level utility given the simplicity of implementation including the tracking of reload time performance.



    //begin script

    LET vReloadEnd = Timestamp(now())


    LET vTableCount = NoOfTables()


    LET vReportCount = NoOfReports()


    LET vReloadDuration=interval(vReloadEnd - vReloadStart,'hh:mm:ss')



    LOAD * INLINE [FieldCount,RowCount,Table,ReloadStart,ReloadEnd,ReloadDuration,LastReload,TableCountTotal,ReportCountTotal,DocumentPath,DocumentName,DocumentTitle,Date]


    FOR i=0 to '$(vTableCount)'



              NoOfFields(TableName($(i))) as FieldCount,

              NoOfRows(TableName($(i))) as RowCount,

              TableName($(i)) as Table,

              '$(vReloadStart)' as ReloadStart,

              '$(vReloadEnd)' as ReloadEnd,

              '$(vReloadDuration)' as ReloadDuration,

              ReloadTime() as LastReload          ,

              NoOfTables() as TableCountTotal,

              NoOfReports() as ReportCountTotal,

              DocumentPath() as DocumentPath,

              DocumentName() as DocumentName,

              DocumentTitle() as DocumentTitle,

              date(today()) as Date

              AutoGenerate 1


    NEXT i

    //Change to specify different file name to save qvd (such as a common place to store output) for multiple dashboards

    LET Doc = PurgeChar(DocumentTitle(),' ')&'_System_Info.qvd'       


    //Change to specify different path to check for if file exists

    LET CheckDoc = replace(DocumentPath(),DocumentName(),'')&'$(Doc)'


    IF NOT ISNULL(FileSize('$(CheckDoc)')) THEN




    FROM $(Doc)(qvd)


    END IF

    STORE System into '$(Doc)'(qvd)


    DROP Table System