Введение
Amplitude как инструмент продуктовой аналитики очень хорошо зарекомендовал себя благодаря несложной настройке событий и гибкости визуализаций. И нередко возникает потребность наладить собственную модель атрибуции, провести кластеризацию пользователей или построить дашборд в другой BI-системе. Выполнить подобную махинацию возможно, только имея сырые данные о событиях из Amplitude. О том, как получить эти данные с минимальными знаниями программирования — и будет в этой статье.
Пререквизит
- Проект в Amplitude, в котором уже корректно настроены события, и по ним собирается статистика
- Установлен python (работаю в версии 3.8.3), с которым потенциальный читатель уже умеет работать хотя бы на базовом уровне
Инструкция
Шаг 1. Получение API-key и secret-key
Чтобы выгрузить данные, в первую очередь необходимо получить API-key и secret-key.
Найти их можно, перейдя по следующему пути:
- «Manage data» (находиться в левой нижней части экрана)
- Выбираем нужный проект, из которого будут выгружаться данные, и переходим в него
- В открывшемся меню проекта выбираем «Project settings»
- Находим строки API-key и secret-key, копируем и сохраняем их в надежном месте.
Без прокликивания можно перейти по ссылке, которая в общем виде выглядит так:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
где $$$$$$ — логин вашей организации в amplitude, ****** — номер проекта
Шаг 2. Проверка наличия нужных библиотек
Хорошая новость в том, что эти библиотеки почти наверняка уже у вас установлены по умолчанию или скачаны, но проверить необходимо. Полный список используемых мною библиотек на момент написания статьи (в скобках указаны версии, где уместно):
- requests (2.10.0)- отправление запроса через api для получения данных
- pandas (1.0.1) — чтение json, создание dataframe и последующая запись в файл
- zipfile — извлечь файлы из архива, полученного через API
- gzip — распаковка json файлов из .gz
- os — получение списка файлов из распакованного архива
- time — необязательная, измерение времени работы скрипта
- tqdm — необязательная, для удобства наблюдения за прогрессом обработки файлов
Шаг 3. Написание скрипта загрузки данных
Хинт: полный скрипт загрузки находится в конце статьи, при желании можно сразу взять его и обращаться к пошаговым пояснениям при необходимости.
Шаг 3.1. Импорт библиотек
Производим импорт всех библиотек, перечисленных на втором шаге.
# Импорт библиотек import requests import pandas as pd import zipfile import gzip import os import time import tqdm from tqdm import tqdm
Шаг 3.2. Отправление запроса в Amplitude
Засечем начало выполнения скрипта и запишем в переменную a.
startdate и enddate отвечают за период для выгрузки данных и встраиваются в текст отправленного запроса на сервер Amplitude, помимо даты можно также указывать час, меняя значение после 'T' в запросе.
api_key и secret_key соответствуют значениям, полученным на первом шаге, в целях безопасности здесь указываю случайные последовательности вместо своих.
a = time.time() # Параметры начальной и конечной даты startdate = '20200627' enddate = '20200628' api_key = 'kldfg844203rkwekfjs9234' secret_key = '094tfjdsfmw93mxwfek' # Отправление запроса в Amplitude response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key)) print('1. Запрос отправлен')
Шаг 3.3. Скачивание архива с данными
Придумываем название для архива и записываем в переменную filename. Для своего удобства я указываю период + указываю, что это данные amplitude. Далее записываем полученный ответ от Amplitude в архив.
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')
Шаг 3.4. Извлечение файлов в папке на компьютере
В дело вступает библиотека zipfile, которая поможет осуществить извлечение файлов. В третьей строке будьте внимательны и пропишите свой путь, куда вам удобнее произвести извлечение.
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:Users...'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
Источник: habr.com
Комментарии: