ネストされた集計を使用すると、 NRQLクエリを完了し、そのクエリの結果を使用して追加の計算を行うことができます。ネストされた集約は、サブクエリが外部クエリのFROM
句にあるSQLサブクエリまたはサブセレクトのクラスと同様のNRQL機能を提供します。
ヒント
この機能は、 SELECT
およびWHERE
句でサブクエリを実行できるサブクエリ機能とは異なります。
複雑な質問にも1つのクエリで回答
ネストされた集約は、複数のクエリを構築することなく、このような質問に答えるのに役立ちます。
- 自分のアプリケーションの1分あたりのリクエスト数をカウントして、過去1時間の1分あたりの最大リクエスト数を取得するにはどうしたらいいですか?
- すべてのサーバーやホストの平均CPU使用率を計算して、使用率が90%以上のものだけをリストアップするにはどうしたらいいですか?
- すべてのユーザーセッションから、どのくらいの割合ですぐにバウンドしたかを把握するにはどうしたらいいでしょうか?
アプリのエラーレートクエリで入れ子型集約を使ってパーセンテージデータなどを取得する例は、こちらのYouTube動画をご覧ください(約3分10秒)。
ネストした集計クエリの構造と句
すべてのNRQLクエリは、 SELECT
ステートメントまたはFROM
句で始まる必要があります。ネストされた集計クエリは、 SELECT
ステートメントとFROM
句の両方を使用し、それらを1つまたは複数の括弧内に含まれるクエリに適用します。
適切にフォーマットされた完全な入れ子の集約クエリは、以下のようになります。
SELECT function(attribute)FROM ( SELECT function(attribute) FROM dataType WHERE attribute TIMESERIES integer units)
クエリと句の動作について、他にもいくつかご紹介します。
- 入れ子になったクエリは2レベル以上になることもあります。
TIMESERIES
とFACET
はどちらもネストされたクエリの任意の部分に適用でき、すべてのレベルで同一である必要はありません。SINCE
、UNTIL
、およびCOMPARE WITH
句はクエリ全体に適用され、最も外側のレベルでのみ使用できます。
ネストされた集計クエリの例
ここでは、ネストしたクエリの例を紹介します。