Try it free

DQL table

  • Latest Dynatrace
  • Reference
  • 8-min read
  • Published Jul 13, 2026

A data table driven by a DQL query, with columns, filtering, grouping, and perspectives. Usually the main component of an explorer view.

DQL table card displaying query results with sortable columns and row actions in an Entity details page
DQL table card displaying query results with sortable columns and row actions in an Entity details page

Fields

In addition to the shared CoreElement fields (see Elements overview):

PropertyTypeDescription

dqlQuery

DqlTableQuery

The DQL query powering the table. Defines the data source, joins, and the field that uniquely identifies each row (idField).

columns

(DqlTableColumn | BuiltInColumn)[]

Column definitions. Mix custom columns with built-in references.

perspectives

DqlTablePerspective[] (optional, default [])

Named column sets that you can switch between. Each perspective selects a subset of columns and optional default sorting. When omitted, no perspective switcher is shown.

defaultPerspective

string (optional)

Name of the perspective to activate on first load. Must match a name from perspectives. When omitted, the first perspective is used.

alertGroups

HealthAlertGroup[] (optional)

Health indicator config. See Health indicators.

grouping

DqlTableGroupingConfig (optional)

Row-grouping configuration.

rowThresholds

RowThreshold[] (optional, default [])

Rules for highlighting or marking rows based on field values.

interactiveRows

string | boolean (optional)

Controls row highlighting and entity-detail linking. Pass the row field name that uniquely identifies the entity to enable detail-panel navigation, or true to highlight the active row without linking to a detail panel. Set false to disable both highlighting and detail linking entirely. When omitted, defaults to dqlQuery.idField.

expandableRowSchema

ExpandableContentLayoutElement (optional)

Layout rendered inside an expanded row.

expandOnClick

boolean (optional, default false)

When true, selecting a row toggles its expandable content instead of navigating.

expandableContentHeight

number (optional, default 320)

Height reserved for expanded row content.

toolbarItems

DqlTableToolbarActions (optional, default [])

Toolbar action buttons above the table. Accepts built-in action names (for example, COLUMN_VISIBILITY or LINE_WRAP) and custom IntentAction entries. When omitted, the toolbar is disabled.

cellActions

DqlTableCellActions (optional)

Context-menu actions per cell. Accepts an ActionsV3 config. default: UACommonDrilldownCellActions.

rowActions

DqlTableRowActions (optional)

Action buttons at the trailing edge of each row. Accepts built-in or custom IntentAction entries via an ActionsV3 config.

displaySearch

boolean (optional, default false)

Show a search box in the toolbar/header.

selectableRows

boolean (optional)

Enable row selection.

alwaysRequiredFields

string[] (optional, default [])

Fields always fetched from Grail, even when not visible as columns.

generateDqlOptions

GenerateDqlOptions (optional)

Controls DQL generation details such as limits and lookup ordering. default: { lookupExecutionOrder: 'leftFirst', limit: 1000, groupLimit: 100 }.

tableMode

'normal' | 'compact' (optional, default 'normal')

Overall table density/mode.

loadingMode

'spinner' | 'skeleton' (optional, default 'spinner')

'spinner' shows a spinner overlay while keeping the table header visible; 'skeleton' replaces the table with a skeleton placeholder.

fieldsMode

'strict' | 'loose' (optional, default 'loose')

'strict' fetches only fields referenced by columns; 'loose' fetches everything the query returns.

cardTitle

string (optional)

Card title displayed in the card header.

cardDescription

string (optional)

Card description displayed below the card title.

headingAs

'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' (optional)

The semantic HTML heading element for the card title. Decouples visual level from document structure.

DqlTableQuery

Describes the data that populates the table. It is composed of:

  • A main query (query) that produces the primary set of rows, and
  • Optional lookups and additionalCommands that append extra data used by columns.

Every field referenced by a column must be provided by one of these queries. If a field is not found among the lookups or additionalCommands outputs, it is assumed to come from the main query.

PropertyTypeDescription

idField

string

Field that uniquely identifies each row. Required to merge lazily-fetched columns back into rows.

query

string

The base DQL query that provides the main set of rows.

lookups

(DqlTableLookup | AlertLookup)[] (optional)

Lookup queries joined onto the base query to append fields.

additionalCommands

DqlTableAdditionalCommand[] (optional)

Extra query fragments that compute derived fields.

DqlTableLookup

PropertyTypeDescription

query

string

The lookup query.

sourceField

string

Field in the base query to join on.

lookupField

string

Field in the lookup query to join on.

fields

string[]

Fields pulled from the lookup result.

AlertLookup (built-in lookup)

A built-in alternative to DqlTableLookup, identified by builtInLookup: 'ALERTS_LOOKUP'. Resolved at runtime to a health-indicators lookup.

PropertyTypeDescription

builtInLookup

'ALERTS_LOOKUP'

Discriminant.

lookupField

string (optional, default 'affected_entity_ids')

Entity ID field the lookup matches against.

dqlCondition

string (optional)

Filter expression distinguishing main-entity events from relation events.

relations

AlertLookupRelation[] (optional)

See Health indicators.

expandFields

string[] (optional)

Fields to expand.

additionalFields

string[] (optional)

Extra event fields to include.

filterExpression / volatileFilterExpression / problemFilterExpression

string (optional)

Pre-filter expressions (without the leading | filter).

When nodeType is set in InvExTypeDefinition.metadata, ALERTS_LOOKUP auto-generates the filter iAny(smartscape.affected_entities[][type] == "<nodeType>") so only events for the correct entity type are returned. Without it, the lookup returns events for all Smartscape node types. See Document types and Health indicators.

DqlTableAdditionalCommand

PropertyTypeDescription

dependencies

string[]

Fields this command needs resolved first.

fields

string[]

Fields this command produces.

query

string

The DQL command fragment (for example, | fieldsAdd ...).

appendBeforeLimit

boolean (optional)

Experimental — appends the command after filters but before the limit clause.

DqlTableColumn

PropertyTypeDescription

id

string

Unique column ID.

field

string

Field accessor; must correspond to a field produced by the query.

displayName

string

Column header label.

type

'text' | 'date' | 'number' | 'array' | 'record' | 'bit' | 'sparkline' | 'meterbar' | 'gantt' | 'log-content' | 'markdown' (optional)

Column type; affects alignment and default sort behavior. default: 'text'.

alignment

'right' | 'left' (optional)

Overrides the default alignment derived from type.

cellRenderer

CellRenderer (optional)

Built-in cell renderer configuration. See the CellRenderer section.

widthType

'pixels' | 'auto' | 'ratio' (optional)

Width sizing strategy.

widthValue

number (optional)

Width value paired with widthType.

minWidth

number (optional)

Minimum width in pixels. default: 120 (type=text or date), 80 (type=number), none for other types.

sortable

boolean (optional, default true)

Whether the column can be sorted.

sortDescFirst

boolean (optional)

The first selection sorts descending instead of ascending. default: true for type=number, false for all other types.

customSortDql / customSortField

string (optional)

Overrides for how the column is sorted.

defaultColumn

boolean (optional, default false)

Default columns can't be hidden via column visibility settings.

perspectives

string[] (optional)

Perspective names in which this column is visible. Columns with perspectives set are hidden when no perspective is active on the table (for example, when the table has no perspectives array defined). Pair with defaultColumn: true to keep a column always visible regardless of the active perspective.

preferenceMode

'now' | 'summary' (optional)

Pairs with another column of the same id to support metrics-preference switching.

dataLazyLoaded

boolean (optional, default false)

Loads cell data only when the cell scrolls into view.

disableDownload

boolean (optional, default false)

Excludes the column from downloads even if visible.

showLineWrap

boolean (optional, default false)

Adds a line-wrap toggle to the column header.

columnHeaderInfo

string (optional)

Tooltip text for a header info button.

wrapInDefaultCell

boolean (optional, default true)

When false, the converter does not wrap the cell in Strato's DataTable.DefaultCell. Use with fully custom renderers that return their own cell wrapper.

conditions

Condition[] (optional)

See Conditional rendering.

BuiltInColumn

A reference to a pre-configured runtime column, usable in columns alongside custom DqlTableColumn entries. The available built-in columns are health columns and they surface health indicator data alongside your table rows without requiring manual column configuration:

{ "builtInColumn": "HEALTH_ALERTS_COLUMN" }
LiteralDescription

'HEALTH_ALERTS_COLUMN'

Health column that shows Davis health alert indicators for each row's entity.

'CUSTOM_ALERTS_COLUMN'

Health column that shows alerts not mapped to health alert indicators configuration.

An optional overrides object (displayName, perspectives, defaultColumn, widthType, widthValue) customizes the built-in column without fully replacing it.

CellRenderer

A discriminated union on type. Set cellRenderer: { "type": "<name>", ...params } on a column to activate a built-in renderer. Renderers with no configuration fields accept a plain { "type": "..." } object.

typeDescriptionExpected cell data

array

Renders an array of values.

any[]

problem

Renders a problem count badge.

number

vulnerability

Renders a vulnerability count badge.

number

alert

Renders an alert count badge.

number

healthIndicator

Renders Davis health alert indicator chips.

Health indicator payload

customAlert

Renders custom alert indicator chips.

Custom alert payload

healthValue

Overlays warning/critical health icons on top of another renderer.

Value accepted by the inner valueFormatter

slo

Renders an SLO breach count.

number

duration

Renders the formatted duration between two timestamps.

{ start?: string | number; end?: string | number }

mCore

Renders and formats CPU millicores.

number

byte

Converts bytes to human-readable units (KiB, MiB, …).

number

percent

Formats a 0–1 fraction as a percentage.

number (0–1)

percentBar

Renders a 0–1 fraction as a progress bar with label.

number (0–1)

meterBar

Renders a 0–1 fraction as a meter bar.

number (0–1)

countPerUnit

Renders a count with a rate unit suffix (for example, 10 /min).

number

unitRenderer / unit

Renders a number with a Strato unit (for example, 3 min, 12 GB).

number | string | (number | string)[]

datetime

Formats a timestamp as date and time.

number | string | Date

time

Formats a numeric duration with the appropriate time unit.

number

microChartV2

Renders a sparkline alongside a scalar value (v2).

{ timeseries: number[]; value: number }

owners

Renders a list of owner chips.

string[]

entity

Renders a clickable entity name; supports details, intent, or text modes.

Entity object (entityId/nodeId, displayName, …)

lastSeen / lastUpdated

Renders "Just now" for recent timestamps, exact time otherwise.

number (UTC milliseconds)

tag

Extracts and renders the value matching a tag key from a tag array.

string[] (for example, ["env:prod", "region:us-east"])

entity parameters

ParameterTypeDescription

mode

'details' | 'intent' | 'text' (optional)

How the entity name navigates on click.

inactiveThresholdMins

number (optional, default 15)

Minutes after lifetimeEnd before the entity is shown as inactive.

lineWrap

boolean (optional)

Stack entity name and extra info vertically.

entityDetailsPathName

string (optional)

Pathname for opening entity details in a new tab.

entityDetailsSearchParam

string (optional)

Search param key for the entity ID (for example, "entityId").

healthValue parameters

ParameterTypeDescription

valueFormatter

string | CellRenderer

Renderer applied to the value itself.

healthIndicatorsField

string

Row field containing health indicator data.

alertGroupName

string

Alert group to match against.

alertDisplayName

string (optional)

Display name for the alert.

duration parameters

ParameterTypeDescription

useSeconds

boolean (optional)

Round to seconds instead of milliseconds.

meterBar parameters

ParameterTypeDescription

label

string (optional)

Tooltip label shown on hover.

countPerUnit parameters

ParameterTypeDescription

unit

string (optional, default 'min')

Unit string appended as a rate suffix.

unitRenderer / unit parameters

ParameterTypeDescription

unit

string (optional)

Strato unit identifier (for example, 'Byte', 'MicroSecond').

abbreviate

boolean (optional)

