WebRTC Quality Analytics

Documentation / Install

Install

Setup takes about ten minutes: install the app, map two resources, create the tables, grant the app access, and upload your first dump.

Marketplace listing coming soon. Until the public listing is live, email info@flying-village.com for early access — the steps below are the same.

Prerequisites

Step 1 — Install the app and map resources

Install WebRTC Quality Analytics from the Marketplace listing. During app setup you are asked to map the resources the app declares:

ResourceSelectPermissionResource key
SQL warehouseYour serverless SQL warehouseCan usesql-warehouse
Serving endpointA pay-per-token Foundation Model endpointCan queryllm-endpoint

The warehouse and endpoint permissions are granted to the app's service principal automatically through this mapping.

Step 2 — Choose the catalog and schema

The app reads its catalog/schema from two environment variables (visible in the app's configuration):

Environment variableDefaultMeaning
WEBRTC_QOE_CATALOGworkspaceUnity Catalog catalog holding the app's tables
WEBRTC_QOE_SCHEMAwebrtc_qoe_devSchema holding the app's tables

Keep the defaults or point them at a catalog/schema of your choice, then create the schema if it does not exist:

CREATE SCHEMA IF NOT EXISTS <catalog>.<schema>;

Step 3 — Create the tables

Run the bundled DDL (three files, in order) in the SQL editor. The statements use unqualified table names, so select your catalog/schema first:

USE CATALOG <catalog>;
USE SCHEMA <schema>;
-- then run, in order:
--   sql/ddl/001_bronze.sql   (upload ledger)
--   sql/ddl/002_silver.sql   (normalized W3C getStats tables)
--   sql/ddl/003_gold.sql     (QoE aggregates)

All statements are CREATE TABLE IF NOT EXISTS — re-running is safe. This creates 12 Delta tables (1 bronze, 6 silver, 5 gold).

Step 4 — Grant the app's service principal access

Find the app's service principal client ID on the app's page (or via databricks apps get <app-name>service_principal_client_id), then:

GRANT USE CATALOG ON CATALOG <catalog> TO `<sp_client_id>`;
GRANT USE SCHEMA, SELECT, MODIFY ON SCHEMA <catalog>.<schema> TO `<sp_client_id>`;

Step 5 — Start the app and upload a dump

  1. Start the app and open its URL.
  2. Capture a dump during a call — see Capture a dump.
  3. Drop the JSON file on the app's Upload dump page (Data section in the sidebar).

The upload runs the full pipeline (bronze → silver → gold) and the call appears in every view within seconds. Re-uploading the same file is detected by content hash and skipped.

Step 6 (optional) — AI/BI dashboard template

A Lakeview dashboard template (dashboards/webrtc_qoe_fleet.lvdash.json) is bundled for monitoring outside the app. Replace workspace.webrtc_qoe_dev in the file with your <catalog>.<schema>, import it in your workspace (Create → Import on a workspace folder), and assign your SQL warehouse.

Troubleshooting

SymptomFix
App shows TABLE_OR_VIEW_NOT_FOUND Step 3 not run, or WEBRTC_QOE_CATALOG / WEBRTC_QOE_SCHEMA point elsewhere
PERMISSION_DENIED on queries Step 4 grants missing for the app's service principal
Upload succeeds but views stay empty Check the bronze ledger: SELECT * FROM <catalog>.<schema>.bronze_uploads ORDER BY uploaded_at DESCparse_status='failed' rows include the parse error
AI diagnosis fails The mapped serving endpoint must be a chat-capable pay-per-token endpoint with a non-zero rate limit; the app's service principal needs Can query (granted by the llm-endpoint mapping)
Slow first load of a view Serverless warehouse cold start — subsequent queries are fast (the app caches and parallelizes its queries)

Data & privacy notes