Real-Time Dashboard¶
A Fabric Real-Time Dashboard over the curated FdaInteractions table, complementing the
WinForms review app: the app is for per-interaction drill-down; the dashboard is for
fleet-level health & tuning trends. Both read the same table.
Source:
fabric/dashboards/FDA_Observability_RTI_Dashboard.json
(+ a README.md with
the manual-build query pack).
Tiles¶
| Tile | Visual | Purpose |
|---|---|---|
| KPIs | table | Total, % with DAX, error %, unmatched %, users, P95 ms over the selected range |
| Interactions over time | timechart | Volume + how many carried executed DAX |
| Error rate % | timechart | NL2DAX failure trend |
| DAX latency P50/P95 | timechart | Performance tuning signal |
| Capture source coverage | pie | Which surfaces are feeding the pipeline (graph/audit/monitoring) |
| DAX correlation confidence | bar | Exact vs Windowed vs Unmatched (data-quality of the join) |
| Top question patterns | table | Highest-volume questions → candidates for FDA example queries |
| Slowest generated DAX | table | Worst-performing queries to optimize |
| Recent interactions | table | question → DAX → answer, newest first |
All tiles honour the built-in Time range parameter (_startTime / _endTime), default last 7 days,
auto-refresh 5 min.
JSON structure¶
The dashboard JSON (schema version 56) declares:
dataSources— onemanual-kustosourceds-fdawith aclusterUrianddatabaseyou replace at import.parameters— adurationparameterp-timerangeexposing_startTime/_endTime, default 7 days.pages— a singleOverviewpage.tiles— each with avisualType, gridlayout, and aqueryRefto a query id.- queries — the KQL backing each tile (the query pack below).
Import (preferred)¶
- In your Fabric workspace: + New item → Real-Time Dashboard, name it
FDA Observability. - Open it → Manage → Replace with file (or New dashboard → Import) and pick
FDA_Observability_RTI_Dashboard.json. - Open the Data sources pane and set the connection on
ds-fda:- Cluster URI = your Eventhouse Query URI (replace
REPLACE-cluster.REPLACE-region). - Database =
FDA_Observability_EH.
- Cluster URI = your Eventhouse Query URI (replace
- Save. If a tile errors, confirm
01_tables.kql+02_policies.kqlwere run (a tile calls the stored functionFdaTopQuestions).
Schema-versioned JSON
Real-Time Dashboard JSON is schema-versioned. If your Fabric build rejects the file on import, create the dashboard manually and paste the queries from the pack below — it takes ~10 minutes and is version-proof. The connection lives only in the data source, so nothing else is environment-specific.
Query pack (manual build / fallback)¶
Create one data source pointing at the Eventhouse, add a Time range parameter (variables _startTime,
_endTime), then add a tile per query.
FdaInteractions
| where Timestamp between (_startTime .. _endTime)
| summarize Total=count(), WithDAX=countif(isnotempty(ExecutedDax)), Errors=countif(Status=='Error'),
Unmatched=countif(MatchConfidence=='Unmatched'), Users=dcount(User), P95ms=round(percentile(DurationMs,95),0)
| extend ['With DAX %']=round(100.0*WithDAX/Total,1), ['Error %']=round(100.0*Errors/Total,1),
['Unmatched %']=round(100.0*Unmatched/Total,1)
| project Total, ['With DAX %'], ['Error %'], ['Unmatched %'], Users, P95ms
Power BI route (alternative)¶
Prefer Power BI? Build a report on the same Eventhouse:
- Get data → Azure Data Explorer (Kusto) → paste the Eventhouse Query URI → database
FDA_Observability_EH. - Use DirectQuery for live data (or Import for snapshots). Point the model at
FdaInteractions(and call theFdaTuningSummary/FdaTopQuestionsfunctions via a native query for the aggregate pages). - Recreate the tiles above as Power BI visuals. The Microsoft workspace-monitoring Power BI template
(fabric-toolbox
monitoring/workspace-monitoring-dashboards) is a good styling reference.