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