Skip to main content

Dashboards 3.0

Last updated on

New in 3.0

Dashboards 3.0 is a ground-up rebuild of the Harness dashboarding experience. Moving away from Looker and LookML, the new dashboards are powered by an internal dashboarding technology and a unified data platform purpose-built to drive all data-intensive capabilities across the Harness platform.

AI-PoweredDashboard Agent + MCP
Query LanguageHQL (Harness Query Language)
Multi-DBStarRocks, AlloyDB, BigQuery
Widget Types10+

What Has Changed

Dashboards 3.0 replaces the previous Looker-based dashboarding system with an internally-built technology. This gives Harness full control over the dashboarding experience, removes external dependencies, and enables deeper integration with the platform's AI capabilities.

AspectPrevious (Looker)Dashboards 3.0
TechnologyLooker + LookMLInternal dashboarding engine
Query LanguageLookMLHQL (Harness Query Language)
AI IntegrationNoneDashboard Agent + Knowledge Graph via MCP
Data PlatformExternal (Looker)Unified Harness Data Platform
Backend SupportSingle databaseStarRocks, AlloyDB, BigQuery, PostgreSQL, MySQL

Unified Data Platform

Dashboards 3.0 is built on a new unified data platform that Harness has developed to power all data-intensive capabilities across the platform. This platform provides a single interface for querying heterogeneous data sources — events, entities, metrics, and views — across multiple database backends.

Data Sources

Source TypeDescriptionExamples
eventTime-series and log dataSpans, logs, cost events, clickstream
entityBusiness objects and transactional dataPipeline executions, artifacts, API entities
metricAggregated and analytical dataAggregated cost metrics, performance metrics
viewVirtual tables that expand to CTEs at query timeCustom views like successful_pipelines

Query Architecture

HQL queries are parsed, planned, and automatically translated to optimized SQL for the target database backend.

HQL Query String

Parser (ANTLR4)

Query Plan (Protobuf)

Query Planner

SQL Generator (JOOQ)

Database Execution

AI-Powered Dashboard Creation

Harness users can create widgets and dashboards manually or using AI. The AI-powered creation flow is powered by the Dashboard Agent and the Knowledge Graph Tool, both exposed via Harness MCP (Model Context Protocol).

Step 1 — Describe Your Dashboard: Use the AI Assistant to describe the dashboard or widget you need in natural language. For example: "Show me pipeline failure rates by team over the last 30 days."

Step 2 — Dashboard Agent Generates HQL: The Dashboard Agent uses the Knowledge Graph Tool to understand your data model and generates the appropriate HQL query and widget configuration.

Step 3 — Review and Customize: Review the generated dashboard, adjust the HQL queries, change widget types, or refine the layout before saving.

Knowledge Graph and MCP

The Knowledge Graph Tool exposes the Harness semantic data model via MCP (Model Context Protocol), allowing the Dashboard Agent to understand entity relationships, available fields, and data types across your entire Harness deployment. This enables the AI to generate accurate HQL queries without requiring you to know the underlying schema.


Widget Types

Dashboards 3.0 supports a wide range of visualization widgets. Each widget is backed by an HQL query and can be created manually or generated by AI.

Widget TypeBest For
Line ChartTrends over time (e.g., deployment frequency, cost trends)
Bar ChartComparing categories (e.g., failures by pipeline, cost by region)
Pie ChartProportional distribution (e.g., status breakdown, resource allocation)
Scatter PlotCorrelation analysis (e.g., latency vs. throughput)
TableDetailed data views with sorting and filtering
Number / KPISingle metric display (e.g., total deployments, success rate)
Area ChartVolume trends over time with filled areas
Stacked BarBreakdown of categories within a group
HeatmapDensity visualization (e.g., deployment activity by hour/day)
GaugeProgress toward a target (e.g., SLA compliance, coverage %)

Harness Query Language (HQL)

HQL is a domain-specific query language designed for querying the Harness Data Platform. It provides a unified interface for querying events, entities, metrics, and views across multiple database backends with pipe-based operations and SQL-like semantics. HQL queries are automatically translated to optimized SQL for the target database.

Key Features

Unified query interface — Query multiple data sources with a single language.

Pipe-based operations — Chain operations using the pipe (|) operator.

SQL-like semantics — Familiar syntax for filtering, grouping, aggregating, and joining.

Type safety — Strong typing with support for events, entities, metrics, and views.

Automatic SQL generation — HQL is translated to optimized SQL for StarRocks, AlloyDB, BigQuery, PostgreSQL, and MySQL.

CTE support — Common Table Expressions for complex, readable queries.

Basic Syntax

Every HQL query starts with find followed by a data source, then pipes operations in sequence.

// Basic structure
find [source] [type] [alias] | [operation] | [operation] | ...

// Simple query
find event "ccm:unified_table"

// Query with operations
find event "ccm:unified_table"
| filter cost > 100
| select { region, sum(cost) as total_cost }
| group_by region
| order_by total_cost desc
| limit 10

Examples

Pipeline execution statistics (last 30 days)

find entity "pipeline:pipeline_execution"
| filter start_time >= ago(30d)
| select {
date_trunc('day', start_time) as day,
status,
count() as execution_count,
count(case when is_successful = true then 1 end) as successful_count
}
| group_by date_trunc('day', start_time), status
| order_by day desc, execution_count desc

Cost analysis by region and cloud provider

find event "ccm:unified_table"
| filter startTime >= ago(30d)
| select {
region,
cloudProvider,
sum(awsBlendedCost) as total_cost,
count() as record_count
}
| group_by region, cloudProvider
| order_by total_cost desc
| limit 20

Error rate analysis with CTEs

with error_events as (
find event logs
| filter level = "ERROR"
| filter timestamp >= ago(24h)
)
find error_events
| select {
date_trunc('hour', timestamp) as hour,
count() as error_count
}
| group_by date_trunc('hour', timestamp)
Full HQL Reference

For the complete HQL language guide including all operations, functions, CTEs, joins, and best practices, see the Harness Query Language (HQL) Reference.