본문 바로가기
Database

Mixpanel를 활용한 데이터 추출 1

by 혀넝 2023. 2. 24.

Mixpanel(믹스패널)은 데이터 분석을 지원해 주는 툴로, 주로 유저 행동에 대해 기록하고 그 통계를 보여준다.
믹스패널을 사용하기 위해서는 먼저 코드에 믹스패널 트래킹 코드를 심는 작업이 필요하다. 트래킹 코드가 심어진 소스코드를 배포하고 사용자가 서비스를 사용하게 되면, 사용자의 행동이 믹스패널에 기록된다.
기록된 결과들은 데이터로 뽑아서 사용할 수 있다.

이번 포스팅에서는 트래킹 코드를 심는 작업은 건너뛰고, 믹스패널 API를 사용하여 사용자 행동 데이터를 가져와 csv로 추출하는 과정을 설명하고자 한다. 
믹스패널 페이지에 대략적이 설명이 쓰여있긴 하지만 굉장히 불친절해서 JSON 데이터를 얻는데 고생했기 때문에 다른 사람들에게 조금이라도 도움이 되었으면 좋겠다.

Mixpanel API 사용

1. username & password 생성

믹스패널에서 데이터는 JSON 형태로 저장된다.
믹스패널에서 제공하는 export API를 사용하면 데이터를 다운로드할 수 있고, 그 개요는 아래의 url에서 확인할 수 있다.
https://developer.mixpanel.com/reference/raw-event-export

해당 url에 들어가면 보이는 화면이다.
오른쪽을 보면 AUTHENTICATION이라고 있는데, 믹스패널에서 데이터를 다운로드하기 위해서 필요한 인증이 된다.
여기서 필요한 usernamepasswordproject settings -> Service Accounts에서 만들 수 있다.

여기서 username과 secrets가 생성되고, secrets가 password가 된다.
❗️이 username과 sercrets는 토큰처럼 생성 후 한 번만 볼 수 있으므로 어디에 잘 적어둬야 한다.

 

2. header

AUTHENTICATION 위에 LANGUAGE에서 데이터 추출에 사용할 언어를 선택한다.
나는 파이썬으로 선택했다.

만들어진 username과 secrets를 AUTHENTICATION에 집어넣으면 그 아래의 검은색 화면의 headers에 authorization이 생기는 것을 확인할 수 있다.
여기에는 username과 secrets가 base64-encoded string으로 합쳐진 문자가 들어가게 된다.
여기서 생성된 headers를 직접 코드에서 활용하게 된다.

 

3. 날짜 지정

화면 가운데를 보면 QUERY PARAMS가 있다.
여기서 required라고 쓰여있는 from_dateto_date를 지정해야 해당 날짜에 맞는 데이터를 추출할 수 있다.
약간의 팁으로는 날짜 기간을 넓게 지정하면 데이터의 양이 많아져서 나중에 처리하기 힘들다. 그래서 날짜라 적당히 잘라서 지정하는 것이 중요하다.

QUERY PARAMS의 가장 위에 있는 project_id는 required 표시가 없지만, 나는 service account를 사용하고 또한 지정된 project id가 있었기 때문에 사용한다. 
project id는 Project Settings에서 확인할 수 있다.

날짜와 project_id를 지정하면 이번엔 url이 변하는 것을 확인할 수 있다.
화면 캡쳐로 잘 보이지 않아 코드를 복사해 왔다.
username, password, project id는 임의로 작성했다.

import requests

url = "https://data.mixpanel.com/api/2.0/export?project_id=111&from_date=2023-01-01&to_date=2023-01-20"

headers = {
    "accept": "text/plain",
    "authorization": "Basic MjMyNDrjhLTjhYfjhLnjhYHjhLQ="
}

response = requests.get(url, headers=headers)

print(response.text)

 

4. 코드에서 확인

믹스패널에서 데이터를 추출하기 위해서는 AUTHENTICATION 아래 검은색 화면 부분을 활용해야 하지만, Query Params과 AUTHENTICATION에 작성한 내용 외에는 직접 값을 변경할 수 없다. 따라서 다음 과정을 위해서는 해당 내용을 복사해서 vscode 등을 이용해야 한다.

class TestView(GenericAPIView):
    def get(self, request):
        import requests, pandas
        url = "https://data.mixpanel.com/api/2.0/export?project_id=111&from_date=2023-01-01&to_date=2023-01-20"

        headers = {
            "accept": "text/plain",
            "authorization": "Basic MjMyNDrjhLTjhYfjhLnjhYHjhLQ="
        }


        response = requests.get(url, headers=headers)

        print(response.text)

        return Response(status=status.HTTP_200_OK)

Django 프로젝트에 그대로 테스트를 했기 때문에 아래의 TestView를 작성해서 확인했다.
코드를 돌려보면 터미널에 데이터가 찍히는 것을 확인할 수 있다.

{"even": ~~, "properties": {time: 1673362246, $region: "Seoul", ...}}

자세한 데이터를 보여줄 순 없지만 위와 같은 형태로 생긴 JSON 데이터를 볼 수 있다.

 

 

여기까지가 기본적인 믹스패널 API 활용법이 된다.
다음 포스팅에서 데이터를 json 파일로 저장하고 csv로 변환하는 과정을 담으려고 한다.

'Database' 카테고리의 다른 글

Mixpanel를 활용한 데이터 추출 2  (0) 2023.03.01