NRQLを使用すると、別のクエリ内にネストされたクエリであるサブクエリを実行できます。
サブクエリの基本
サブクエリは、別のクエリ内にネストされたクエリです。サブクエリを使用すると、あるクエリの結果を別のクエリで使用できます。サブクエリで実行できることの例:
- 親エンティティの子エンティティで計算を実行します
- インフラストラクチャエージェントのCPU使用率に基づいて、CPU負荷が高いホストのエラーログを参照してください
NRQL では、 SELECT
ステートメントとWHERE
句でサブクエリを使用できます。
サブクエリの例
平均以上の期間のトランザクションの数を取得するためのクエリの例を次に示します。
SELECT count(*) FROM Transaction WHERE duration > (SELECT average(duration) FROM Transaction)
サブクエリの結果は、コンテキストで意味をなす必要があります。上記の例では、 WHERE
句の大なり条件には、単一の値を返すサブクエリが必要です。一連の値を返すサブクエリ ( uniques()
サブクエリなど) は失敗します。
サブクエリは、別のサブクエリ内にネストできます。クエリでは、ネストされているかどうかに関係なく、最大3つのサブクエリを使用できます。
サブクエリの時間範囲は、 SINCE
/UNTIL
で明示的に指定されていない限り、外側のクエリと同じになります。ダッシュボードで、 タイム ピッカー からウィンドウを選択すると、サブクエリの時間範囲が外部クエリの時間範囲に合わせられます。そのグラフに Ignore Time Picker[時間ピッカーを無視] を設定した場合、サブクエリの時間範囲と外部クエリの時間範囲は同じではありません。
サブクエリの実行
クエリの実行中、各サブクエリは独立して実行され、その結果は外部クエリで定数値または値のセットとして使用されます。この実行モデルにより、サブクエリは外部クエリの属性と値を参照しない場合があります。
クエリ期間の制限は、サブクエリを含むクエリに対して適用されます。これは、すべてのサブクエリと外部クエリが期間制限内に実行を完了する必要があることを意味します。
サブクエリが返すことができる結果の最大数は、 LIMIT MAX
の値と同じ : 2,000 です。その制限を超えると、結果が不完全になり、次のエラー メッセージが表示される場合があります。
サブクエリとネストされた集計
サブクエリは似ているように見えますが、ネストされたクエリの結果を集計できるネストされた集計と混同しないでください。ネストされた集計はFROM
句で使用され、サブクエリはSELECT
ステートメントとWHERE
句で使用されます。
制限
- サブクエリは、NRQLアラート条件ではサポートされていません。サブクエリを使用するクエリでは、データに対して複数のパスを作成する必要があるため、サブクエリはストリーミングアラートと互換性がありません。
- クエリが複数の結果セットを返す原因となる
TIMESERIES
句とCOMPARE WITH
句は、サブクエリではサポートされていません。 - サブクエリは
FACET
句には表示できませんが、FACET CASES
で使用されるWHERE
句には表示できます。 - 結果の数に制限があります
サブクエリの例
サブクエリの例を次に示します。