New Relic에 저장된 대부분의 데이터는 다른 데이터( Transaction
및 TransactionError
, PageView
및 PageAction
, Log
및 인프라 이벤트 등)와 관련이 있습니다. 이제 최종적으로 분석을 수행하고 하위 쿼리 조인을 사용하여 이러한 이벤트 간의 상관 관계를 계산할 수 있습니다.
하위 쿼리 조인 기본 사항
하위 쿼리 는 다른 쿼리 안에 중첩된 쿼리입니다. 하위 쿼리 조인을 사용하면 하위 쿼리의 결과를 키를 기반으로 하는 외부 쿼리의 결과와 결합하여 데이터 집합 전체에서 분석 및 보강이 가능합니다.
하위 쿼리 조인 예
트랜잭션 데이터와 인프라 데이터를 조인하는 다음 예를 고려하십시오.
이 예에는 인프라 컨테이너의 평균 CPU 비율(ProcessSample
)과 컨테이너별 앱 트랜잭션의 평균 기간이라는 두 가지 데이터 세트가 있습니다. 종종 서로 다른 출처의 데이터가 서로 연관됩니다. 이 경우 다음 하위 쿼리 조인을 사용하여 컨테이너의 높은 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 사용량에 따라 평균 트랜잭션 기간이 더 긴 컨테이너를 볼 수 있고 이상값을 조사하여 수정해야 할 버그나 최적화가 있는지 확인할 수 있습니다.
하위 쿼리 조인을 작성하는 방법
하위 쿼리 조인에는 세 가지 구성 요소, 즉 두 개의 데이터 세트와 이 둘을 함께 연결하는 기본 키가 필요합니다.
FROM Event [INNER|LEFT] JOIN (subquery) ON [key =] key SELECT ...
구문에는 몇 가지 간단한 규칙이 있습니다.
- JOIN 절은 항상 FROM 절 바로 뒤에 와야 합니다.
- JOIN에는 조인 유형이 접두사로 붙을 수 있습니다. INNER 또는 LEFT는 선택 사항이며 생략하면 기본값은 INNER입니다.
- 하위 쿼리를 포함하는 괄호는 JOIN 절 바로 뒤에 와야 합니다.
- ON 절은 하위 쿼리 바로 다음에 와야 하며 두 가지 형식이 있습니다(자세한 내용은 아래 참조).
제한 사항
- 조인된 하위 쿼리는 계속해서 기본
LIMIT
10과 최대LIMIT
2000을 가집니다. 외부 쿼리의LIMIT
는 내부 쿼리에 영향을 미치지 않습니다. - 조인된 하위 쿼리에서
TIMESERIES
사용은 지원되지 않습니다. 외부 쿼리가TIMESERIES
사용하는 경우 조인된 하위 쿼리는 전체 쿼리 시간 범위에 대해 단일 결과를 제공한다는 점에 유의하세요. - 조인된 하위 쿼리에서
COMPARE WITH
사용은 지원되지 않습니다. 외부 쿼리가COMPARE WITH
를 사용하는 경우 조인된 하위 쿼리는 쿼리 기본 시간 범위를 기반으로 단일 결과를 제공하고 시간 범위와 비교하여 외부 쿼리에 대해 별도의 값을 제공하지 않는다는 점에 유의하십시오. - 모든 하위 쿼리와 마찬가지로 조인된 하위 쿼리는 경고 조건에서 사용할 수 없습니다.
- SELECT *는 상위 쿼리에서 지원되지만 조인된 하위 쿼리에서는 지원되지 않습니다.
- 조인의 카디널리티는 1:100으로 제한되며, 이는 단일 조인 키가 하위 쿼리 결과에서 100개 이상의 행에 매핑될 수 없음을 의미합니다.
- ON 절은 같음 조건만 지원합니다.
- JOIN 키는 메트릭 값과 같은 복잡한 속성일 수 없습니다.
- JOIN 조건에서 속성 유형을 강제하지 않습니다. JOIN의 ON 조건의 왼쪽은 ON 조건의 오른쪽과 동일한 유형이어야 합니다.
- 측정항목 와일드카드는 JOIN의 ON 조건에서 지원되지 않습니다.
- 하위 쿼리는 Metric 행 방식 쿼리일 수 없습니다.
- JOIN의 ON 조건 오른쪽은 쿼리에 의해 프로젝션된 식별자여야 합니다. 함수나 수학 연산을 사용할 수 없습니다.
- 조인된 하위 쿼리는
uniques()
결과를 예상할 수 없습니다.
하위 쿼리 조인 예
다음은 몇 가지 하위 쿼리 조인의 예입니다.