보물 데이터의 JSSDK에서 수집한 로그에서 사용자 세그먼트를 만드는 방법
11414 단어 광고액세스 분석TreasureData
1, 데이터 준비
2, 세그먼트 생성
만들 세그먼트를 정의해 봅니다.
세그먼트 이름
의미
Weekly_Over5_Access
1주일 이내에 5회 방문한 사용자
Hour_Over5_Access
시간별로 5회 이상 액세스한 사용자
Weekday_Over5_Access
요일별로 5회 액세스한 사용자
Conversion_User
일정 기간 동안 전환 페이지를 밟은 사람
Smartphone_User
iOS 또는 Android 사용자
Iphone_User
iPhone을 사용하는 사용자
Windows_User
Windows를 사용하는 사용자
위의 세그먼트는 다른 세그먼트와 겹칠 수도 있습니다.
다음은 SQL에서 위에서 정의한 세그먼트를 SQL로 표현합니다.
그럼 하나 하나 봅니다.
액세스 빈도계(Frequency)
-- Presto
SELECT
a.td_client_id as td_client_id
,a.td_os as td_os
,'Weekly_Over5_Accesses' as segment_name
FROM
(
SELECT
td_client_id
,td_os
,count(1) as cnt
FROM
access
WHERE
TD_TIME_RANGE(time,'2015-05-24 00:00:00','2015-05-31 00:00:00','JST')
GROUP BY td_client_id,td_os
HAVING count(1) >= 5
) as a
-- Presto
SELECT
a.hour as hour
,a.td_client_id as td_client_id
,a.td_os as td_os
,'Hour_Over5_Access' as segment_name
FROM
(
SELECT
td_time_format(time,'HH') as hour
,td_client_id
,td_os
,count(1) as cnt
FROM
access
WHERE
TD_TIME_RANGE(time,'2015-04-01 00:00:00','2015-06-01 00:00:00','JST')
GROUP BY
td_time_format(time,'HH')
,td_client_id
,td_os
HAVING count(1) >= 5
) as a
WHERE
a.hour BETWEEN '20' AND '23'
-- Hive
SELECT
a.weekday as weekday
,a.td_client_id as td_client_id
,a.td_os as td_os
,'Weekday_Over5_Access' as segment_name
FROM
(
SELECT
weekofyear(td_time_format(time,'yyyy-MM-dd')) as weekday
,td_client_id
,td_os
,count(1) as cnt
FROM
access
WHERE
TD_TIME_RANGE(time,'2015-04-01 00:00:00','2015-06-01 00:00:00','JST')
GROUP BY
weekofyear(td_time_format(time,'yyyy-MM-dd'))
,td_client_id,td_os
HAVING count(1) >= 5
) as a
이번 세그먼트는 하나의 조건이지만,
SQL로 표현이 가능하면 곱셈도
가능하다.
전환 시스템
* 일정 기간 전환한 사용자: Conversion_User
전환 페이지: '/201506FreeUserSeminar_marketo-summit-2015-thankyou.html'
SELECT
td_client_id,
td_os,
COUNT(1) AS cnt
FROM
access
WHERE
TD_TIME_RANGE(time,'2015-04-01 00:00:00','2015-06-01 00:00:00','JST')
AND td_path = '/201506FreeUserSeminar_marketo-summit-2015-thankyou.html'
GROUP BY
td_client_id,
td_os
ORDER BY
cnt DESC
경력별
WHERE td_os in ('iOS','Android')
td_os in ('iOS')
td_os like '%Windows%'
동일한 사용자가 여러 단말기를 가지고 있는 경우의 집계 방법
SELECT
td_ip
,count(distinct(td_client_id)) as cnt
FROM
access
WHERE
TD_TIME_RANGE(time,'2015-04-01 00:00:00','2015-06-01 00:00:00','JST')
GROUP BY
td_ip
HAVING
count(distinct(td_client_id)) > 1
* 같은 IP로 다른 ID의 경우는 집약해도 좋은 것인가?
여기의 논의에 관해서는, 동일한 wifi의 IP를 이용하고 있기 때문에
같은 사람의 단말로 판단하여 집약하고 있는 예이다.
앞으로는 세그먼트 작성을 SQL에서의 <응용편>과 <확장편>을 정리합니다.
Reference
이 문제에 관하여(보물 데이터의 JSSDK에서 수집한 로그에서 사용자 세그먼트를 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/itochu0523/items/4113e35c587ab40c384f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)