Python에서 Measurement Protocol 사용

여러분 안녕하세요. @best_not_best입니다.

Google 애널리틱스의 Measurement Protocol을 사용하면 HTTP 요청에서 원시 데이터를 Google 애널리틱스 서버에 직접 보낼 수 있습니다.
이렇게 하면 온라인과 오프라인 활동을 연결하고 Google 애널리틱스에서 분석할 수 있습니다.

Measurement Protocol 정보



공식 문서



데이터 가져오기와의 차이



Google 애널리틱스에는 데이터 가져오기과 비슷한 기능이 있지만 차이는 (얼마나) 아래에 있습니다.



Measurement Protocol
데이터 가져오기


데이터 전송 방법
HTTP 요청
주로 파일 업로드

전송 대상 사용자
Google 애널리틱스에 존재하지 않는 사용자(신규 사용자)의 데이터 전송도 가능
Google 애널리틱스에 있는 사용자(기존 사용자)만

반영시간
거의 실시간
24시간 정도 걸릴 수도 있다

Python에서의 사용 예를 적힌 공식 문서
없음
예 ( Management API )


이용 예



Google 애널리틱스 무료 버전



맞춤 측정기준에서 회원 ID를 가져옵니다. 시스템 데이터와 결합한 후 Measurement Protocol로 데이터 전송.
Google 애널리틱스에 전송한 데이터는 광고 게재 등에도 이용 가능합니다.



Google 애널리틱스 유료 버전 + Google Cloud Platform



Google 애널리틱스 데이터BigQuery Export를 사용할 수 있으므로 BigQuery에서 시스템 데이터와 결합한 후 Dataflow나 Cloud Composer에서 Measurement Protocol로 데이터를 전송하는 것이 좋습니다.



전치가 길어졌습니다만, 이하로부터 Measurement Protocol의 사용예가 됩니다.

환경



기계/OS


$ cat /etc/os-release

PRETTY_NAME="Debian GNU/Linux 9 (stretch)"
NAME="Debian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"

파이썬


  • Python: 3.5.3
  • urllib3: 1.24


  • 프로그램



    mp.py
    #!/usr/bin/env python
    # -*- coding: UTF-8 -*-
    
    """send Google Analytics data using MeasurementProtocol."""
    
    import sys
    import urllib.parse
    import urllib.request
    from urllib.request import urlopen
    
    if __name__ == '__main__':
        mp_url = 'https://www.google-analytics.com/collect'
        tid = 'UA-XXXXX-X'
        ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.12; rv:71.0) Gecko/20100101 Firefox/71.0'
        t = 'event'
        ec = 'sample_event_category'
        ea = 'sample_event_action'
        el = 'sample_event_labe'
        v = '1'
        ni = 1
    
        # url params
        url_params = [
            {
                'v': v,
                'tid': tid,
                'ua': ua,
                't': t,
                'ec': ec,
                'ea': ea,
                'el': el,
                'ni': '1',
                'cid': '11111.11111',
            },
            {
                'v': v,
                'tid': tid,
                'ua': ua,
                't': t,
                'ec': ec,
                'ea': ea,
                'el': el,
                'ni': '1',
                'cid': '22222.22222',
            },
            {
                'v': v,
                'tid': tid,
                'ua': ua,
                't': t,
                'ec': ec,
                'ea': ea,
                'el': el,
                'ni': '1',
                'cid': '33333.33333',
            },
        ]
    
        try:
            for url_param in url_params:
                # url encode
                data = urllib.parse.urlencode(url_param).encode('utf-8')
                request = urllib.request.Request(mp_url, data)
                response = urlopen(request)
        except Exception as e:
            print(e)
            sys.exit(1)
    
        sys.exit(0)
    
    tid에는 대상 Google 애널리틱스의 추적 ID를 지정하고 ua에는 적절한 사용자 에이전트를 지정하십시오.url_params는 API의 매개 변수입니다. cid에는 Google 애널리틱스의 클라이언트 ID를 각각 설정하십시오.
    사용 가능한 파라미터는 아래를 참조하십시오.
    ぇぺぺrs. 오, ぇ. 코 m / 아나 ly 치 cs /에서 v gu e s / 코 c 치온 / p 여과 l / v1 / 파라 rs

    실행 방법


    $ python mp.py
    

    실행 결과



    Google 애널리틱스의 실시간 이벤트를 보면 설정한 이벤트가 추적되고 있는지 확인할 수 있습니다.



    기타 아무래도 좋은 이야기



    Mac의 pyenv를 업데이트하면 openssl이 제대로 작동하지 않으므로 클라우드 환경에서 실행하고 있습니다.
    (Python 버전이 3.5 인 이유입니다.)
    고치는 건 그렇게・・・.

    좋은 웹페이지 즐겨찾기