Tables
A view can generate a single table. The table supports a rich set of column types that decide how data persists, displays, and formats in your dashboards. Each column type provides specific formatting and visualization capabilities.
Columns
Columns define the structure and data types of your view table. Each column has a name and type that determines how the data stores, displays, and formats in your dashboards.
Column names must be valid SQL identifiers as they map directly to table columns in the underlying database.
Column Properties
Each column definition supports several properties:
name
: Column name (must be a valid SQL identifier)type
: Data type that determines formatting and visualizationprimaryKey
: Whether this column is part of the primary key (default: false)description
: Human-readable description of the columnhidden
: Whether to hide the column from the UI (default: false)for
: Reference to another column this column provides data for (helper columns)gauge
: Configuration for gauge visualization (only forgauge
type)
Column Types
string
Text data with no extra formatting.
columns:
- name: application_name
type: string
description: The name of the application
number
Numeric values with automatic formatting.
columns:
- name: replica_count
type: number
boolean
True/false values displayed as checkmarks or status indicators.
columns:
- name: is_active
type: boolean
datetime
Timestamp values with automatic date/time formatting.
columns:
- name: last_deployed
type: datetime
duration
Time duration values with human-readable formatting (e.g., "2h 30m").
columns:
- name: uptime
type: duration
health
Health status indicators with color-coded visual representation.
columns:
- name: component_health
type: health
status
General status information with visual indicators.
columns:
- name: deployment_status
type: status
decimal
Decimal numbers with configurable precision.
columns:
- name: cpu_usage
type: decimal
bytes
Byte values with automatic unit conversion (B, KB, MB, GB).
columns:
- name: memory_usage
type: bytes
millicore
CPU millicore
values with proper formatting.
columns:
- name: cpu_request
type: millicore
gauge
Rich gauge visualizations with thresholds and color coding.
columns:
- name: disk_usage
type: gauge
gauge:
min: 0
max: 100
thresholds:
- value: 70
color: 'yellow'
- value: 85
color: 'orange'
- value: 95
color: 'red'
When using type: gauge
, the gauge
configuration block is required.
Gauge Properties
min
: Minimum value for the gaugemax
: Maximum value for the gaugethresholds
: Array of threshold objects withvalue
andcolor
url
URL values that render as clickable links.
columns:
- name: dashboard_link
type: url
Helper Columns
Helper columns are extra columns that give data for other columns without rendering directly in the UI. They use the for
field to reference the column they support.
The most common use case is providing URLs for other columns. When a column has a helper column of type url
, the main column becomes clickable and links to the URL provided by the helper column.
columns:
- name: component_name
type: string
primaryKey: true
- name: component_url
type: url
for: component_name # This URL will make component_name clickable
In this example:
component_name
displays as a regular string columncomponent_url
provides the URL data but doesn't render as a separate column- When rendered,
component_name
becomes a clickable link using the URL fromcomponent_url
Hidden Columns
You can mark columns as hidden: true
to prevent them from appearing as separate columns in the table while still being available for internal operations. Primary keys like UUIDs
are good candidates to hide since they're needed for data operations but not useful for display.
columns:
- name: component_name
type: string
- name: component_id
type: string
primaryKey: true
hidden: true
description: Internal UUID for the component
Primary Keys
Each view table must specify at least one column as the primary key. Primary keys support internal purposes including data deduplication
and table operations. You can have multiple primary keys to create composite primary keys.
Single Primary Key
columns:
- name: pod_name
type: string
primaryKey: true
- name: namespace
type: string
- name: status
type: string
Composite Primary Keys
When you need multiple columns to uniquely identify a row:
columns:
- name: pod_name
type: string
primaryKey: true # First part of composite key
- name: namespace
type: string
primaryKey: true # Second part of composite key
- name: status
type: string
Data Mapping
Data mapping defines how data from your query results gets transformed and assigned to specific table columns.
Mapping is optional - if not specified, Mission Control automatically looks for column names directly in the query results.
How Data Mapping Works
When Mission Control executes your queries, it returns raw data objects. For each column, the system:
- Checks for explicit mapping → If a CEL expression defines the column
- Falls back to direct lookup → Looks for the column name directly in the query results
- Defaults to null → If neither mapping nor direct column name exists
The mapping section uses CEL (Common Expression Language) expressions where the query result data is available as row
.
Mapping Behavior
Automatic Column Mapping
If you specify no mapping, columns are automatically populated from query results:
columns:
- name: name
type: string
primaryKey: true
- name: status
type: string
- name: created_at
type: datetime
# No mapping section needed - columns will be populated from query results automatically
Explicit Mapping
When you need data transformation or the column names don't match query results:
mapping:
name: row.component_name # Map from different field name
status: row.health # Map from different field name
created_at: row.created_at # Direct mapping (same as automatic)
CEL Expression Context
In mapping expressions, query result data is available as row
:
mapping:
database: row.name # Access top-level fields
date: row.created_at # Direct field access
status: row.details.status # Navigate nested objects
source: row.source # Simple field mapping