본문으로 건너뛰기

SQL 쿼리

최근 업데이트 2026. 06. 25.

앞에서 소개한 분석 모델 외에도 SQL 문으로 분석 모델에서는 구현하기 어려운 고급 분석을 수행하고, 현재 클러스터에 있는 모든 프로젝트의 데이터를 자유롭게 조회할 수 있습니다. SQL IDE에서 가치 있는 내용을 발견했다면 리포트로 저장하여 다른 모델 리포트와 마찬가지로 대시보드에 표시할 수도 있습니다.

SQL 입력창에서 쿼리 작성​

AE 시스템은 Trino 쿼리 엔진을 사용하므로 표준 SQL로 쿼리를 작성할 수 있습니다. 가장 간단한 예시는 다음과 같습니다:

SELECT
"$part_date"
, count(DISTINCT "#user_id")
FROM
ta.v_event_1
WHERE ("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login')
GROUP BY "$part_date"
ORDER BY "$part_date" ASC

작성할 때는 다음 사항에 유의하십시오:

  • 필드 이름은 큰따옴표 " "로 감싸십시오. 생략할 수도 있지만, 조회하는 필드 이름에 특수 기호(예: $, #)가 있으면 반드시 큰따옴표를 사용해야 합니다
  • 문자열은 반드시 작은따옴표 ' '로 감싸야 합니다
  • SELECT 문과 WITH 절을 사용할 수 있습니다

쿼리를 작성하는 동안 테이블 구조의 정보를 참고하여 테이블 이름이나 테이블 내 필드 이름을 복사할 수 있으며, 테이블 해석을 사용하면 모든 필드를 포함한 쿼리를 입력창에 자동으로 삽입할 수 있습니다.

작성 중인 내용이 사라지지 않도록 현재 SQL 입력창의 내용을 북마크로 저장할 수도 있습니다. 저장한 북마크는 쿼리 북마크에서 찾을 수 있습니다.

쿼리에서 동적 기간을 사용하거나 다른 멤버가 쿼리의 일부 내용을 동적으로 조정할 수 있게 하려면 동적 파라미터를 추가하면 됩니다.

다른 분석 모델과 달리 SQL IDE에서는 권한이 있는 모든 프로젝트의 데이터를 사용할 수 있습니다. 예를 들어 프로젝트 1과 프로젝트 2의 DAU를 동시에 조회할 수 있습니다:

SELECT
a."$part_date"
, "Project_1_DAU"
, "Project_2_DAU"
FROM
((
SELECT
"$part_date"
, count(DISTINCT "#user_id") "Project_1_DAU"
FROM
ta.v_event_1
WHERE (("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login'))
GROUP BY "$part_date"
) a
INNER JOIN (
SELECT
"$part_date"
, count(DISTINCT "#user_id") "Project_2_DAU"
FROM
ta.v_event_2
WHERE (("$part_date" BETWEEN '2023-01-01' AND '2023-01-07') AND ("$part_event" = 'login'))
GROUP BY "$part_date"
) b ON (a."$part_date" = b."$part_date"))
ORDER BY a."$part_date" ASC

이벤트 테이블과 유저 테이블 외에도 쿼리에서 다음 데이터를 사용할 수 있습니다:

  • 태그 코호트 테이블: ta.user_result_cluster_{project_id}
  • 히스토리 태그 테이블: ta.history_tag_{project_id}
  • 히스토리 환율 테이블: ta_dim.ta_exchange
  • 차원 테이블
  • 임시 테이블

쿼리에서 다음 데이터를 사용해야 한다면 담당 고객 성공 매니저에게 문의하여 자세한 내용을 확인하십시오:

  • 유저 일별 미러 테이블: 매일 서버 시간대 기준 0시에 AE 시스템이 그 시점의 유저 상태를 백업합니다. 기본적으로 최근 180일간의 유저 테이블 미러를 보관하며, SQL IDE에서 사용할 수 있습니다
  • 2차 개발 도구로 커스텀 테이블 가져오기
  • Trino Connectors를 이용한 외부 데이터 소스 연결

조회 결과 확인 및 리포트로 저장​

계산 버튼을 클릭하면 이번 SQL 문의 실행 결과를 확인할 수 있습니다. 상세 데이터는 최대 20000행까지 표시되며, 전체 데이터를 보려면 CSV 파일을 다운로드하십시오. 최대 100만 행까지 지원합니다. 이번 조회 결과를 임시 테이블로 저장할 수도 있으며, 임시 테이블은 이후 쿼리에서 사용할 수 있습니다.

상세 데이터를 직접 보는 것 외에도 시각화 모듈에서 제공하는 꺾은선 차트, 원형 차트 등 다양한 차트 타입으로 데이터를 표시할 수 있습니다. 또한 현재 쿼리와 시각화 설정을 리포트로 저장하여 다른 멤버와 공유할 수 있습니다.

다른 모델 리포트와 마찬가지로 SQL 리포트에서 멤버별로 볼 수 있는 데이터도 데이터 권한의 영향을 받습니다. 예를 들어 iOS 채널 권한만 있는 멤버에게는 iOS 채널 유저의 행동 데이터만 결과에 표시됩니다.

데이터 권한 외에도 SQL 리포트에 이벤트 권한을 설정할 수 있습니다. 멤버에게 선택한 이벤트의 사용 권한이 없으면 해당 리포트에는 데이터가 표시되지 않습니다(그림 1).

쿼리에서 다른 프로젝트의 데이터를 사용했는지와 관계없이 리포트는 현재 프로젝트에만 저장된다는 점에 유의하십시오. 쿼리에 현재 프로젝트에 속하지 않는 테이블이 있다면, 조회자가 쿼리와 관련된 모든 프로젝트의 권한을 갖추어야 하는지도 확인해야 합니다(그림 2).

SQL 리포트의 쿼리는 대개 복잡하므로 캐시를 설정할 수 있습니다(그림 3). 계산이 끝나면 데이터 결과가 캐시되며, 다음에 같은 리포트를 조회할 때 다시 계산하지 않고 캐시된 결과를 바로 읽어 클러스터 리소스를 절약합니다.

대시보드 예약 업데이트는 모든 SQL 리포트에 적용되며, 어떻게 설정하든 대시보드 예약 업데이트 시점에 계산됩니다. T+1이 아닌 리포트의 캐시를 24시간으로 설정하고 대시보드 예약 업데이트를 켜 두면 하루에 한 번만 계산하면 됩니다.

쿼리 실행 시간이 300초를 넘으면 해당 리포트에는 반드시 대시보드 캐시를 설정해야 하며, 리포트를 수동으로 새로고침할 수 없습니다(대시보드 예약 새로고침은 계속 적용됩니다). 쿼리를 최적화하거나 조회 데이터 범위를 좁혀 조회 속도를 높일 수 있습니다.

이 문서가 도움이 되었나요?