# 동적 매개변수 사용 설명
동적 매개변수는 SQL 코드의 일부 내용을 동적으로 조정하는 것을 지원합니다. 실제 계산 중에, 동적 매개변수의 값이 쿼리 코드에 포함되어 사용되며, 사용된 변수 ${매개변수 타입: 매개변수명}
이 대체됩니다. 리포트를 저장할 때, 매개변수는 현재의 동적 매개변수 값이 기본값으로 저장됩니다.
동적 매개변수를 사용하여, 여러 번 사용되는 복잡한 SQL 코드를 관리할 수 있습니다. 또한, 동적 매개변수를 사용하여 보고서의 조회자가 특정 범위 내에서 쿼리 코드를 변경할 수 있도록 할 수도 있습니다.
# 가변 콘텐츠
가변 콘텐츠의 동적 매개변수는 특정 시간 또는 커스텀 입력 값의 선택을 지원하며, 계산 중에 직접 대체할 수 있습니다.
예를 들어, TOP N을 코인의 양으로 랭킹할 경우, 가변 콘텐츠에 N을 나타낼 수 있으며, 이용 멤버는 여러 리포트를 저장하지 않고도 필요에 따라 상위 10, 상위 100, 또는 상위 1000명의 유저의 상세 정보를 추출할 수 있습니다.
SELECT * FROM
ta.v_event_7 where "$part_date" BETWEEN '2024-01-29' AND '2024-02-04'
LIMIT ${Variable1}
WARNING
주의 데이터 보안을 위해, 원본 쿼리 코드에서 사용되지 않는 테이블은 가변 콘텐츠에 표시할 수 없습니다.
# 이벤트 시간
이벤트 시간의 동적 매개변수를 사용하여, 분석 기간 내의 이벤트 데이터를 신속하게 필터링할 수 있습니다.
예를 들어, SQL 리포트는 지난 7일간의 유저의 누적 결제 금액으로 랭킹을 매길 필요가 있습니다. 동적 매개변수수를 추가하고, 동적인 시간 범위를 선택할 수 있습니다. 쿼리 시, 당일을 기준으로 지난 7일간의 결제 이벤트를 계산합니다.
SELECT
"#user_id",
SUM(pay_amount) AS count_sum
FROM
ta.v_event_7
WHERE ${PartDate:date1}
GROUP BY "#user_id"
LIMIT 10
프로젝트에서 여러 시간대가(timezone) 활성화되어 있는 경우, 더욱 이벤트 시간 매개변수 '시간대 오프셋의 영향을 받음'을 선택할 수 있습니다. 시간대의 영향을 받는 동적 매개변수는 표시 시간대에 대한 이벤트 발생일의 오프셋을 기반으로 계산됩니다.("$part_date_with_timezone"
) "$part_date"
에 기반한 필터가 아니라, 다른 모델 로직과 일치합니다.
이 동적 매개변수는 현재 프로젝트의 이벤트 테이블에만 유효하며, SQL 리포트 내의 다른 프로젝트의 이벤트 테이블에는 영향을 주지 않는다는 점에 주의해야 합니다.
# 식(수치, 문자열, 시간)
수치, 문자열, 시간의 3가지 유형의 필드를 필터링할 때, 식의 동적 매개변수를 사용하여 유연하게 구성할 수 있습니다.
예를 들어, 유저 속성의 지불 금액이 숫자일 경우, 쿼리 코드에 숫자식을 삽입하면, 보고서 조회자는 지불 금액이 특정 범위 내이거나 특정 숫자를 초과하는 유저를 조건 추가 처리할 수 있습니다.
예를 들어, 유저 속성의 누적 결제 금액이 수치인 경우, 쿼리 코드에 수치 식을 삽입하면, 보고서 조회자가 특정 범위 내 또는 특정 수치를 초과하는 유저를 필터링할 수 있습니다.
SELECT * FROM
ta.v_user_7
WHERE "total_pay_amount" ${Number:number1}
LIMIT 10
# 선택 사항
동적 매개변수를 선택함으로써, 사전에 준비된 SQL 코드에 다른 옵션 이름을 설정할 수 있습니다. 조회자는 이름에 따라 선택하기만 하면 되며, 해당하는 SQL 코드가 동적 매개변수로 자동으로 대체됩니다.
예를 들어, 유저를 레벨 간격에 따라 유형으로 분류할 수 있습니다. 리포트 조회자는 유저의 상세 정보를 유형별로 빠르게 보고 싶어 합니다. 선택하기 쉽도록, 레벨 간격의 필터링 코드에 이름을 설정할 수 있습니다.
SELECT * FROM
ta.v_user_7
WHERE "current_level" ${Selector:selector2}
LIMIT 10