
Dt Dql Essentials
Look up Dynatrace Query Language (DQL) command syntax while building observability queries for logs, metrics, Smartscape, and timeseries in Dynatrace.
Overview
dt-dql-essentials is an agent skill most often used in Operate (also Grow analytics) that documents Dynatrace Query Language commands and parameters for building telemetry pipelines.
Install
npx skills add https://github.com/dynatrace/dynatrace-for-ai --skill dt-dql-essentialsWhat is this skill?
- Reference for 30+ DQL pipeline commands including fetch, filter, summarize, join, makeTimeseries, and Smartscape travers
- Documents param notation (required positional, named, variadic, optional) and per-command type hints
- Covers relational ops: append, dedup, join, joinNested, lookup, and nested record expansion
- Includes metrics, timeseries, smartscapeNodes/smartscapeEdges, and search/describe for schema discovery
- 30+ documented DQL pipeline commands in the reference table of contents
Adoption & trust: 745 installs on skills.sh; 87 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need to query Dynatrace Grail data but keep mistyping command names, argument order, or optional params in DQL pipelines.
Who is it for?
Indie operators and builders who use Dynatrace for production monitoring and want an in-chat DQL cheat sheet while drafting dashboards or incident queries.
Skip if: Teams with no Dynatrace tenant or anyone who only needs high-level observability strategy without writing DQL.
When should I use this skill?
You are writing or fixing Dynatrace DQL for fetch, filter, joins, Smartscape, metrics, or timeseries.
What do I get? / Deliverables
Your agent emits syntactically grounded DQL using the documented command catalog, so queries run in Dynatrace without trial-and-error in the console.
- Valid DQL command snippets aligned with documented syntax
- Pipeline steps using named commands such as fetch, fieldsAdd, summarize, and limit
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Canonical shelf is Operate because DQL is the day-to-day language for querying production telemetry, incidents, and service topology after you ship. Monitoring is the primary job-to-be-done: fetch, filter, summarize, join, and timeseries over live platform data.
Where it fits
Draft a fetch → filter → summarize pipeline to count errors by service during an outage.
Build makeTimeseries and metrics queries for a weekly usage dashboard.
Validate latency regressions with join and timeseries before a release.
How it compares
Use as a procedural reference for DQL syntax, not as a hosted MCP server or automated query runner.
Common Questions / FAQ
Who is dt-dql-essentials for?
Solo and indie builders on Dynatrace who write Grail/DQL pipelines during monitoring, incident triage, or internal analytics.
When should I use dt-dql-essentials?
In Operate when debugging production signals with fetch/filter/summarize; in Grow when building analytics timeseries; and during Ship perf reviews when validating telemetry queries.
Is dt-dql-essentials safe to install?
It is documentation-only procedural knowledge with no shell or network hooks in the skill itself; review the Security Audits panel on this page before trusting any third-party skill bundle.
SKILL.md
READMESKILL.md - Dt Dql Essentials
# DQL Commands Param notation: `name` = required positional · `name:` = required named · suffix `*` = variadic · suffix `?` = optional · types listed as `|`-separated names or `any` (all scalar+collection types) ## Table of Contents [`append`](#append) · [`data`](#data) · [`dedup`](#dedup) · [`describe`](#describe) · [`expand`](#expand) · [`fetch`](#fetch) · [`fields`](#fields) · [`fieldsAdd`](#fieldsadd) · [`fieldsFlatten`](#fieldsflatten) · [`fieldsKeep`](#fieldskeep) · [`fieldsRemove`](#fieldsremove) · [`fieldsRename`](#fieldsrename) · [`fieldsSnapshot`](#fieldssnapshot) · [`fieldsSummary`](#fieldssummary) · [`filter`](#filter) · [`filterOut`](#filterout) · [`join`](#join) · [`joinNested`](#joinnested) · [`limit`](#limit) · [`load`](#load) · [`lookup`](#lookup) · [`makeTimeseries`](#maketimeseries) · [`metrics`](#metrics) · [`parse`](#parse) · [`search`](#search) · [`smartscapeEdges`](#smartscapeedges) · [`smartscapeNodes`](#smartscapenodes) · [`sort`](#sort) · [`summarize`](#summarize) · [`timeseries`](#timeseries) · [`traverse`](#traverse) ## `append` Merges the current list of records with another list of records. `append source` `source` (—) — The sub-query to append. ## `data` Creates a static dataset to work with. `data [json ,] record, …` `json:?` (String) — A JSON string that holds an object or an array of objects that will represent the data set. `record*` (Record) — One of the static records that should be part of the data set. `expression*` (any) — An expression to add to the record. [assign:optional] ## `dedup` Removes duplicates from a list of records. `dedup expression, … [, sort: expression [asc|desc], …]` `expression*` (any) — An expression defining the how duplicate entries should be sorted (the first record by this order will be kept). `direction:*?` (—) — An expression defining the how duplicate entries should be sorted (the first record by this order will be kept). [default:"ascending"] `filterPushThrough:?` (Boolean) — Whether the filter should be push through the dedup command. [default:FALSE] `limit:?` (Long) — The maximum number of records returned by the dedup command. [default:9223372036854775807] `expression*` (any) — An expression for which all different unique values should be kept. ## `describe` Describes the schema of a given data object. `describe dataObject` `dataObject` (—) — The data object to describe. ## `expand` Expands an array into separate records. `expand expression [, limit]` `expression` (Array) — A field or an array expression that should be expanded. [assign:optional] `limit:?` (Long) — The maximum number of items to expand. [default:2147483647, min:1] ## `fetch` Loads data from the resource. `fetch dataObject [, bucket: name, …] [, from] [, to] [, timeframe] [, samplingRatio] [, scanLimitGBytes]` `dataObject` (—) — The data object to fetch data for. `name*` (—) — A bucket (name or pattern) to retrieve data from. `from:?` (Duration|Long|String|Timestamp) — The start of the timeframe (if no explicit timeframe is specified). A duration is interpreted as an offset from `now()`. [min:0] `to:?` (Duration|Long|String|Timestamp) — The end of the timeframe (if no explicit timeframe is specified). A duration is interpreted as an offset from `now()`. [min:0] `timeframe:?` (String|Timeframe) — The desired timeframe (if not specified, global timeframe is used). `samplingRatio:?` (Double|Long) — The desired sampling ratio. [min:1] `scanLimitGBytes:?` (Long) — The maximum number of gigabytes that shall be scanned during loading data. ## `fields` Keeps only the specified fields. `fields expression, …` `expression*` (any) — An expression that will be retained in the result list. [assign:optional] ## `fieldsAdd` Evaluates an expression and appends or replaces a field. `fieldsAdd expression, …` `expression*` (any) — An expression, its result will be added to the record list. [assign:optional] ## `fieldsFlatten` Adds fields from a re