Abbreviate the unit label.

maximumFractionDigits

string (optional)

Maximum decimal places.

minimumFractionDigits

string (optional)

Minimum decimal places.

suffix

string (optional)

Additional suffix appended after the unit.

microChartV2 parameters

ParameterTypeDescription

variant

'line' | 'area' (optional)

Sparkline style.

color

string (optional)

Hex color or Strato design token.

showMicroChart

boolean (optional, default true)

Show or hide the sparkline.

valueFormatter

string | CellRenderer (optional)

Formatter for the scalar value.

valueWidth

string (optional, default '95px')

CSS width of the value area.

min / max

number (optional)

Y-axis bounds.

time parameters

ParameterTypeDescription

unit

'ns' | 'us' | 'ms' | 's' | 'm' | 'h' | 'd' (optional, default 'ms')

Input time unit.

lastSeen / lastUpdated parameters

ParameterTypeDescription

thresholdMin

number (optional, default 5)

Minutes before switching from "Just now" to an exact timestamp.

tag parameters

ParameterTypeDescription

key

string

Tag key whose value to extract and display.

DqlTableGroupingConfig

PropertyTypeDescription

defaultFields

string[] (optional)

Fields grouped by default.

availableFields

string[] | Record<string, string[]> (optional)

Fields you can group by, optionally organized into named groups.

aggregations

Record<string, 'sum' | 'min' | 'max' | 'avg' | 'median' | 'p10' | 'p75' | 'p90' | 'count' | 'countDistinct' | 'takeAny' | 'takeFirst' | 'takeIfOnlyOne' | 'takeOneOrCount' | 'takeLast' | 'collectArray' | 'collectDistinct'> (optional)

Aggregation function per numeric field, keyed by field name.

variant

'groups-only' | 'with-row-records' (optional, default 'with-row-records')

Whether grouped rows can be expanded to show underlying records.

rowsAreExpandable

boolean (optional, default false)

Enables expansion of grouping rows (requires expandable rows to be configured).

hideGroupBySelector

boolean (optional, default false)

Hides the group-by selector even when grouping is configured. Use with controlled grouping state.

DqlTablePerspective

PropertyTypeDescription

name

string

Unique perspective name.

displayName

string (optional)

Label shown to you. Defaults to the value of name.

description

string (optional)

Description text.

defaultSorting

SingleSorting | Sorting (optional)

Sort applied when the perspective is selected.

RowThreshold

Serializable row-highlighting rules. A threshold is a single rule or a combined set of rules sharing one display variant: 'pill' (with a color) or 'highlight' (with backgroundColor/color). Each rule compares a field value with a comparator, optionally through an accessor.

Action unions

Action arrays accept both BuiltInAction<T> references ({ "builtInAction": "..." }) and full IntentAction objects. See Elements overview.

Providing an action array in the document overrides the default rendering for that slot. The defaults are not merged in. If you want to keep the default actions, every default action must be listed explicitly alongside your custom ones.

TypeUsed inBuilt-in literals

DqlTableToolbarActions

toolbarItems

'COLUMN_VISIBILITY', 'RESET_ORDER', 'LINE_WRAP', 'EDIT_IN_NOTEBOOK', 'PIN_TO_DASHBOARD', 'OPEN_WITH', 'DOWNLOAD_PAGE', 'DOWNLOAD_SELECTED', 'DOWNLOAD_ALL'

DqlTableCellActions

cellActions

'FILTERING'

DqlTableRowActions

rowActions

none — intent actions only

DqlTableColumnActions

per-column actions

none — intent actions only

CardActions

actions

none — intent actions only

Examples

Minimal

Minimal DQL table configuration. Includes the required query and columns, plus explicit card metadata and interactiveRows: false to demonstrate a non-interactive table. idField remains the unique row identifier and only drives highlighting or detail-panel navigation when interactiveRows enables that behavior.

{
"type": "dql-table",
"id": "example-minimal",
"cardTitle": "Hosts",
"cardDescription": "All monitored hosts",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{ "id": "host-type", "field": "host.type", "displayName": "Host Type", "type": "text", "sortable": true }
]
}
Minimal DQL table showing host name, OS type, cloud provider, and host type columns
Minimal DQL table showing host name, OS type, cloud provider, and host type columns

