翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
OpenSearch SQL 言語
このセクションでは、OpenSearch SQL を使用した CloudWatch Logs のクエリに関する基本的な概要を示します。リレーショナルデータベースの使用に慣れている場合は、使い慣れたオプションを提供します。OpenSearch SQL は SQL 機能のサブセットを提供するため、アドホッククエリやデータ分析タスクの実行に適しています。OpenSearch SQL では、SELECT、FROM、WHERE、GROUP BY、HAVING、その他の SQL コマンドや関数などのコマンドを使用できます。ロググループ間で JOINs を実行し、サブクエリを使用してロググループ間でデータを関連付け、豊富な JSON、数学、文字列、条件、その他の SQL 関数のセットを使用して、ログとセキュリティデータに対して強力な分析を実行できます。
OpenSearch SQL は、標準ログクラスのロググループのクエリにのみ使用できます。
次の表に、CloudWatch Logs でサポートされている SQL コマンドと関数を示します。構文を含むすべての OpenSearch SQL コマンドの詳細については、OpenSearch Service デベロッパーガイド」の「サポートされている SQL コマンド」を参照してください。
サポートされている SQL コマンド
コマンドまたは関数 | クエリの例 | 説明 |
---|---|---|
SELECT |
|
射影された値を表示します。 |
FROM |
|
データを取得するソーステーブル (複数可) またはビュー (複数可) を指定する組み込み句。さまざまなタイプの結合とサブクエリをサポートします。 |
WHERE |
|
指定されたフィールド基準に基づいてログイベントをフィルタリングします。 |
グループ化の条件 |
|
グループはカテゴリに基づいてイベントをログに記録し、統計に基づいて平均を見つけます。 |
HAVING |
|
グループ化条件に基づいて結果をフィルタリングします。 |
ORDER BY |
|
ORDER BY 句のフィールドに基づいて結果を順序付けします。降順または昇順でソートできます。 |
JOIN |
|
共通フィールドに基づいて 2 つのテーブルの結果を結合します。内部 JOIN または左外部結合を指定する必要があります |
LIMIT |
|
表示されるクエリ結果を最初の N 行に制限します。 |
文字列関数 |
|
SQL クエリ内の文字列およびテキストデータを操作および変換できる SQL の組み込み関数。たとえば、大文字と小文字の変換、文字列の組み合わせ、パーツの抽出、テキストのクリーニングなどです。 |
日付関数 |
|
SQL クエリで日付とタイムスタンプデータを処理および変換するための組み込み関数。たとえば、date_add、date_format、 datediff、current_date などです。 |
条件関数 |
|
指定された条件に基づいてアクションを実行するか、式を条件付きで評価する組み込み関数。例えば、CASE や IF などです。 |
関数を移行する |
|
複数の行で計算を実行して 1 つの要約値を生成する組み込み関数。たとえば、SUM、COUNT、AVG、MAX、MIN などです。 |
JSON 関数 |
|
SQL クエリ (from_json、to_json、get_json_object、json_tuple など) 内の JSON 形式のデータを解析、抽出、変更、クエリするための組み込み関数。データセット内の JSON 構造を操作できます。 |
配列関数 |
|
SQL クエリで配列タイプの列を操作するための組み込み関数。配列データ (サイズ、爆発、配列コンテナなど) へのアクセス、変更、分析などの操作を可能にします。 |
Window 関数 |
|
現在の行 (ウィンドウ) に関連する指定された行セットで計算を実行する組み込み関数。ランキング、実行合計、移動平均などのオペレーションを有効にします。例えば、ROW_NUMBER、RANK、LAG、LEAD などです。 |
変換関数 |
|
SQL クエリ内であるタイプから別のタイプにデータを変換するための組み込み関数。データ型変換と形式変換を可能にします。たとえば、CAST、TO_DATE、TO_TIMESTAMP、BINARY などです。 |
述語関数 |
|
条件を評価し、指定された条件またはパターンに基づいてブール値 (true/false) を返す組み込み関数。たとえば、IN、LIKE、BETWEEN、IS NULL、EXISTS などです。 |
複数のロググループを選択する |
|
SELECT ステートメントで複数のロググループを指定できます |
multi-log-groupクエリでサポートされている SQL
SQL で複数のロググループをクエリするユースケースをサポートするには、 logGroups
コマンドを使用できます。この構文を使用して、FROM コマンドで指定することで、複数のロググループをクエリできます。
構文:
`logGroups( logGroupIdentifier: ['LogGroup1','LogGroup2', ...'LogGroupn'] )
この構文では、 logGroupIdentifier
パラメータに最大 50 個のロググループを指定できます。モニタリングアカウントのロググループを参照するには、LogGroup
名前の代わりに ARNs を使用します。
クエリの例:
SELECT LG1.Column1, LG1.Column2 from `logGroups( logGroupIdentifier: ['LogGroup1', 'LogGroup2'] )` as LG1 WHERE LG1.Column1 = 'ABC'
CloudWatch Logs のクエリでは、 FROM
ステートメントの後に複数のロググループを含む次の構文はサポートされていません。
SELECT Column1, Column2 FROM 'LogGroup1', 'LogGroup2', ...'LogGroupn' WHERE Column1 = 'ABC'
制限事項
OpenSearch SQL を使用して CloudWatch Logs Insights でクエリを実行する場合、次の制限が適用されます。
-
SELECT ステートメントに含めることができる JOIN は 1 つだけです。
-
ネストされたサブクエリは 1 つのレベルのみサポートされます。
-
セミコロン (;) で区切られた複数のステートメントクエリはサポートされていません。
-
フィールド名は同じですが、大文字と小文字 (field1 や FIELD1 など) が異なるクエリはサポートされていません。
たとえば、次のクエリはサポートされていません。
Select AWSAccountId, AwsAccountId from LogGroup
ただし、フィールド名 (
@logStream
) は両方のロググループで同じであるため、次のクエリがサポートされています。Select a.`@logStream`, b.`@logStream` from Table A INNER Join Table B on a.id = b.id
-
関数と式はフィールド名で動作し、FROM 句で指定されたロググループを持つ SELECT ステートメントの一部である必要があります。
たとえば、このクエリはサポートされていません。
SELECT cos(10) FROM LogGroup
このクエリはサポートされています。
SELECT cos(field1) FROM LogGroup
-
SQL コマンドまたは PPL コマンドを使用する場合は、特定のフィールドをバックティックで囲んでクエリを正常に実行します。バックティックは、特殊文字 (非アルファベットおよび非数値) を含むフィールドに必要です。たとえば、
@message
、、Operation.Export
をバックティックTest::Field
で囲みます。列を単にアルファベット名でバックティックで囲む必要はありません。シンプルなフィールドを含むクエリの例:
SELECT SessionToken, Operation, StartTime FROM `LogGroup-A` LIMIT 1000;
バックティックが追加された同様のクエリ:
SELECT `@SessionToken`, `@Operation`, `@StartTime` FROM `LogGroup-A` LIMIT 1000;