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
;
Comments