New Relic 内に保存されているデータの多くは、他のデータ ( Transaction
とTransactionError
、 PageView
とPageAction
、 Log
、インフラストラクチャ イベントなど) に関連しています。 サブクエリ結合を使用して、分析を実行し、これらのイベント間の相関関係を計算できます。
サブクエリ結合の書き方
サブクエリは 、別のクエリ内にネストされたクエリです。サブクエリ結合を使用すると、キーに基づいてサブクエリの結果とその外部クエリの結果を組み合わせることができ、データセット全体の分析と強化が可能になります。
サブクエリ結合には、2 つのデータセットと、2 つをリンクする主キーという 3 つのコンポーネントが必要です。
FROM Event [INNER|LEFT] JOIN (subquery) ON [key =] key SELECT ...
サブクエリ結合には、構文に対する簡単なルールが含まれています。
JOIN
句は常にFROM
句の直後に続く必要があります。JOIN
先頭に結合タイプを付けることができます。INNER
またはLEFT
はオプションで、省略した場合のデフォルトはINNER
です。- サブクエリを含むかっこは、
JOIN
句の直後に置く必要があります。 ON
句はサブクエリの直後に続く必要があり、2 つの形式があります (詳細は以下を参照)。
1 つのクエリに複数のJOIN
句を含めることもできます。 たとえば、このクエリはサブクエリ内で 2 つのJOIN
を使用します。
FROM JavaScriptError JOIN ( FROM PageAction JOIN ( FROM PageView SELECT count(*) FACET session as pageViewSession, city LIMIT MAX ) ON session = pageViewSession SELECT count(*) FACET city, currentUrl, session as pageActionSession ) ON session = pageActionSessionSELECT count(*) FACET city, currentUrl, session, errorClass
以下の画像には、インフラストラクチャ コンテナ ( ProcessSample
) の平均 CPU パーセンテージとコンテナによるアプリの平均継続時間の 2 つのデータセットが含まれています。
多くの場合、異なるソースからのデータは相互に関連付けられます。 この場合、次のサブクエリ結合を使用して、コンテナーの CPU 使用率の上昇がトランザクションの速度低下の原因となっているかどうかを判断できます。
FROM Transaction JOIN (FROM ProcessSample SELECT average(cpuPercent) AS cpu FACET containerId LIMIT MAX) ON containerIdSELECT average(duration)/latest(cpu) FACET containerId, containerName
このクエリを使用すると、CPU 使用率を考慮して平均トランザクション時間が長いコンテナーを確認し、異常値を調査して修正すべきバグや最適化が必要かどうかを確認できます。
サブクエリ結合の制限事項
サブクエリ結合には次の制限があります。
- 結合されたサブクエリのデフォルトの
LIMIT
は引き続き 10 で、最大LIMIT
は 5,000 です。 外側のクエリのLIMIT
内側のクエリに影響を与えないことに注意してください。 - 結合サブクエリでの
TIMESERIES
の使用はサポートされていません。外側のクエリでTIMESERIES
を使用する場合、結合されたサブクエリはクエリのタイムスパン全体にわたって 1 つの結果を提供することに注意してください。 - 結合サブクエリでの
COMPARE WITH
の使用はサポートされていません。外側のクエリでCOMPARE WITH
を使用する場合、結合されたサブクエリはクエリの基本タイムスパンに基づいて単一の結果を提供し、タイムスパンと比較する外側のクエリに別の値を提供しないことに注意してください。 - すべてのサブクエリと同様に、結合されたサブクエリはアラート条件では使用できません。
SELECT
* は親クエリではサポートされていますが、結合されたサブクエリではサポートされていません。- 結合のカーディナリティは 1:100 に制限されています。つまり、1 つの結合キーはサブクエリ結果の 100 を超える行にマップできません。
ON
句は等価条件のみをサポートします。JOIN
キーは、メトリクス値のような複雑な属性にすることはできません。JOIN
条件では属性タイプの強制は行われません。JOIN
のON
条件の左側は、ON
条件の右側と同じ型である必要があります。- メトリクス ワイルドカードは、
JOIN
のON
条件ではサポートされていません - サブクエリをメトリクスの行単位のクエリにすることはできません。
JOIN
の ON 条件の右側は、クエリによって投影された識別子である必要があります。 関数や算術演算は使用できません。- 結合されたサブクエリは
uniques()
結果を投影できません。
サブクエリ結合の例
サブクエリ結合の例をいくつか示します。