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')

    ;

    System:

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

    ;

    FOR i=0 to '$(vTableCount)'

    Concatenate(System)

    LOAD

              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

    Concatenate(System)

    LOAD DISTINCT

    *

    FROM $(Doc)(qvd)

    ;

    END IF

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

    ;

    DROP Table System

    ;