Perspectives

Perspectives are named column sets you can switch between via tabs. Each column declares which perspectives it belongs to via the perspectives array. defaultPerspective selects the active perspective on first load. The column set changes but the underlying DQL query stays the same.

{
"type": "dql-table",
"id": "example-perspectives",
"cardTitle": "Hosts — Perspectives",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"perspectives": [
{ "name": "overview", "displayName": "Overview" },
{ "name": "infra", "displayName": "Infra" }
],
"defaultPerspective": "overview",
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true, "perspectives": ["overview", "infra"] },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true, "perspectives": ["overview"] },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true, "perspectives": ["overview", "infra"] },
{ "id": "hypervisor", "field": "hypervisor.type", "displayName": "Hypervisor", "type": "text", "sortable": true, "perspectives": ["infra"] },
{ "id": "host-type", "field": "host.type", "displayName": "Host Type", "type": "text", "sortable": true, "perspectives": ["infra"] },
{ "id": "availability-zone", "field": "aws.availability_zone", "displayName": "AZ", "type": "text", "sortable": true, "perspectives": ["infra"] }
]
}
DQL table with perspective tab switcher showing Overview and Infra column sets
DQL table with perspective tab switcher showing Overview and Infra column sets

Grouping

variant: 'with-row-records' groups rows while still allowing you to expand each group to see the individual host records. The first grouping level is OS type; the second level is cloud provider. rowsAreExpandable: true is required to enable row-level expansion within groups.

{
"type": "dql-table",
"id": "example-grouping",
"cardTitle": "Hosts — Grouping",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{ "id": "hypervisor", "field": "hypervisor.type", "displayName": "Hypervisor", "type": "text", "sortable": true },
{ "id": "host-type", "field": "host.type", "displayName": "Host Type", "type": "text", "sortable": true },
{ "id": "availability-zone", "field": "aws.availability_zone", "displayName": "AZ", "type": "text", "sortable": true }
],
"grouping": {
"variant": "with-row-records",
"defaultFields": ["os.type", "cloud.provider"],
"availableFields": ["os.type", "cloud.provider"],
"rowsAreExpandable": true
}
}
DQL table with rows grouped by OS type and cloud provider, with expandable group rows
DQL table with rows grouped by OS type and cloud provider, with expandable group rows

Row thresholds

Each threshold entry specifies a comparator, a string or numeric value, an accessor (the row field to compare), and a display style (highlight or pill). Rules are evaluated in order; the first match wins. Rows matching no rule are unstyled.

String accessors with dots (for example, aws.availability_zone) are automatically converted to literal-key lookups at runtime. Dot notation does not mean nested access.

{
"type": "dql-table",
"id": "example-row-thresholds",
"cardTitle": "Hosts — Row Thresholds",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{ "id": "availability-zone", "field": "aws.availability_zone", "displayName": "AZ", "type": "text", "sortable": true },
{ "id": "host-type", "field": "host.type", "displayName": "Host Type", "type": "text", "sortable": true }
],
"rowThresholds": [
{
"comparator": "equal-to",
"value": "us-east-1a",
"accessor": "aws.availability_zone",
"type": "highlight",
"backgroundColor": "var(--dt-colors-background-container-success-default, #f1f3f3)"
},
{
"comparator": "equal-to",
"value": "us-east-1b",
"accessor": "aws.availability_zone",
"type": "highlight",
"backgroundColor": "var(--dt-colors-background-container-warning-default, #f9f6f3)"
}
]
}
DQL table with rows highlighted in different colors based on availability zone threshold rules
DQL table with rows highlighted in different colors based on availability zone threshold rules

Toolbar actions

Lists which standard toolbar buttons appear above the table. Omitting toolbarItems disables the toolbar entirely. Each builtInAction value maps to a pre-configured DataTable.Toolbar element at runtime, requiring no custom render function.

