SQL Queries
Use sql to run queries against external databases (PostgreSQL, MySQL, or SQL Server) and feed the results into a view. SQL queries share the same templating and mapping capabilities as other data sources.
Configuration
| Field | Description |
|---|---|
connection | Name or URL of a stored SQL connection (recommended) |
type | Connection type when not using connection (postgres, mysql, sqlserver) |
url | Database DSN/URL (supports env var references) |
username | Database username (supports env var references) |
password | Database password (supports env var references) |
query | SQL statement to execute |
Mission Control hydrates the connection details before executing the query, so secrets can stay in stored connections or environment variables.
Example
failing-health-checks.yamlapiVersion: mission-control.flanksource.com/v1
kind: View
metadata:
name: failing-health-checks
namespace: mc
spec:
display:
title: Failing Health Checks
icon: health
sidebar: true
cache:
maxAge: 5m
minAge: 10s
columns:
- name: id
type: string
primaryKey: true
hidden: true
- name: name
type: string
- name: namespace
type: string
- name: type
type: string
- name: status
type: status
- name: severity
type: string
- name: last_transition_time
type: datetime
- name: description
type: string
queries:
failing_checks:
columns:
id: string
name: string
namespace: string
type: string
status: string
severity: string
last_transition_time: datetime
description: string
sql:
connection: connection://mc/mission-control
query: |
SELECT
id,
name,
namespace,
type,
status,
severity,
last_transition_time,
description
FROM checks
WHERE deleted_at IS NULL
AND status <> 'healthy'
ORDER BY COALESCE(last_transition_time, created_at) DESC
Tips
- Prefer
connectionto reuse managed credentials instead of embedding URLs and passwords. - Declare query
columnsandmappingto control types when the upstream query could return empty results. - Use templating to parameterize queries (
$(var.cluster)) just like other view data sources. - Keep SQL focused on selection/aggregation; use
mergeto combine SQL results with other data sources.