Skip to content

Instantly share code, notes, and snippets.

@KenjiOhtsuka
Last active August 17, 2023 02:53
Show Gist options
  • Save KenjiOhtsuka/74f0954f705708c0708ef353dfb77511 to your computer and use it in GitHub Desktop.
Save KenjiOhtsuka/74f0954f705708c0708ef353dfb77511 to your computer and use it in GitHub Desktop.
with ChatGPT

Kusto Query Language (KQL) チートシート

データ型

  1. bool: 真偽値 (true または false) を表します。
  2. int: 整数型を表します。
  3. long: 長整数型を表します。通常、intよりも大きい値を扱う際に使用されます。
  4. real: 浮動小数点数型を表します。
  5. decimal: 10進数型を表します。高精度な小数点数計算に使用されます。
  6. string: 文字列型を表します。テキストデータを表現するのに使用されます。
  7. datetime: 日付と時刻の組み合わせを表します。
  8. timespan: 時間間隔を表します。
  9. dynamic: 動的な型です。一連のキーと値のペアを持つオブジェクトを表現します。
  10. guid: GUID(グローバル一意識別子)を表します。
  11. timeseries: 時系列データ型を表します。特定の時刻またはタイムスタンプと値のペアを含むデータを表現します。
  12. dynamic array: 動的な型の配列です。複数の動的な型の要素を持つことができます。

データベースとテーブルの選択

// データベース選択
use <データベース名>

// テーブル選択
<テーブル名>

データの表示

// 全ての列を表示
<テーブル名>

// 特定の列を表示
<テーブル名>
| project <列名1>, <列名2>

// 上位 n 件を表示
<テーブル名>
| top <n>

// 特定の条件を満たす行を表示
<テーブル名>
| where <条件>

データの集計

// グループごとに集計
<テーブル名>
| summarize <集計関数>(<列名>) by <グループ化する列>

// 日付別に集計
<テーブル名>
| summarize <集計関数>(<列名>) by bin(<日付列>, <時間間隔>)

// グループごとに複数の集計
<テーブル名>
| summarize <集計1> = <集計関数1>(<列名1>), <集計2> = <集計関数2>(<列名2>) by <グループ化する列>

ソートと順序

// 特定の列で昇順にソート
<テーブル名>
| order by <列名>

// 特定の列で降順にソート
<テーブル名>
| order by <列名> desc

データの結合

// 別のテーブルと結合
<テーブル名1>
| join kind=<結合の種類> ( <テーブル名2> ) on <共通の列>

サブクエリ

// サブクエリの利用
<外部のクエリ>
| where <列名> in (query <サブクエリ>)

日付と時間

// 現在の日時を取得
now()

// 特定の日付フォーマットに変換
<日付列>
| format_datetime('<書式>')

条件式

文字列比較

// 特定の列が値を持つかチェック
<テーブル名>
| where has(<列名>)

// 特定の列に特定の値が含まれるかチェック
<テーブル名>
| where contains(<列名>, '<値>')

値の比較

// 値が等しいかチェック
<テーブル名>
| where <列名> == <値>

// 値が等しくないかチェック
<テーブル名>
| where <列名> != <値>

// 値が大きいかチェック
<テーブル名>
| where <列名> > <値>

// 値が小さいかチェック
<テーブル名>
| where <列名> < <値>

// 値が以上かチェック
<テーブル名>
| where <列名> >= <値>

// 値が以下かチェック
<テーブル名>
| where <列名> <= <値>

数値計算

// 数値列を加算
<テーブル名>
| extend <新しい列名> = <数値列1> + <数値列2>

// 数値列を減算
<テーブル名>
| extend <新しい列名> = <数値列1> - <数値列2>

// 数値列を乗算
<テーブル名>
| extend <新しい列名> = <数値列1> * <数値列2>

// 数値列を除算
<テーブル名>
| extend <新しい列名> = <数値列1> / <数値列2>

// 数値列を剰余
<テーブル名>
| extend <新しい列名> = <数値列1> % <数値列2>

条件演算

// 条件が成り立つ場合に値を返す (Ternary条件演算子)
<テーブル名>
| project <新しい列名> = iif(<条件>, <真の値>, <偽の値>)

// NULLの場合に代替値を設定
<テーブル名>
| extend <新しい列名> = coalesce(<列名>, <代替値>)

文字列操作

// 文字列連結
<テーブル名>
| extend <新しい列名> = strcat(<文字列列1>, <文字列列2>)

// 文字列の長さを取得
<テーブル名>
| extend <新しい列名> = strlen(<文字列列>)