{
"type": "dql-table",
"id": "example-toolbar",
"cardTitle": "Hosts — Toolbar Actions",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{ "id": "hypervisor", "field": "hypervisor.type", "displayName": "Hypervisor", "type": "text", "sortable": true },
{ "id": "host-type", "field": "host.type", "displayName": "Host Type", "type": "text", "sortable": true }
],
"toolbarItems": [
{ "builtInAction": "COLUMN_VISIBILITY" },
{ "builtInAction": "LINE_WRAP" },
{ "builtInAction": "DOWNLOAD_ALL" }
]
}
DQL table with column visibility, line wrap, and download toolbar buttons above the header
DQL table with column visibility, line wrap, and download toolbar buttons above the header

Interactive rows

Setting interactiveRows to the row field that identifies the entity (same as dqlQuery.idField) enables the row-selection handler that highlights the selected row and updates the detailsId URL param. A companion detail panel (for example, UAEntityDetails) reads that param and renders the entity view. Without a detail panel in the same layout, selecting a row only changes the URL.

{
"type": "dql-table",
"id": "example-interactive",
"cardTitle": "Hosts — Interactive Rows",
"interactiveRows": "id",
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{ "id": "availability-zone", "field": "aws.availability_zone", "displayName": "AZ", "type": "text", "sortable": true }
]
}
DQL table with a selected row highlighted and a detail panel opening alongside
DQL table with a selected row highlighted and a detail panel opening alongside

Selectable rows

selectableRows: true renders a leading checkbox column. Multi-selection is enabled by default. Pair with toolbarItems that include DOWNLOAD_SELECTED to act on the selection.

{
"type": "dql-table",
"id": "example-selectable",
"cardTitle": "Hosts — Selectable Rows",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{ "id": "host-type", "field": "host.type", "displayName": "Host Type", "type": "text", "sortable": true }
],
"selectableRows": true,
"toolbarItems": [
{ "builtInAction": "DOWNLOAD_SELECTED" }
]
}
DQL table with leading checkbox column and rows selected for bulk download
DQL table with leading checkbox column and rows selected for bulk download

Compact mode with search

tableMode: 'compact' renders a simplified header without the full toolbar. displaySearch: true moves the search field into the compact header. Use compact mode inside entity detail panels or any space-constrained context.

{
"type": "dql-table",
"id": "example-compact-search",
"cardTitle": "Hosts — Compact",
"tableMode": "compact",
"displaySearch": true,
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true }
]
}
DQL table in compact mode with an inline search field in the header
DQL table in compact mode with an inline search field in the header

Cell renderers

cellRenderer on a column controls how its raw value is displayed. The renderer type is a discriminated union; each variant has its own optional config fields. Common variants are

  • byte: Formats a number as a byte size
  • duration: Formats nanoseconds as a human-readable duration
  • percent: Appends a % suffix
  • entity: Renders an entity name as a selectable link

The type: 'number' column type enables numeric sorting.

{
"type": "dql-table",
"id": "example-cell-renderers",
"cardTitle": "Hosts — Cell Renderers",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, memory, logical_cores",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "memory", "field": "memory", "displayName": "Memory", "type": "number", "sortable": true, "cellRenderer": { "type": "byte" } },
{ "id": "logical-cores", "field": "logical_cores", "displayName": "Logical Cores", "type": "number", "sortable": true }
]
}
DQL table with memory column formatted as a byte size using the byte cell renderer
DQL table with memory column formatted as a byte size using the byte cell renderer

Row actions

rowActions renders one or more action buttons inline at the end of each table row. Each entry is an IntentAction that opens a target app with an optional payload. Use rowActions when you want a visible per-row CTA without making the entire row interactive (cf. interactiveRows).

{
"type": "dql-table",
"id": "example-row-actions",
"cardTitle": "Hosts — Row Actions",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true }
],
"rowActions": [
{ "displayName": "Open details", "appId": "dynatrace.entity.generic", "intentId": "open-entity" }
]
}
DQL table with an Open details action button rendered at the end of each row
DQL table with an Open details action button rendered at the end of each row

Lookups

dqlQuery.lookups runs additional DQL queries and joins their results onto each main-query row. The join is performed by matching sourceField (a field on the main row) against lookupField (a field in the lookup result). Only the fields listed in fields are merged into the row; they can then be referenced by column field values as if they were part of the original query.

{
"type": "dql-table",
"id": "example-lookups",
"cardTitle": "Hosts — Lookups",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type",
"idField": "id",
"lookups": [
{
"query": "smartscapeNodes \"HOST\" | fields id, logical_cores, memory",
"sourceField": "id",
"lookupField": "id",
"fields": ["logical_cores", "memory"]
}
]
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "logical-cores", "field": "logical_cores", "displayName": "Logical Cores", "type": "number", "sortable": true },
{ "id": "memory", "field": "memory", "displayName": "Memory", "type": "number", "sortable": true, "cellRenderer": { "type": "byte" } }
]
}
DQL table with logical cores and memory columns joined from a separate lookup query
DQL table with logical cores and memory columns joined from a separate lookup query

Alert groups

Pairing alertGroups with builtInLookup: 'ALERTS_LOOKUP' in dqlQuery.lookups wires health indicators into the table. At runtime the mapper resolves ALERTS_LOOKUP into a DQL join that fetches event snapshots for each row's entity and merges health data into the result. The HEALTH_ALERTS_COLUMN built-in column renders the aggregated alert chips. Each alertGroups entry is a named chip group. alerts within a group define which events to match via matchConditions (field: allowed values).

{
"type": "dql-table",
"id": "example-alert-groups",
"cardTitle": "Hosts — Alert Groups",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type",
"idField": "id",
"lookups": [
{ "builtInLookup": "ALERTS_LOOKUP" }
]
},
"alertGroups": [
{
"groupName": "Availability",
"alerts": [
{ "displayName": "Host unavailable", "matchConditions": { "event.category": ["AVAILABILITY"] } }
]
},
{
"groupName": "Performance",
"alerts": [
{ "displayName": "Performance degraded", "matchConditions": { "event.category": ["PERFORMANCE"] } }
]
}
],
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "builtInColumn": "HEALTH_ALERTS_COLUMN" }
]
}
DQL table with alert chip columns showing availability and performance health indicators per row
DQL table with alert chip columns showing availability and performance health indicators per row

Conditional columns

Each column can carry a conditions array. Conditions reference variables resolved by a conditionContext DQL query declared at the wrapping document root. A column is only rendered when all its conditions evaluate to true (AND semantics).

{
"type": "dql-table",
"id": "example-conditional-columns",
"cardTitle": "Hosts — Conditional Columns",
"interactiveRows": false,
"dqlQuery": {
"query": "smartscapeNodes \"HOST\" | fields id, name, os.type, cloud.provider, hypervisor.type, host.type, aws.availability_zone",
"idField": "id"
},
"columns": [
{ "id": "name", "field": "name", "displayName": "Name", "type": "text", "sortable": true },
{ "id": "os-type", "field": "os.type", "displayName": "OS Type", "type": "text", "sortable": true },
{ "id": "cloud-provider", "field": "cloud.provider", "displayName": "Cloud", "type": "text", "sortable": true },
{
"id": "availability-zone",
"field": "aws.availability_zone",
"displayName": "AZ (AWS only)",
"type": "text",
"sortable": true,
"conditions": [{ "type": "dql-variable", "variable": "cloud.provider", "value": "aws" }]
},
{
"id": "hypervisor",
"field": "hypervisor.type",
"displayName": "Hypervisor (non-cloud only)",
"type": "text",
"sortable": true,
"conditions": [{ "type": "dql-variable", "variable": "cloud.provider", "value": ["", "CLOUD_PROVIDER_UNKNOWN"] }]
}
]
}
DQL table with columns conditionally shown based on cloud provider DQL variable
DQL table with columns conditionally shown based on cloud provider DQL variable

See also

  • Filtering
  • Health indicators
  • DQL variables
  • Elements overview
Related tags
ExtensionsExtensionsInfrastructure Observability