このページでは、よく使う集約関数、式、クエリ句など、Log Explorer がサポートする SQL 機能を説明します。
次の図は、Log Explorer で使えるクエリの全体像です。SELECT、WHERE、GROUP BY、ORDER BY などの標準的な SQL 句を組み合わせて、サポート対象のクエリを組み立てます。
クエリの例:
SELECT * FROM table WHERE (a = 1 OR b = "hello") AND c < 25.89SELECT a, b, c FROM table WHERE d >= "GB" LIMIT 10
次の SQL 句は、Log Explorer でのクエリの構造とロジックを定義します。
SELECT-SELECT句は、データベーステーブルから取得する列を指定します。個別の列名、式、またはすべての列を選ぶワイルドカードを含められます。FROM-FROM句は、データを取得するテーブルを指定します。SELECT文のデータソースを示します。WHERE-WHERE句は、指定した条件に基づいてクエリが返す行を絞り込みます。結果セットに行を含めるために満たす必要がある条件を指定できます。SELECT DISTINCT- 結果セットから重複行を除きます。GROUP BY- 集約のために行をグループ化します。GROUP BY句は、同じ値を持つ行を要約行にまとめます。ORDER BY- 結果セットを並べ替えます。ORDER BY句は、1 つ以上の列で昇順または降順に結果セットを並べ替えます。LIMIT- 返す行数を制限します。LIMIT句は、クエリが返す行数を制約します。上位N行の取得やページネーションのために、ORDER BY句と組み合わせて使うことがよくあります。OFFSET- 結果を返す前に、指定した行数をスキップします。
以降のセクションでは、図に示した残りの要素(集約関数、文字列・数値の式、サポートする演算子など)を詳しく説明します。
Log Explorer は、データを変換、評価、要約するためのさまざまな SQL 関数をサポートします。スカラー関数と集約関数があります。
値(多くの場合は文字列)を操作または評価します。
-
ARRAY_CONTAINS(array, element)– 配列に要素が含まれるかを調べます。例
ARRAY_CONTAINS(['US', 'CA'], ClientCountry)ClientCountryがUSまたはCAである行を返します。 -
SUBSTRING(string, from_number, for_number)– 文字列の一部を取り出します。例
SUBSTRING(ClientRequestPath, 0, 5)ClientRequestPathから先頭5文字を取り出します。 -
LOWER(string)– 小文字に変換します。例
LOWER(ClientRequestUserAgent)ユーザーエージェント文字列を小文字に変換します。
-
UPPER(string)– 大文字に変換します。例
UPPER(ClientCountry)国コードを大文字に変換します。
行の集合に対して計算を行います。
-
SUM(expression)– 値の合計です。例
SUM(ClientRequestBytes)クライアントがリクエストしたバイト数の合計を求めます。
-
MIN(expression)– 最小値です。例
MIN(OriginResponseDurationMs)オリジンサーバーからの最短レスポンス時間を求めます。
-
MAX(expression)– 最大値です。例
MAX(OriginResponseDurationMs)最長レスポンス時間を求めます。
-
COUNT(expression)– 行数です(全行、または非 NULL 値の数)。例
COUNT(ClientRequestUserAgent)ユーザーエージェント値を持つ行の数を数えます。
-
COUNT(DISTINCT expression)– 重複しない非 NULL 値の数です。例
COUNT(DISTINCT ClientIP)リクエストした一意のクライアント IP の数を数えます。
-
AVG(expression)– 数値の平均です。例
AVG(OriginResponseDurationMs)オリジンの平均レスポンス時間(ミリ秒)を計算します。
次の図は、スカラー関数と集約関数を含む SQL 式の文法です。
クエリで使う条件やロジックです。
CASE WHEN– 条件分岐(if-else に相当)。AS– 列またはテーブルの別名。LIKE– パターンマッチ。IN (list)– 値がリストに含まれるかを調べます。BETWEEN ... AND ...– 値が範囲内かを調べます。- 単項演算子 – 1 つのオペランドに作用します(例:
-5)。 - 二項演算子 – 2 つのオペランドに作用します(例:
5 + 3)。 - 入れ子の式 – 括弧で囲んだ式です。
( x > y )や( 1 )など。 - 複合識別子 – 複数部分からなる名前です(例:
schema.table.column)。 - 配列 – 値の集合です(SQL 方言によってサポートが異なります)。
- リテラル - 文字列、数値、配列などの値を表します。
次の図は SQL 式の文法で、列、リテラル、関数、演算子、別名など、式が取りうる形を示します。
次の図は、単一のオペランドに作用する単項演算子の文法です(例: 符号反転や論理 NOT)。
算術、比較、論理演算に使います。
- 算術:
+、-、*、/、%(剰余) - 比較:
>、<、>=、<=、=、!=(または<>) - 論理:
AND、OR、XOR - ビット演算:
&、|、^、>>、<< - 文字列連結:
||