menu
Is this helpful?

# SQL 쿼리

# SQL쿼리

주요 분석 모델을 사용하는 것뿐만 아니라, 별도로 SQL을 사용함으로써 일반적인 기능으로는 실현하기 어려운 고급 분석도 실행할 수 있습니다. 현 프로젝트 데이터를 쿼리할 수도 있습니다. SQL쿼리로 가치 있는 문제점을 발견했을 때는, 보고서 작성 후, 다른 보고서와 마찬가지로 데이터 대시보드에 설치할 수도 있습니다.

# 입력 상자에서 SQL 코드 편집

TE는 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쿼리를 사용하여 권한이 있는 모든 프로젝트의 데이터를 사용할 수 있습니다. 예를 들어, 프로젝트 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.userresult_cluster{project_id}

  • 과거 태그 테이블: ta.userresult_cluster{project_id}
  • 과거 환율: ta_dim.ta_exchange
  • 참조 테이블
  • 임시 테이블

쿼리 코드에서 다음 데이터를 사용해야 하는 경우, 사용 방법에 대해 사전에 당사 직원에게 문의하십시오.

  • 매일 0시에 유저의 일일 시리얼 테이블을 저장합니다. (당시 유저의 상태를 기록 및 저장)
  • 2차 개발 도구를 사용하여 커스텀 테이블을 임포트
  • Trino Connector를 사용하여 외부 데이터 소스를 연결

# 쿼리 결과를 표시하고 리포트로 저장

SQL쿼리 화면 오른쪽의 '계산' 버튼을 클릭하면, 해당 SQL 코드의 실행 결과가 표시되고 최대 1,000 행의 상세 데이터가 표시됩니다. 모든 데이터를 표시하려면, CSV 파일을 다운로드하십시오 (최대 100만 행의 데이터). 이 쿼리의 결과를 '임시 테이블'로 저장하고 후속 쿼리에서 사용할 수도 있습니다.

데이터의 상세 정보를 직접 표시하는 것뿐만 아니라, 시각화 모듈에서 제공하는 선 그래프나 원 그래프 등 다양한 그래프 유형을 통해 데이터를 시각화할 수도 있습니다. 해당 쿼리 코드와 시각화 설정을 리포트로 저장하고 다른 멤버와 공유할 수도 있습니다.

주의:

다른 분석 리포트와 마찬가지로 다른 멤버가 SQL 리포트에서 볼 수 있는 데이터도 데이터 권한의 영향을 받으므로 주의하십시오. 예를 들어, iOS 채널 권한만 가진 멤버가 보는 결과에는 iOS 채널 유저의 행동 데이터만 포함됩니다.

보충:

데이터 권한 외에도, SQL 리포트의 이벤트 권한도 설정할 수 있습니다. 지정된 이벤트를 사용할 권한이 멤버에게 없는 경우, 리포트에는 데이터가 표시되지 않습니다 (그림 1).쿼리 코드로 다른 프로젝트의 데이터를 사용하더라도, 리포트는 해당 프로젝트 아래에만 저장됩니다. 이 점에 유의하십시오. 해당 프로젝트에 속하지 않는 테이블이 쿼리 코드에 표시되는 경우, 뷰어가 쿼리와 관련된 모든 프로젝트 권한을 가지고 있는지 확인해야 합니다 (그림 2).

SQL 리포트의 쿼리 코드는 복잡하기 때문에, 표시 캐시를 설정할 수 있습니다 (그림 3). 계산이 완료되면 데이터 결과가 캐시되고, 같은 리포트가 쿼리되면 캐시된 데이터 결과가 직접 읽혀집니다. 다음 번에는 다시 계산하지 않고 클러스터 리소스를 절약할 수 있습니다.

데이터 대시보드의 정기 업데이트는 설정 내용에 관계없이 모든 SQL 리포트에 대해 유효합니다. 대시보드가 정기적으로 업데이트될 때 계산됩니다. 비 T+1 리포트의 캐시를 24시간으로 설정하고, 대시보드가 하루에 한 번만 계산하도록 할 수 있습니다.

쿼리 코드의 실행 시간이 300초를 초과하는 경우, 리포트에 대시보드 캐시를 설정해야 합니다. 단, 리포트를 수동으로 업데이트할 수는 없습니다 (대시보드의 정기 업데이트는 계속 유효합니다). 또한, 이 리포트의 탐색 모듈에도 사용할 수 없게 되므로, 쿼리 코드를 조정하거나 쿼리 데이터 범위를 줄여 보십시오.

# 권한 설명

Root 관리자 분석가 멤버
SQL쿼리

권한 설명:

◎ 부여되어 있음

○ 기본적으로 설정되어 있지만, 제외 가능

△ 기본적으로 설정되어 있지 않지만, 부여 가능

× 부여되어 있지 않음

※분석가 역할에는 'SQL쿼리를 이용' 권한이 기본적으로 설정되어 있지 않습니다. 이용할 필요가 있는 경우, 권한의 새로운 생성 기능을 사용하여 SQL 이용 권한을 부여(커스터마이즈)해 주세요.