// 文字列を大文字に変換
<テーブル名>
| extend <新しい列名> = toupper(<文字列列>)

// 文字列を小文字に変換
<テーブル名>
| extend <新しい列名> = tolower(<文字列列>)

// 文字列を置換
<テーブル名>
| extend <新しい列名> = replace(<文字列列>, "<置換前>", "<置換後>")

その他関数

計算関数

  • sum(), avg(), min(), max(), count(), percentile(), stdev(), variance()
  1. percentile()

    • 説明: データのパーセンタイルを計算します。指定したパーセンタイルでデータを分割し、その値を返します。
    • 使用例: 特定の列の中央値や四分位数を計算する
      MyTable
      | summarize Median = percentile(MyColumn, 50), Q1 = percentile(MyColumn, 25)
  2. stdev()

    • 説明: 指定した列の標本標準偏差(サンプルの偏差)を計算します。データのばらつきや散らばり具合を測定します。
    • 使用例: データのばらつきを計算する
      MyTable
      | summarize StandardDeviation = stdev(MyColumn)
  3. variance()

    • 説明: 指定した列の分散を計算します。データのばらつきや散らばり具合を数値化します。
    • 使用例: データの分散を計算する
      MyTable
      | summarize Variance = variance(MyColumn)

データ操作関数

  • project, extend, filter, distinct, union, join, lookup, sample, parse, evaluate, range
  1. extend()

    • 説明: クエリ結果に新しい列を追加します。既存の列を使用して計算された値を追加するのに便利です。
    • 使用例: 列を追加して計算を行う
      MyTable
      | extend NewColumn = MyColumn * 2
  2. filter()

    • 説明: 特定の条件に基づいて行をフィルタリングします。条件に一致する行のみを取得します。
    • 使用例: 特定の条件に基づいて行をフィルタリングする
      MyTable
      | filter MyColumn > 10
  3. distinct()

    • 説明: 列の値を一意にし、重複を排除します。重複しない値のみを取得します。
    • 使用例: 列の値を一意にする
      MyTable
      | distinct MyColumn
  4. union()

    • 説明: 複数のクエリ結果を結合します。異なるテーブルやクエリの結果をまとめて表示します。
    • 使用例: 複数のクエリ結果を結合する
      UnionQuery1
      | union UnionQuery2
  5. join()

    • 説明: 異なるテーブル間の関連する行を結合します。共通の列を使用して行をマッチングします。
    • 使用例: 異なるテーブルを結合する
      Table1
      | join kind=inner (Table2) on CommonColumn
  6. lookup()

    • 説明: 他のテーブルから特定の条件に基づいて値を取得します。関連するテーブルから値を引き出すのに使用されます。
    • 使用例: 他のテーブルから値を引き出す
      LookupTable
      | lookup CommonColumn
  7. sample()

    • 説明: クエリ結果からランダムにサンプリングされた行を取得します。データの一部をサンプリングして確認するのに役立ちます。
    • 使用例: サンプリングされた行を取得する
      MyTable
      | sample 10
  8. parse()

    • 説明: 文字列からデータを解析して新しい列を作成します。正規表現などを使用してデータを抽出するのに使われます。
    • 使用例: 文字列からデータを抽出して新しい列を作成する
      MyTable
      | parse MyColumn with * "abc" resultValue
  9. evaluate()

    • 説明: クエリの最後に評価式を使用してデータを変換します。集計や計算を行う際に使われます。
    • 使用例: 評価式を使用してデータを変換する
      MyTable
      | evaluate sum(MyColumn)
  10. range()

    • 説明: 数値の範囲を生成してクエリ結果として表示します。主にテストやデモ用途で使用されます。
    • 使用例: 指定した範囲の数値を生成する
      range x from 1 to 10 step 2

文字列操作関数

  • strcat(), strlen(), trim(), upper(), lower(), substring(), replace(), regex(), split()

日付・時刻関数

  • datetime_add(), datetime_diff(), datetime_part(), now(), ago(), startofday(), endofday()

論理演算関数

  • and, or, not, in, has(), contains(), isempty()

集計関数

  • summarize, make_list(), makeset(), makelist(), summarize arg_max(), arg_min()

シリーズ演算関数

  • series_fills(), series_interval(), series_sample(), series_decompose()

その他の関数

  • case(), coalesce(), isnull(), isnotnull(), tostring(), todouble(), tolong(), todatetime(), iif()

グラフ関数(時系列データ)

  • series_fit_line()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment