티스토리 뷰
MMP(AppsFlyer), GA4, Braze 데이터를 활용해 시각화할 때 반드시 고려해야할 사항(1)- Third Party 데이터 수집 자동화
알랭드보통 사람 2024. 7. 9. 16:05업무 시간을 데이터 수집과 데이터 전처리에 시간을 쓰는 마케터와 데이터 수집 자동화된 환경에서 성과 분석과 기획에 더 많은 시간을 쓰는 마케터 누가 더 많이 성장할까요?
당연히 성과 분석과 기획에 더 많은 시간을 쏟는 마케터가 장기적으로 성장성이 높을 겁니다.
이를 위해서 마케팅 데이터 파이프라인을 구축해서 분석화는 환경을 만들어야 합니다.
지금도 GA4, MMP(AppsFlyer), Braze를 사용하고 있는데 엑셀로 데이터 수집해서 가공하는 시간을 대부분을 사용하고 있다면.. 하루빨리 마케팅 데이터 수집 자동화하고 BI를 구축을 시도해 보세요.
관련 주제는 내용이 많아서 3개의 파트로 나눠서 글을 발행해보려 합니다.
- Third Party 데이터 수집 자동화
- 수집된 데이터 전처리하기
- 시각화하기
이번 편에서는 MMP(AppsFlyer), GA4, Braze 데이터 수집을 자동화시키는 프로세스를 소개해볼까 합니다.
Third Party 데이터 수집 자동화
마케팅 데이터를 적재하고 시각화까지의 프로세스를 이해하기 쉽게 도식화하면 아래와 같습니다.
(아래 예시에서 Github Action은 스크립트를 자동화할 수 있는 역할을 하는 Github 이 제공하는 완전관리형 CI/CD 툴입니다)

브레이즈 Currents 데이터 수집하기
브레이즈 currents 란 유저의 engagement 이벤트의 실시간 데이터 스트림입니다.
BI 및 분석할 수 있는 데이터를 제공해 주는 기능이다라고 이해하시면 됩니다. 단점은 가격이.. 비싸요
데이터 수집은 클릭 몇 번으로 쉽게 수집할 수 있습니다
브레이즈 어드민에서 아래처럼 어떤 데이터를 보낼지 선택해서 어디에 저장할지 S3, Cloud Storage, Azure Blob Storage 중 선택해서 적재를 시작합니다.(가이드 링크)

브레이즈 커런츠 데이터를 Amazon S3에 보낸다면 아래 이미지와 같이 이벤트별로 폴더가 분리되어 적재가 됩니다.
(참고로 브레이즈 Currents는 At-least-once delivery 정책으로 1시간 단위로 데이터를 적재합니다.
그래서 중복된 이벤트가 가끔 스토리지 버킷에 저장될 수 있습니다. 그래서 DW에 적재할 때 고유 식별자 필드(id)를 사용해 이벤트 중복을 제거할 수 있습니다.)

이 많은 데이터중에서 필요한 이벤트 데이터들을 골라서 합쳐야 되는데 여기서 문제가 있습니다.
각 파일에는 이벤트를 구분하는 필드가 없습니다. 그래서 파일별로 어떤 이벤트의 파일인지 지정해줘야 합니다.
아래와 같이 Avro 파일 명을 확인하여 event_type 필드의 key 값을 추가 필요합니다
예를 들어 이메일 - open, click, delivery 이벤트 데이터, push - send, open 이벤트 데이터 그리고 인앱메세지의 - 노출, 클릭 데이터를 사내 DataWarehouse에 통합해서 적재한다고 할 때 event_type이라는 필드를 하나 만들어서 어떤 데이터인지 명시해 줘야 된다고 생각하시면 됩니다.
# | 파일명 | event_type 필드의 key 값(예시) |
1 | users.messages.email.Open.avro' | email_open |
2 | users.messages.email.Click.avro' | email_click |
3 | users.messages.email.Delivery.avro' | email_delivery |
4 | users.messages.pushnotification.Send.avro' | push_send |
5 | users.messages.pushnotification.Open.avro' | push_open |
6 | users.messages.inappmessage.Click.avro' | inappmessage_click |
7 | users.messages.inappmessage.Impression.avro' | inappmessage_Impression |
추가로 조심해야 될 부분은 브레이즈 커런츠 데이터중에 시간을 나타내는 time이라는 필드가 있는데 UTC 기준이라 추후 전처리 할 때 원하는 시간대(KST)로 처리를 해줘야 합니다.

MMP(앱스플라이어) 데이터 수집하기
앱스플라이어 데이터는 사내에서 어떻게 집계할지 기준을 잡아주셔야 됩니다.
소개드리는 방식은 SKAN 중복이 어느 정도 발생할 수 있으나 현재까지는 소개드리는 방식이 최선입니다.
앱스플라이어 측에서 개선을 해주신다고 들었기 때문에 기대가 됩니다.
앱스플라이어 데이터를 집계하기 위해서는 여러 개의 리포트를 Export 해야 되는데요
아시겠지만 굉장히 번거로운 작업입니다.
데일리 리포트를 만들려면 OS별, UA, RT(리타겟팅) 별로 csv 파일을 12번 클릭해서 받아 정리해야 되지만 API를 활용하면 충분히 자동화할 수 있습니다.
필요한 API는 아래와 같습니다.
- Raw data Pull API
- organic
- install
- in-app events
- non-organic
- install
- in-app events
- organic
- Aggregate Pull API
- User Acquisition
- Retargeting
- SKAN AGGREGATED PERFORMANCE REPORT API


하루에 호출해야 되는 API가 굉장히 많죠? ㅜㅜ
참고로 앱스플라이어는 일별 API 호출 제한이 있어서 테스트하실 때 유의해야 합니다. (가이드 링크)
내가 지금 몇 번 호출했는지 확인하시려면 어드민에서 오른쪽 상단 > security center > audit log를 보시면 확인 가능합니다.



그리고 또 하나 중요한 점은 서두에 언급했듯이 앱스플라이어 데이터를 어떻게 볼지 기준에 대해서 논의하시고 대행사와도 공유하는 걸 권장드립니다.
이게 무슨 말이냐면
앱스플라이어 rawdata를 보시다 보면 Media Source 값 중에 restricted라고 명시된 데이터를 보실 수 있습니다. 이건 SRN 매체들의 경우 개인정보보호 이슈로 rawdata에 포함하지 않기 때문입니다. 그래서 SRN 매체(메타, 핀터레스트, 트위터, 스냅챗 등)의 경우에는 집약형 데이터를 활용합니다.(가이드 문서 링크)
그런데 여기서 LTV라는 개념이 등장합니다. 평생가치라는 개념인데.. 앱스플라이어의 가이드 문서를 이용하면
LTV 데이터는 특정 날짜 범위에 앱을 전환/인스톨한 사용자의 일생동안 수행되는 이벤트입니다.

위 표를 보시면 집약형 데이터는 LTV 데이터라고 합니다. 즉 데이터를 조회할 때마다 매출이 달라질 수 있다는 의미죠..
이렇게 되면 현재가 2024년 7월인데 2024년 5월 데이터를 5월에 조회했을 때랑 지금 조회할 때랑 큰 매출 차이를 보이게 됩니다.

머리가 아파집니다...
그래서 집약형 데이터를 API로 소싱 및 적재를 할 때 30일 정도치의 데이터를 매일 갱신해줘야 합니다.
예를 들면 집약형 데이터를 매일 30일 치 데이터를 소싱하고 기존 DB에 적재된 30일 치 집약형 데이터는 삭제하고 append 하는 방식입니다(SKAN aggregated performance API 도 동일한 로직으로 해주시면 됩니다)
SKAN API 는 Total Revenue 환율이 USD 데이터만 줍니다.. 처리하실 때 환율 데이터랑 결합해서 원화로 계산을 해야 되는.. 번거로움이 있어요..
또한 timezone 관련해서도 중요한데요 아래 가이드를 보시면 UTC only 라고 되어 있습니다(KST로 맞춰야 되는데..)

