dt-dql-essentials
DQLクエリの作成・修正時に読み込むスキルで、コアな構文ルール、よくあるミス、クエリパターンをカバーします。fetchコマンド、データモデル、フィールド名前空間、時間軸の整合、エンティティパターン、メトリクス探索、Smartscapeトポロジーのナビゲーションに対応し、構文エラーを防ぎながら正しい記述へ導きます。「DQLクエリを書きたい」「クエリを作って」「ログ/スパン/メトリクスのクエリ方法」などをトリガーに使用し、既存クエリの説明やDynatrace製品全般の質問には使用しません。
description の原文を見る
>- Core DQL syntax rules, common pitfalls, and query patterns. Load this skill when you need to write, build, or fix a DQL query — it prevents syntax errors and guides correct usage. Covers fetch commands, data models, field namespaces, time alignment, entity patterns, metric discovery, and smartscape topology navigation. Trigger: "write a DQL query", "build me a query", "DQL syntax", "how do I query logs/spans/metrics in Dynatrace", "create a timeseries", "fix my DQL", "fetch logs", "smartscapeNodes", "query optimization". Do NOT use for explaining an existing query or answering Dynatrace product questions — those do not require query-construction guidance.
SKILL.md 本文
DQL Essentials スキル
DQL はパイプラインベースのクエリ言語です。クエリは | でコマンドを連結してデータをフィルタリング、変換、集計します。DQL は SQL とは異なるユニークな構文を持っています。DQL クエリを書く前にこのスキルをロードしてください。
リファレンスをロードするタイミング
特定のタスクに取り組む前に、関連するリファレンスをロードしてください:
| タスク | 必須資料 |
|---|---|
| フィールド名、ネームスペース、データモデル、安定性レベル、クエリパターン | references/semantic-dictionary.md |
| クエリ最適化(早期フィルタリング、時間範囲、フィールド選択、パフォーマンス) | references/optimization.md |
| エンティティ間の関係を発見するための Smartscape トポロジーナビゲーション | references/smartscape-topology-navigation.md |
summarize および makeTimeseries パターン(バケット化、カレンダー月) | references/summarization.md |
配列とタイムシリーズ操作(arrayFilter、collectArray、イテレーティブ) | references/iterative-expressions.md |
条件ロジック(if/else チェーン)、coalesce、文字列/日付ヘルパー | references/useful-expressions.md |
in 演算子(サブクエリ)、完全な @ 時間配置単位テーブル | references/operators.md |
DQL リファレンスインデックス
このインデックスを使用して、関数グループ(例:時間関数、変換)から詳細な仕様にルーティングするか、関数名から仕様ファイルにルーティングしてください。
| 説明 | 項目 |
|---|---|
データ型 | array、binary、boolean、double、duration、long、record、string、timeframe、timestamp、uid |
パラメータ値型 | bucket、dataObject、dplPattern、entityAttribute、entitySelector、entityType、enum、executionBlock、expressionTimeseriesAggregation、expressionWithConstantValue、expressionWithFieldAccess、fieldPattern、filePattern、identifierForAnyField、identifierForEdgeType、identifierForFieldOnRootLevel、identifierForNodeType、joinCondition、jsonPath、metricKey、metricTimeseriesAggregation、namelessDplPattern、nonEmptyExecutionBlock、prefix、primitiveValue、simpleIdentifier、tabularFileExisting、tabularFileNew、url |
コマンド | append、data、dedup、describe、expand、fetch、fields、fieldsAdd、fieldsFlatten、fieldsKeep、fieldsRemove、fieldsRename、fieldsSnapshot、fieldsSummary、filter、filterOut、join、joinNested、limit、load、lookup、makeTimeseries、metrics、parse、search、smartscapeEdges、smartscapeNodes、sort、summarize、timeseries、traverse |
関数 — 集計 | avg、collectArray、collectDistinct、correlation、count、countDistinct、countDistinctApprox、countDistinctExact、countIf、max、median、min、percentRank、percentile、percentileFromSamples、percentiles、stddev、sum、takeAny、takeFirst、takeLast、takeMax、takeMin、variance |
関数 — 配列 | arrayAvg、arrayConcat、arrayCumulativeSum、arrayDelta、arrayDiff、arrayDistinct、arrayFirst、arrayFlatten、arrayIndexOf、arrayLast、arrayLastIndexOf、arrayMax、arrayMedian、arrayMin、arrayMovingAvg、arrayMovingMax、arrayMovingMin、arrayMovingSum、arrayPercentile、arrayRemoveNulls、arrayReverse、arraySize、arraySlice、arraySort、arraySum、arrayToString、vectorCosineDistance、vectorInnerProductDistance、vectorL1Distance、vectorL2Distance |
関数 — ビット演算 | bitwiseAnd、bitwiseCountOnes、bitwiseNot、bitwiseOr、bitwiseShiftLeft、bitwiseShiftRight、bitwiseXor |
関数 — ブール値 | exists、in、isFalseOrNull、isNotNull、isNull、isTrueOrNull、isUid128、isUid64、isUuid |
関数 — キャスト | asArray、asBinary、asBoolean、asDouble、asDuration、asIp、asLong、asNumber、asRecord、asSmartscapeId、asString、asTimeframe、asTimestamp、asUid |
関数 — 定数 | e、pi |
関数 — 変換 | toArray、toBoolean、toDouble、toDuration、toIp、toLong、toSmartscapeId、toString、toTimeframe、toTimestamp、toUid、toVariant |
関数 — 作成 | array、duration、ip、record、smartscapeId、timeframe、timestamp、timestampFromUnixMillis、timestampFromUnixNanos、timestampFromUnixSeconds、uid128、uid64、uuid |
関数 — 暗号化 | hashCrc32、hashMd5、hashSha1、hashSha256、hashSha512、hashXxHash32、hashXxHash64 |
関数 — エンティティ | classicEntitySelector、entityAttr、entityName |
関数 — 式のタイムシリーズ集計 | avg、count、countDistinct、countDistinctApprox、countDistinctExact、countIf、end、max、median、min、percentRank、percentile、percentileFromSamples、start、sum |
関数 — フロー | coalesce、if |
関数 — 汎用 | jsonField、jsonPath、lookup、parse、parseAll、type |
関数 — 取得 | arrayElement、getEnd、getHighBits、getLowBits、getStart |
関数 — イテレーティブ | iAny、iCollectArray、iIndex |
関数 — 数学 | abs、acos、asin、atan、atan2、bin、cbrt、ceil、cos、cosh、degreeToRadian、exp、floor、hexStringToNumber、hypotenuse、log、log10、log1p、numberToHexString、power、radianToDegree、random、range、round、signum、sin、sinh、sqrt、tan、tanh |
関数 — ネットワーク | ipIn、ipIsLinkLocal、ipIsLoopback、ipIsPrivate、ipIsPublic、ipMask、isIp、isIpV4、isIpV6 |
関数 — Smartscape | getNodeField、getNodeName |
関数 — 文字列 | concat、contains、decodeBase16ToBinary、decodeBase16ToString、decodeBase64ToBinary、decodeBase64ToString、decodeUrl、encodeBase16、encodeBase64、encodeUrl、endsWith、escape、getCharacter、indexOf、lastIndexOf、levenshteinDistance、like、lower、matchesPattern、matchesPhrase、matchesRegex、matchesValue、punctuation、replacePattern、replaceString、splitByPattern、splitString、startsWith、stringLength、substring、trim、unescape、unescapeHtml、upper |
関数 — 時間 | formatTimestamp、getDayOfMonth、getDayOfWeek、getDayOfYear、getHour、getMinute、getMonth、getSecond、getWeekOfYear、getYear、now、unixMillisFromTimestamp、unixNanosFromTimestamp、unixSecondsFromTimestamp |
関数 — メトリクスのタイムシリーズ集計 | avg、count、countDistinct、end、max、median、min、percentRank、percentile、start、sum |
構文の落とし穴
| ❌ 誤り | ✅ 正解 | 問題 |
|---|---|---|
filter field in ["a", "b"] | filter in(field, {"a", "b"}) | [ と ] は DQL ではサブクエリをラップしますが、静的な配列リテラルはラップしません。静的値には {} または array() を使用してください。 |
filter: { in(field, [sub-query]) } (例:timeseries filter: 内) | filter: { field in [sub-query] } | in() は実行ブロックを引数として受け入れません。右辺がサブクエリ(実行ブロック)の場合は、in 演算子を使用してください:field in [execution block]。 |
by: severity, status | by: {severity, status} | フィールドのリストは by: 句(summarize、makeTimeseries など)で中括弧でグループ化する必要があります。 |
contains(toLowercase(field), "err") | contains(field, "err", false) | 大文字小文字を区別しないマッチングのために lower() でラップしないでください。contains() には組み込みの 3 番目の位置パラメータ caseSensitive(デフォルト true)があります。 |
filter name == "*serv*9*" | filter matchesValue(name, "*serv*") and matchesValue(name, "*9*") | == はワイルドカードをサポートしません。matchesValue() はワイルドカード * をサポートしていますが、パターンの開始または終了のみです。文字列中のワイルドカード意図は、and で組み合わせた複数の呼び出しに分割してください。 |
文字列フィールド上の matchesValue(field, "prod") | contains(field, "prod") | ワイルドカードなしでは、matchesValue() は正確な(大文字小文字を区別しない)マッチを実行します。"production" は見つかりません。サブストリング マッチングには contains() を使用してください(またはワイルドカード マッチングには matchesValue(field, "*prod*") を使用)。 |
toLowercase(field) | lower(field) | 関数は lower() です。toLowercase() ではありません。to プレフィックスを使用するのはタイプキャスト関数のみです(toString()、toLong() など)。 |
arrayAvg(field[]) または arraySum(field[]) | arrayAvg(field) または field[] | field[] = 要素ごとのイテレーティブ式(配列→配列)。arrayAvg(field) = スカラーに折りたたむ(配列→単一値)。両方を混在させないでください。arrayAvg(field[]) は意味的に誤りです。 |
lookup または join 後の my_field | lookup.my_field / right.my_field | lookup は、デフォルトで追加されたフィールドに lookup. プレフィックスを付けます(prefix: で設定可能)。join は右側のフィールドに right. プレフィックスを付けます。 |
substring(field, 0, 200) | substring(field, from: 0, to: 200) | 最初のパラメータ(式)は位置パラメータですが、from: と to: は名前付きオプションパラメータで、名前を含める必要があります。 |
filter host = "A" | filter host == "A" | DQL は等式比較に == を使用します。= ではありません。単一 = は割り当て(例:fieldsAdd、summarize エイリアス内)です。 |
fetch logs, from: toTimestamp('2026-01-01') | fetch logs, from: -24h | from: / to: はデュレーション リテラル(例:-24h、-7d)または now() 式を受け入れます。toTimestamp() ではありません。絶対範囲の場合は timeframe: "start/end"(ISO 8601)を使用してください。 |
filter log.level == "ERROR" | filter loglevel == "ERROR" | ログ重度度フィールドは loglevel(ドットなし)です。log.level は存在しません。 |
sort count() desc | sort `count()` desc | 特殊文字(括弧など)を含むフィールドはバッククォートで囲む必要があります。 |
length(field) | stringLength(field) | DQL の文字列長関数は stringLength です。length() はありません。 |
metrics dt.host.cpu.usage | timeseries avg(dt.host.cpu.usage) | metrics はメトリクス メタデータをロードします。値ではなく、timeseries を使用してください。 |
join [...], on:{left.a.b == right.a.b} | join [...], on:{left[`a.b`] == right[`a.b`]} | join/lookup 条件内のドット区切りフィールド名には、バッククォート付きブラケット記号が必要です。 |
fieldsSummary (引数なし) | fieldsSummary field1, field2 | fieldsSummary は少なくとも 1 つのフィールド パラメータが必要です。 |
percentile/median/percentRank を使用した timeseries — 結果なし | rollup: avg(または min/max/sum)を timeseries コマンドに追加 | これら 3 つの関数は rollup: が必須です(ゲージ/カウント メトリクス上)。なければ、クエリはサイレントに空の結果を返します。 |
lookup [...], fields: {`dotted.name`} | lookup [...], fields: {dotted.name} | lookup の fields: パラメータ内でフィールド名をバッククォートしないでください。PARSE_ERROR が発生します。 |
data record(key: "val") | data record(key = "val") | record() は名前付きフィールドに = を使用します。: ではなく、: は rollup: などのコマンド パラメータ用です。 |
getNodeField(dt.smartscape.host, "tags")["tag.key"] | getNodeField(dt.smartscape.host, "tags")[tag.key] | このタグマップ アクセス パターンでは、ブラケット キーは引用符なしの識別子構文を使用する必要があります。引用符付きキーはパース エラーを引き起こします。 |
by: {dt.entity.host} または dt.entity.* | by: {dt.smartscape.host} または dt.smartscape.* | dt.entity.* は非推奨です — 新しいクエリでは常に dt.smartscape.* を使用してください。 |
Fetch コマンド → データモデル
DQL クエリは fetch <data_object> または timeseries で始まります。fetch dt.metric はありません。メトリクスは timeseries を使用します。
| Fetch コマンド | データモデル | キーフィールド / 注釈 |
|---|---|---|
fetch spans | 分散トレーシング | span.*、service.*、http.*、db.*、code.*、exception.* |
fetch logs | ログイベント | log.*、k8s.*、host.* — メッセージ本文は content、重度度は loglevel(log.level ではない) |
fetch events | DAVIS / インフラストラクチャイベント | event.*、dt.smartscape.* |
fetch bizevents | ビジネスイベント | event.*、カスタムフィールド |
fetch security.events | セキュリティイベント | vulnerability.*、event.* |
fetch user.sessions | RUM セッション | dt.rum.*、browser.*、geo.* |
fetch user.events | RUM 個別イベント | ページビュー、クリック、リクエスト、エラー |
fetch user.replays | セッションリプレイ録画 | |
fetch application.snapshots | アプリケーション スナップショット | |
fetch dt.davis.events | Davis が検出したイベント | |
fetch dt.davis.problems | Davis が検出した問題 | |
timeseries avg(metric.key) | メトリクス | fetch ではなく、ハイフン付きキーはバッククォートが必要です:timeseries sum(`my.metric-name`) |
smartscapeNodes "HOST" | トポロジー | fetch ではなく、タイプ:HOST、SERVICE、K8S_CLUSTER など |
dt.entity.* は非推奨です — 新しいクエリでは dt.smartscape.* と smartscapeNodes を使用してください。
利用可能なすべてのデータオブジェクトを検出:fetch dt.system.data_objects | fields name, display_name, type
→ 完全なフィールド ネームスペースについては references/semantic-dictionary.md を参照してください
samplingRatio パラメータ
fetch は samplingRatio: パラメータをサポートしており、読み取られるデータの量を削減できます。大規模なデータセットに対するクエリ パフォーマンスの向上に有用です。
fetch spans, samplingRatio:100 // データの約 1% を読み取る
許容値: 具体的なデータオブジェクトに依存し、1、10、100、1000、10000 から 100000 の範囲です。最高レベルは logs と spans でのみ利用可能です。
サンプリングは spans、user.events、user.sessions に対して階層的です:より高いレート(例:100)で含まれるレコードは、より低いレート(例:10、1)でも確実に表示されます。ただし、その逆はありません。これは、異なるレート での結果が互いのサブセットであることを意味します。その他すべての非メトリクス データオブジェクトはレコードごとに独立してサンプリングされるため、異なるレート での結果はサブセットではありません。
適用された実際のレートは dt.system.sampling_ratio フィールドを介してアクセス可能です。サンプリングされたカウントを真の合計に外挿するために使用してください:
fetch logs, samplingRatio:10
| summarize count_extrapolated = sum(dt.system.sampling_ratio)
メトリクス探索
キーワードで利用可能なメトリクスを検索するには、metrics コマンドを使用してください:
metrics from: now() - 1h
| filter contains(metric.key, "replay")
| summarize count(), by: {metric.key}
| sort `count()` desc
fetch dt.metric、fetch dt.metrics、fetch dt.system.metrics はありません — それらのデータオブジェクトは存在しません。
タイムシリーズ集計関数
timeseries コマンドはこれらの集計関数のみをサポートしています:
| 関数 | 説明 |
|---|---|
sum | 時間スロットあたりのメトリクス データポイントの合計 |
avg | 時間スロットあたりのメトリクス データポイントの平均 |
min | 時間スロットあたりのメトリクス データポイントの最小値 |
max | 時間スロットあたりのメトリクス データポイントの最大値 |
count | 時間スロットあたりのメトリクス データポイント数 |
percentile(metric, N) | 時間スロットあたりの N 番目パーセンタイル。rollup: が必須 — 下を参照。 |
median(metric) | 時間スロットあたりの 50 番目パーセンタイル(= percentile(metric, 50))。rollup: が必須。 |
percentRank(metric, value) | 時間スロットあたりの値のパーセンタイル ランク。rollup: が必須。 |
countDistinct(metric) | 時間スロットあたりの概算個別カウント(カーディナリティ メトリクスのみ;rollup: は受け入れません)。 |
ヘルパー(集計と一緒に使用):start()、end()。
timeseries でサポートされていない: countIf、collectArray、stddev、variance、takeAny、takeFirst、takeLast — summarize または makeTimeseries を使用してください。
rollup: パラメータ
メトリクスは取り込み時に事前に集計されます。rollup: は、生のデータポイントを時間スロットごとにどのように結合するかを制御します。percentile、median、percentRank で必須です。なければ、クエリはサイレントに結果を返しません。avg/min/max/sum/count は rollup: なしで機能します。
単一の集計 — コマンド レベルで rollup:。{} 内の複数の集計 — rollup: は各関数呼び出し内に入る必要があります(コマンド レベルの rollup: は UNKNOWN_PARAMETER_DEFINED を引き起こします):
timeseries p90 = percentile(dt.process.handles.file_descriptors_percent_used, 90), rollup: avg
timeseries {
p90 = percentile(dt.process.handles.file_descriptors_percent_used, 90, rollup: avg),
med = median(dt.process.handles.file_descriptors_percent_used, rollup: avg),
avg_val = avg(dt.process.handles.file_descriptors_percent_used)
}, by: {dt.smartscape.host}
値:avg(ゲージ)、min、max、sum(カウンター)、total。
タイムシリーズ-スカラー変換
タイムシリーズをスカラーに折りたたむには 2 つの方法があります。単一の集計値のみが必要な場合は scalar:true パラメータを優先してください。中間配列が実体化されないため、より効率的です。フルシリーズと同じクエリ内の派生スカラーの両方が必要な場合はフォールバックします。
推奨:集計関数上の scalar:true
任意のタイムシリーズ集計関数に scalar:true を渡します。結果フィールドには配列の代わりに単一の値が含まれ、中間配列は割り当てられません:
timeseries avg_cpu = avg(dt.host.cpu.usage, scalar:true), by:{dt.smartscape.host}
timeseries {
avg_cpu = avg(dt.host.cpu.usage, scalar:true),
max_cpu = max(dt.host.cpu.usage, scalar:true)
}, by:{dt.smartscape.host}
フォールバック:fieldsAdd の配列関数
フル タイム シリーズ配列と派生スカラーの両方が必要な場合、後続の | fieldsAdd で配列関数を使用します:
| 関数 | 説明 |
|---|---|
arrayAvg(arr) | 配列内のすべての値の平均 |
arraySum(arr) | 合計 |
arrayMin(arr) | 最小値 |
arrayMax(arr) | 最大値 |
arrayMedian(arr) | 中央値 |
arrayPercentile(arr, N) | N 番目パーセンタイル(0–100) |
arrayLast(arr) | 最後の null 以外の値(最新データポイント) |
arrayFirst(arr) | 最初の null 以外の値(最初のデータポイント) |
timeseries cpu = avg(dt.host.cpu.usage), by:{dt.smartscape.host}
| fieldsAdd avg_cpu = arrayAvg(cpu), max_cpu = arrayMax(cpu)
時間配置(@演算子)
@ 演算子はタイムスタンプを境界に配置します — エージェントはこれをしばしば間違えます。
| 式 | 意味 |
|---|---|
now()@h | 現在時刻、時境界に配置 |
now()@d | 今日の真夜中 |
now()@w1 | 今週の月曜日 |
now()-2h@h | 2 時間前、時境界に配置(オフセット先、次に配置) |
ルール:
- 順序:配置の前にオフセット —
now()-2h@h、now()@h-2hではない @と単位の間にスペースはありません —now()@h、now() @hではないm= 分、M= 月 — 混同しないでください
→ references/dql/dql-functions-timeseries.md で完全な timeseries 集計と rollup: ルールを参照
→ references/dql/dql-functions-array.md で arrayAvg / arrayMax / arrayPercentile / … 仕様を参照
エンティティと Smartscape パターン
エンティティ フィールドはタイプごとにスコープされます — entity.id は存在しません。トポロジー クエリには smartscapeNodes を使用してください。
| エンティティ | データ内の ID フィールド | smartscapeNodes タイプ |
|---|---|---|
| ホスト | dt.smartscape.host | "HOST" |
| サービス | dt.smartscape.service | "SERVICE" |
| プロセス | dt.smartscape.process | "PROCESS" |
| K8s クラスタ | dt.smartscape.k8s_cluster | "K8S_CLUSTER" |
文字列から ID 変換には toSmartscapeId() を使用してください(必須!)。
→ references/smartscape-topology-navigation.md を参照
makeTimeseries コマンド
makeTimeseries はイベント データ(ログ、スパン、bizevents)から時間バケット化されたシリーズをビルドします。timeseries(事前に取り込まれたメトリクスをクエリする)とは異なり、makeTimeseries はパイプラインでデータを集計します。
timeseries を直接 makeTimeseries にパイプしないでください — INVALID_IMPLICIT_TIME_DEFAULT で失敗します。メトリクス データを再集計するには、start() と expand を使用してください(references/summarization.md を参照)。
fetch logs
| makeTimeseries
total = count(),
errors = countIf(loglevel == "ERROR"),
interval: 5m,
by: {k8s.cluster.name}
| fieldsAdd error_rate = errors / total * 100
キー パラメータ:interval:、by:{}、from:/to:、bins:、time:(タイムスタンプ フィールド)、spread:(count/countIf のみ)、nonempty:。
→ references/summarization.md で完全な makeTimeseries パターンと summarize バケット化を参照
→ references/iterative-expressions.md でタイムシリーズ配列操作を参照
matchesValue() 使用法
dt.tags などの配列フィールドに matchesValue() を使用してください:
| filter matchesValue(dt.tags, "env:production")
- 特殊文字を持つ文字列フィールド用ではなく — これらは
contains()を使用してください - スカラー文字列フィールド上の
matchesValue()はワイルドカードまたはあいまいマッチのように動作しません
チェーン Lookup パターン
フィールド パラメータなしの各 lookup コマンドは、新しいフィールドを追加する前に、プレフィックス(デフォルト:lookup.)で始まるすべての既存フィールドを削除します。複数の lookup をチェーンする場合、fields パラメータまたはカスタム プレフィックスを使用して結果を保持してください:
オプション 1(デフォルト): 必要なフィールドが既知。
fetch bizevents
// ステップ 1: 最初の lookup — 製品情報で注文をエンリッチ
| lookup [fetch bizevents
| filter event.type == "product_catalog"
| fields product_id, category],
sourceField: product_id, lookupField: product_id, fields: {product_id, product_category = category}
// ステップ 2: 2 番目の lookup — 別の名前でフィールドを指定
| lookup [fetch bizevents
| filter event.type == "warehouse_stock"
| fields category, warehouse_region],
sourceField: product_category, lookupField: category, fields: {warehouse_region, warehouse_category = category}
すべての 4 つの lookup フィールド product_id、product_category、warehouse_region、warehouse_category が利用可能です。
fields:{...} パラメータなしでは、フィールドは lookup. でプレフィックスされ、2 番目の lookup コマンドは最初の lookup によって追加されたフィールドを削除します。
オプション 2: lookup からすべてのフィールドを保持。
fetch bizevents
// ステップ 1: 最初の lookup — 製品情報で注文をエンリッチ
| lookup [fetch bizevents
| filter event.type == "product_catalog"
| fields product_id, category],
sourceField: product_id, lookupField: product_id, prefix: "product."
// ステップ 2: 2 番目の lookup — 別のプレフィックスを指定
| lookup [fetch bizevents
| filter event.type == "warehouse_stock"
| fields category, warehouse_region],
sourceField: product_category, lookupField: category, prefix: "warehouse."
新しいフィールドは:product.product_id、product.category、warehouse.category、warehouse.warehouse_region。
product. または warehouse. で始まるすべてのフィールドは、元のソースから削除されます。
専用の prefix なしでは、両方の lookup コマンドは同じプレフィックス(lookup.)を使用し、2 番目の lookup は最初の lookup の結果を削除します — 空のフィールドを生成します。
makeTimeseries コマンド
makeTimeseries はイベント データ(ログ、スパン、bizevents)から時間バケット化されたシリーズをビルドします。timeseries(事前に取り込まれたメトリクスをクエリする)とは異なり、makeTimeseries はパイプラインでデータを集計します。
timeseries を直接 makeTimeseries にパイプしないでください — INVALID_IMPLICIT_TIME_DEFAULT で失敗します。メトリクス データを再集計するには、start() と expand を使用してください(references/summarization.md を参照)。
fetch logs
| makeTimeseries
{total = count(),
errors = countIf(loglevel == "ERROR")},
interval: 5m,
by: {k8s.cluster.name}
| fieldsAdd error_rate = errors[] * 100.0 / total[]
キー パラメータ:interval:、by:{}、from:/to:、bins:、time:(タイムスタンプ フィールド)、spread:(count/countIf のみ)、nonempty:。→ references/dql/dql-commands.md で完全な仕様を参照。
spread: を使用したエンティティ存在期間タイムライン:
smartscapeNodes "HOST"
| makeTimeseries concurrently_existing_hosts = count(), spread: lifetime
→ references/iterative-expressions.md でタイムシリーズ配列操作を参照
タイムフレーム指定
データへのアクセスにはタイムフレームの指定が必要です。
UI で、REST API パラメータで、または DQL クエリで明示的に、パラメータのペアを使用して指定できます:from: と to:(いずれかが省略された場合、デフォルトは now())、またはまたは単一の timeframe: パラメータを使用します。
タイムフレームは、絶対値または現在時刻に対する相対式を使用して表現できます。時間配置演算子(@)を使用して、タイムスタンプを時間単位の境界に丸めることができます — 詳細は references/operators.md を参照してください。
例
from:now()-1h@h, to:now()@h // 最後の完全時間
from:now()-1d@d, to:now()@d // 昨日全体
from:now()@M // 今月、現在まで
from:now()-2h@h // 2 時間遡る、次に時境界に配置
完全な @ 配置単位テーブル(m と M、週日バリアント w1–w7、係数ルール @3h を含む)は references/operators.md を参照してください。
絶対タイムスタンプ
ISO 8601 形式を使用してください:
from:"2024-01-15T08:00:00Z", to:"2024-01-15T09:00:00Z"
時間の変更
主要概念
- DQL には時間に関連した 3 つの特殊なタイプがあります:
- timestamp — 内部的にはエポック以降のナノ秒数として保持されますが、特定のタイムゾーンで日時として公開されます
- timeframe — 2 つのタイムスタンプ(開始と終了)のペア
- duration — 内部的にはナノ秒数として保持されますが、適切な係数(例:ms、分、日)にスケーリングされたデュレーションとして公開されます
ルール
- タイムスタンプを減算するとデュレーションが生成されます:
timestamp - timestamp → duration - デュレーションをデュレーションで割るとダブルが生成されます:例:
2h / 1m=120.0 - スカラー時間デュレーションはデュレーションを生成します:例:
no_of_h * 1h → duration - 時間要素(時間、月の日など)の抽出については:
- ✅
時間関数を使用します。DST を含めてカレンダーとタイムゾーンを正しく サポートします。 - ❌
formatTimestampを使用して時間成分を抽出するのは避けてください。 - ❌ タイムスタンプとデュレーションをダブル/ロングに変換し、除算、モジュロ、ナノ秒として時間単位を表す定数を使用するのは避けてください。
- ✅
リファレンス
references/useful-expressions.md— DQL 内の有用な式references/semantic-dictionary.md— Dynatrace セマンティック辞書:フィールド ネームスペース、データモデル、安定性レベル、クエリパターン、ベストプラクティスreferences/summarization.md— summarize および makeTimeseries コマンドの様々なアプリケーションreferences/iterative-expressions.md— DQL を使用した配列とタイムシリーズの操作(作成、変更、フィルタでの使用)references/smartscape-topology-navigation.md— Smartscape トポロジーナビゲーション構文とパターンreferences/optimization.md— DQL クエリ最適化:フィルタ配置、時間範囲、フィールド選択、パフォーマンス ベストプラクティスreferences/operators.md—in演算子(サブクエリ構文)と完全な@時間配置単位リファレンス
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- dynatrace
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/dynatrace/dynatrace-for-ai / ライセンス: Apache-2.0
関連スキル
hugging-face-trackio
Trackioを使用してMLトレーニング実験を追跡・可視化できます。トレーニング中のメトリクスログ記録(Python API)、トレーニング診断のアラート発火、ログされたメトリクスの取得・分析(CLI)が必要な場合に活用してください。リアルタイムダッシュボード表示、Webhookを使用したアラート、HF Space同期、自動化向けのJSON出力に対応しています。
btc-bottom-model
ビットコインのサイクルタイミングモデルで、加重スコアリングシステムを搭載しています。日次パルス(4指標、32ポイント)とウィークリー構造(9指標、68ポイント)の2カテゴリーにわたる13の指標を追跡し、0~100のマーケットヒートスコアを算出します。ETFフロー、ファンディングレート、ロング/ショート比率、恐怖・貪欲指数、LTH-MVRV、NUPL、SOPR(LTH+STH)、LTH供給率、移動平均倍率(365日MA、200週MA)、週次RSI、出来高トレンドに対応します。市場サイクル全体を通じて買いと売りの両方の推奨を提供します。ビットコインの底値拾い、BTCサイクルポジション、買い時・売り時、オンチェーン指標、MVRV、NUPL、SOPR、LTH動向、ETFの流出入、ファンディングレート、恐怖指数、ビットコインが過熱状態か、マイナーコスト、暗号資産市場のセンチメント、BTCのポジションサイジング、「今ビットコインを買うべきか」「BTCが天井をつけているか」「オンチェーン指標は何を示しているか」といった質問の際にこのスキルを活用します。
protein_solubility_optimization
タンパク質の溶解性最適化 - タンパク質の溶解性を最適化します。タンパク質の特性を計算し、溶解性と親水性を予測し、有効な変異を提案します。タンパク質配列の特性計算、タンパク質機能の予測、親水性計算、ゼロショット配列予測を含むタンパク質エンジニアリング業務に使用できます。3つのSCPサーバーから4つのツールを統合しています。
research-lookup
Parallel Chat APIまたはPerplexity sonar-pro-searchを使用して、最新の研究情報を検索できます。学術論文の検索にも対応しています。クエリは自動的に最適なバックエンドにルーティングされるため、論文の検索、研究データの収集、科学情報の検証に活用できます。
tree-formatting
ggtree(R)またはiTOL(ウェブ)を使用して、系統樹の可視化とフォーマットを行います。系統樹を図として描画する際、ツリーレイアウトの選択、分類学に基づく枝やラベルの色付け、クレードの折りたたみ、サポート値の表示、またはツリーへのオーバーレイ追加が必要な場合に使用してください。系統推定(protein-phylogenyスキルを使用)やドメイン注釈(今後の独立したスキル)には使用しないでください。
querying-indonesian-gov-data
インドネシア政府の50以上のAPIとデータソースに接続できます。BPJPH(ハラール認証)、BOM(食品安全)、OJK(金融適正性)、BPS(統計)、BMKG(気象・地震)、インドネシア中央銀行(為替レート)、IDX(株式)、CKAN公開データポータル、pasal.id(第三者法MCP)に対応しています。インドネシア政府データを活用したアプリ開発、.go.idウェブサイトのスクレイピング、ハラール認証の確認、企業の法的適正性の検証、金融機関ステータスの照会、またはインドネシアMCPサーバーへの接続時に使用できます。CSRF処理、CKAN API使用方法、IP制限回避など、すぐに実行可能なPythonパターンを含んでいます。