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を使用する場合、結合されたサブクエリはクエリの全期間に単一の結果を提供することに注意してください。 - 結合サブクエリでは、
COMPARE WITHの使用はサポートされていません。外部クエリでCOMPARE WITHを使用する場合、結合されたサブクエリはクエリの基本タイムスパンに基づいて単一の結果を提供し、タイムスパンと比較した外部クエリの個別の値を提供しないことに注意してください。 - すべてのサブクエリと同様に、結合されたサブクエリはアラート条件では使用できません。
SELECT *は親クエリではサポートされていますが、結合されたサブクエリではサポートされていません。- 結合のカーディナリティは1:100に制限されています。つまり、1つの結合キーはサブクエリ結果の100行以上にマップできません。
ON句は等価条件のみをサポートします。JOINキーは、メトリクス値のような複雑な属性にすることはできません。JOIN条件では属性タイプの強制変換は行われません。JOINのON条件の左側は、ON条件の右側と同じタイプである必要があります。- メトリクスワイルドカードは、
JOINのON条件ではサポートされていません - サブクエリをメトリクスの行単位のクエリにすることはできません。
JOINのON条件の右側は、クエリによって投影された識別子である必要があります。関数や数学演算は使用できません。- 結合されたサブクエリは
uniques()結果を投影できません。
サブクエリ結合の例
以下にサブクエリ結合の例を示します。



