뉴렐릭에 저장된 대부분의 데이터는 Transaction
및 TransactionError
, PageView
및 PageAction
, Log
및 인프라 이벤트 등과 같은 다른 데이터와 관련이 있습니다. 하위 쿼리 조인을 사용하여 이러한 이벤트 간의 상관 관계를 분석하고 계산할 수 있습니다.
하위 쿼리 조인을 작성하는 방법
하위 쿼리 는 다른 쿼리 안에 중첩된 쿼리입니다. 하위 쿼리 조인을 사용하면 하위 쿼리의 결과를 키를 기반으로 하는 외부 쿼리의 결과와 결합하여 데이터 집합 전체에서 분석 및 보강이 가능합니다.
하위 쿼리 조인에는 세 가지 구성 요소, 즉 두 개의 데이터 세트와 이 둘을 함께 연결하는 기본 키가 필요합니다.
FROM Event [INNER|LEFT] JOIN (subquery) ON [key =] key SELECT ...
하위 쿼리 조인에는 구문에 대한 간단한 규칙이 포함되어 있습니다.
JOIN
절은 항상FROM
절 바로 뒤에 와야 합니다.- 조인 유형을
JOIN
앞에 붙일 수 있습니다.INNER
또는LEFT
는 선택사항이며 생략되면 기본값은INNER
입니다. - 하위 쿼리가 포함된 괄호는
JOIN
절 바로 뒤에 와야 합니다. ON
절은 하위 쿼리 바로 뒤에 있어야 하며 두 가지 형식을 갖습니다(자세한 내용은 아래 참조).
하나의 쿼리에 여러 개의 JOIN
절이 있을 수도 있습니다. 예를 들어 이 쿼리는 하위 쿼리 내에서 두 개의 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
아래 이미지에는 2개의 데이터 세트, 즉 디스플레이 컨테이너(ProcessSample
)의 평균 CPU 비율과 컨트롤러별 앱의 평균 기간이 포함되어 있습니다.
종종 다양한 소스의 데이터가 상호 연관되어 있습니다. 이 경우 다음 하위 쿼리 조인을 사용하여 컨테이너의 높은 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으로 제한되며, 이는 단일 조인 키가 하위 쿼리 결과에서 100개 이상의 행에 매핑될 수 없음을 의미합니다.
ON
절은 동등 조건만 지원합니다.JOIN
키는 지표 값과 같은 복잡한 속성일 수 없습니다.JOIN
조건에서는 속성 유형을 강제로 적용하지 않습니다.JOIN
의ON
조건의 왼쪽은ON
조건의 오른쪽과 동일한 유형이어야 합니다.- 지표 와일드카드는
JOIN
의ON
조건에서 지원되지 않습니다. - 하위 쿼리는 메트릭 행별 쿼리일 수 없습니다.
JOIN
ON 조건의 오른쪽은 쿼리에 의해 투영된 식별자여야 합니다. 함수나 수학 연산을 사용할 수 없습니다.- 조인된 하위 쿼리는
uniques()
결과를 예상할 수 없습니다.
하위 쿼리 조인 예
다음은 몇 가지 하위 쿼리 조인의 예입니다.