menu
Is this helpful?

# 가상 속성 사용 사례

가상 속성이란, SQL 코드를 사용하여 데이터베이스에 저장된 속성 필드에 대해 2차 계산을 실행함으로써 생성되는 속성을 말합니다. 가상 속성의 SQL 코드는 trino 구문을 사용합니다. 트리노 문서 (opens new window)에 접속하여, trino의 구문과 함수 사용 방법을 얻을 수 있습니다.

사례 1: 시간 차이 계산 유저의 라이프사이클 일수는 일반적으로 이벤트 속성으로 수집되지 않습니다.

date_diff(unit, timestamp1, timestamp2) 함수를 사용하여 유저 속성 "가입 시간"과 이벤트 속성 "이벤트 발생 시간" 사이의 일수를 계산하고, 가상 유저 속성 "유저 라이프사이클 일수"를 생성할 수 있습니다.

예: date_diff('day', date("register_time"), date("#event_time"))

사례 2: 데이터 유형 변환 송신된 속성 타입이 예상과 일치하지 않을 때, cast(value AS type) 함수를 사용하여 속성의 타입을 변환할 수 있습니다. 속성 값을 원하는 타입으로 캐스트할 수 없는 경우, 새로운 속성 값은 비어 있게 됩니다.

예: cast(old_prop_string as int)

사례 3: 타임스탬프 변환 가입 시간 등의 커스텀 속성을 숫자 타임스탬프로 업로드할 경우, from_unixtime(unixtime) 함수를 사용하여 시간 형식으로 변환할 수 있어 시스템에서 필터링이나 그룹화 같은 작업을 수행할 수 있습니다.

예: from_unixtime("register_time")

사례 4: 문자열 자르기 송신된 내용이 여러 정보의 조합일 경우, cast(substring("get_reward", 5, 4) as int) 등의 식으로 문자열의 특정 부분을 잘라내어 새로운 속성을 생성할 수 있습니다. substring(string, start, length) 함수를 사용하여 시작점부터 길이만큼의 문자열 조각을 추출하고, cast(value AS type)로 숫자 타입으로 변환하여 분석에 활용할 수 있습니다.

사례 5: 공통 중복 제거 게임 데이터 분석 시나리오에서는 아카운트 ID나 서버 ID와 같은 공통 이벤트 속성이 자주 기록됩니다. 아카운트 ID와 서버 ID를 결합하여 중복을 제거하고 싶은 경우, concat(server_id, '@', account_id) 규칙으로 가상 속성을 생성할 수 있습니다. 여기서 concat(string1, ..., stringN) 함수를 사용하여 여러 문자열 타입 속성을 통합할 수 있습니다.

사례 6: 조건 판단

게임 테스트 단계에서 데이터를 초기화할 수 있습니다. 데이터를 초기화하기 전후로 유저 ID는 같지만, 이벤트 데이터는 서로 독립적이며 상속 관계가 없고, 서버별로 초기화 시간이 다릅니다. 유저의 이벤트가 초기화 전인지 후인지를 하나의 속성으로 구분하고 싶은 경우, 다음과 같은 가상 속성을 생성할 수 있습니다:

case 
when "serverid" = 1 and "#event_time" > cast('2020-11-15 10:30:00.000' as timestamp) then '클리어 후' 
when "serverid" = 2 and "#event_time" > cast('2020-11-22 10:30:00.000' as timestamp) then '클리어 후' 
else '클리어 전' 
end

사례 7: 상수 IF 수를 사용하여 상수인 가상 속성을 생성할 수 있습니다. 예를 들어, 리텐션 분석 모델에서 복귀 유저 수의 누적 합계를 동시에 표시하려는 경우, 상수 1로 가상 속성을 생성하고, 이 속성에 대해 집계 계산을 수행할 수 있습니다. if("#event_time" is not null, 1, 1). 여기서 "#event_time"은 일반적으로 null이 아닌 시스템 필드로 설정됩니다.