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()結果を投影できません。
サブクエリ結合の例
サブクエリ結合の例をいくつか示します。