SKAN aggregated performance report API를 호출해 보면.. KST로 바꿀 수 있는 형태인지 확인해 봤는데 %y-%m-%d
형태로 데이터를 줍니다... 이상해서 다른 문서들에 뭔가 추가 정보를 얻을만한 것들이 있는지 문서를 찾아봤습니다.


AppsFlyer의 SKAdNetwork(SKAN) 개요 대시보드 가이드 내에는 메타, 구글 SKAN 데이터는 예외적으로 설정된 타임존을 따른다고 되어있습니다. API 문서에는 UTC only라고 되어 있어서.. 난감했던 경험이 생각납니다.

GA4 데이터 수집하기
GA4 빅쿼리는 실무에서 쓰고 있는 조직이 있나 싶을 정도로.. 사용하기가 좀 꺼려집니다.
원시데이터라서 데이터 가공의 자유도가 엄청나게 높지만.. 집계를 하는 입장에서는 굉장히 머리 아픕니다. 정합성을 어디다가 맞춰야 되는지..(아래 이전에 발행한 글 참고)
빅쿼리에서의 GA4 데이터 활용 현실: 기회와 치명적인 문제점
GA4 데이터를 빅쿼리로 보내면 뭐든 다 해결될 것 같은 이야기들이 많지만 실상은 그렇지 못합니다. GA4 인터페이스와 차이가 많고 많은 데이터 용량으로 ETL 과정으로 생각보다 리소스가 많이 듭
botongsaram.tistory.com
그래서 광고 데이터 성과를 집계할 때는 특별한 이유가 없다면 GA4 API 데이터를 소싱하는 게 정합성 의심의 여지가 없기 API 데이터를 활용하는 편이 좋다고 생각합니다.
API 호출 방법은 구글링 해보시면 쉽게 찾아보실 수 있습니다.

GA4 데이터는 진짜 샘플링을 주의해야 되는데요
보고서 만드시다 보면 오른쪽 상단에 있는 샘플링된 탐색 분석에서 더 자세한 결과를 누르지 않으면.. 샘플링된 데이터만 보게 되므로 정합성을 맞춰보실 땐 더 자세한 결과를 선택해줘야 합니다.(굉장히 번거로움)
그런데.. 데이터 조회 범위가 넓으면 샘플링된 보고서 밖에 확인할 수 없는...

GA4 API 도 직접 호출해 봅니다.
smapling_metadata 영역을 보시면 꽤 많은 양의 데이터가 샘플링 돼버립니다.

Query Explorer(링크) 도 조회해 봅니다.
여기서도 데이터 조회 범위가 넓으니 샘플링된 것 같아서 구글 측에 문의해 보니 맞다고 확인했고 추후에 Query Explorer의 이슈는 해결하겠다고 합니다.

이런 이슈로 GA4 API를 샘플링되지 않을 정도의 날짜 범위로 API를 호출해서 적재를 하는 것이 좋습니다.
여기까지 마케팅 데이터 수집 자동화에 대해서 알아보았고 다음 편에서는 인사이트 도출을 위한 데이터 전처리 방법에 대해서 알아보겠습니다!
'모바일 마케팅' 카테고리의 다른 글
코호트 분석 - 제대로 측정하고 계신가요? (달력 기준 vs 24시간 기준) (0) | 2024.08.01 |
---|---|
MMP(AppsFlyer), GA4, Braze 데이터를 활용해 시각화할 때 반드시 고려해야할 사항(2)- 데이터 전처리하기 (1) | 2024.07.23 |
빅쿼리에서의 GA4 데이터 활용 현실: 기회와 치명적인 문제점 (0) | 2024.05.20 |
앱스플라이어(AppsFlyer) MMP 제대로 사용하고 있는걸까? 데이터 사각지대 대응 솔루션 ft. 데이터 락커 (25) | 2024.01.26 |
모바일 게임 마케터의 야근 시간 줄여주는 마법같은 대시보드 구축기(무료) feat.python (7) | 2024.01.02 |