본문으로 건너뛰기
버전: v0.1.0

SQL 쿼리 가이드

D.Hub에서는 데이터셋 탐색 및 파이프라인의 SQL 변환 노드에서 표준 SQL을 사용할 수 있습니다.

SQL 변환 노드

파이프라인 내에서 데이터를 필터링하거나 집계할 때 사용합니다.

구조

  • 테이블 이름: 연결된 입력 데이터셋은 기본적으로 input이라는 테이블 이름으로 참조되거나, 사용자가 지정한 별칭을 사용합니다.
  • 결과: 쿼리의 실행 결과(SELECT 문의 결과)가 다음 노드로 전달됩니다.

예제

-- 입력 데이터에서 'status'가 'active'인 항목만 필터링
SELECT
id,
name,
created_at
FROM
input
WHERE
status = 'active'

데이터셋 탐색 (SQL 스크래치 패드)

데이터셋 상세 페이지의 '데이터' 탭에서 임시 쿼리를 실행하여 데이터를 확인할 수 있습니다.

  • 제약 사항: SELECT 쿼리만 허용됩니다.
  • 테이블: 현재 데이터셋의 테이블 이름을 사용해야 합니다.
SELECT * FROM my_dataset_table LIMIT 100

유용한 SQL 함수

D.Hub의 분석 엔진에서 사용할 수 있는 주요 함수입니다. 대시보드 쿼리 모드, SQL 노드, 데이터셋 탐색에서 모두 사용 가능합니다.

날짜/시간 함수

함수설명예시
today()오늘 날짜WHERE date = today()
now()현재 시각WHERE created_at > now() - INTERVAL 1 HOUR
toStartOfMonth(date)월 시작일GROUP BY toStartOfMonth(date)
toStartOfWeek(date)주 시작일GROUP BY toStartOfWeek(date)
toStartOfHour(datetime)시간 시작GROUP BY toStartOfHour(ts)
toYYYYMM(date)YYYYMM 정수 변환SELECT toYYYYMM(date)
dateDiff('day', d1, d2)날짜 차이dateDiff('day', start, end)
formatDateTime(dt, fmt)날짜 포맷팅formatDateTime(dt, '%Y-%m-%d')

집계 함수

함수설명예시
count()행 수COUNT(*)
sum(col)합계SUM(amount)
avg(col)평균AVG(price)
min(col) / max(col)최소/최대MIN(temperature)
uniq(col)근사 고유값 수uniq(user_id)
uniqExact(col)정확한 고유값 수uniqExact(session_id)
quantile(0.95)(col)분위수quantile(0.95)(latency)
groupArray(col)그룹별 배열 수집groupArray(tag)
argMax(col, val)val 최대일 때의 colargMax(name, score)

문자열 함수

함수설명예시
lower(s) / upper(s)소/대문자 변환lower(name)
trim(s)양쪽 공백 제거trim(input_str)
substring(s, offset, len)부분 문자열substring(code, 1, 3)
concat(s1, s2)문자열 연결concat(first, ' ', last)
like(s, pattern)패턴 매칭WHERE name LIKE '%Seoul%'
match(s, regexp)정규식 매칭WHERE match(url, '^/api/')
splitByChar(sep, s)문자로 분할splitByChar(',', tags)
replaceAll(s, from, to)문자열 치환replaceAll(text, '\n', ' ')

배열 함수

함수설명예시
length(arr)배열 길이length(tags)
arrayJoin(arr)배열 → 행 전개SELECT arrayJoin(items)
has(arr, elem)포함 여부WHERE has(tags, 'urgent')
arrayMap(f, arr)배열 매핑arrayMap(x -> x * 2, values)
arrayFilter(f, arr)배열 필터arrayFilter(x -> x > 0, values)

JSON 함수

함수설명예시
JSONExtractString(json, key)문자열 추출JSONExtractString(data, 'name')
JSONExtractInt(json, key)정수 추출JSONExtractInt(data, 'count')
JSONExtractFloat(json, key)실수 추출JSONExtractFloat(data, 'score')
JSONExtractBool(json, key)불리언 추출JSONExtractBool(data, 'active')
JSONExtractArrayRaw(json, key)배열 추출JSONExtractArrayRaw(data, 'items')

성능 최적화 팁

D.Hub의 분석 엔진은 컬럼 지향 OLAP 데이터베이스로, 대량 데이터의 집계 쿼리에 최적화되어 있습니다.

  • 필요한 컬럼만 SELECT: SELECT * 대신 필요한 컬럼을 명시하면 쿼리 성능이 크게 향상됩니다.
  • LIMIT 사용: 탐색 목적의 쿼리에는 항상 LIMIT을 추가하세요.
  • WHERE 절 활용: 필터 조건을 최대한 앞에 두어 불필요한 데이터 스캔을 줄이세요.
  • 적절한 집계 함수 선택: 정확한 고유값이 불필요하면 uniqExact 대신 uniq를 사용하세요.