Introdución
Amplitude demostrou ser unha ferramenta de análise de produtos debido á súa fácil configuración de eventos e á súa flexibilidade de visualización. E moitas veces é necesario configurar o seu propio modelo de atribución, agrupar usuarios ou construír un panel noutro sistema de BI. Só é posible realizar tal fraude con datos de eventos en bruto de Amplitude. Este artigo indicarache como obter estes datos cun mínimo coñecemento de programación.
Requisitos previos
- Un proxecto en Amplitude no que os eventos xa están configurados correctamente e se recollen estatísticas sobre eles
- Python está instalado (estou a traballar na versión 3.8.3), coa que o lector potencial xa pode traballar polo menos nun nivel básico
Instrución
Paso 1. Obter a clave API e a clave secreta
Para cargar datos, primeiro cómpre obter unha clave API e unha clave secreta.
Podes atopalos seguindo o seguinte camiño:
- "Xestionar datos" (situado na parte inferior esquerda da pantalla)
- Seleccione o proxecto desexado do que se descargarán os datos e vaia a el
- No menú do proxecto que se abre, seleccione "Configuración do proxecto"
- Atopamos a clave API e as cadeas de clave secreta, copiamos e gardámolas nun lugar seguro.
Sen facer clic, podes seguir a ligazón, que en xeral ten o seguinte aspecto:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
onde $$$$$$ é o inicio de sesión de amplitude da túa organización, ****** é o número do proxecto
Paso 2: Comprobación da presenza das bibliotecas necesarias
A boa noticia é que case seguro que xa tes estas bibliotecas instaladas por defecto ou descargadas, pero cómpre comprobalo. A lista completa de bibliotecas que utilicei no momento de escribir (as versións entre parénteses indícanse cando corresponda):
- solicitudes (2.10.0) - enviar unha solicitude a través da api para recibir datos
- pandas (1.0.1): lendo json, creando un marco de datos e despois escribindo nun ficheiro
- zipfile - extrae ficheiros dun arquivo recibido a través da API
- gzip - desempaquetado de ficheiros json de .gz
- os - obter unha lista de ficheiros dun arquivo desempaquetado
- time - opcional, mide o tempo de execución do script
- tqdm - opcional, para un seguimento sinxelo do progreso do procesamento de ficheiros
Paso 3. Escribir un script de carga de datos
Consello: o script de descarga completo está ao final do artigo; se o desexa, pode levalo inmediatamente e consultar as explicacións paso a paso se é necesario.
Paso 3.1. Importación de bibliotecas
Importamos todas as bibliotecas listadas no segundo paso.
# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
Paso 3.2. Enviar unha solicitude a Amplitude
Detectemos o inicio da execución do script e escríbeo na variable a.
startdate e enddate son os responsables do período de descarga de datos e están incorporados ao texto da solicitude enviada ao servidor de Amplitude; ademais da data, tamén pode especificar a hora cambiando o valor despois de "T" na solicitude.
api_key e secret_key corresponden aos valores obtidos no primeiro paso; por motivos de seguridade, especifico aquí secuencias aleatorias en lugar das miñas.
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. Запрос отправлен')
Paso 3.3. Descargando un arquivo con datos
Creamos un nome para o arquivo e escríbeo na variable nome do ficheiro. Para a miña comodidade, indico o período + indica que se trata de datos de amplitude. A continuación, gravamos a resposta recibida de Amplitude no arquivo.
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')
Paso 3.4. Recuperando ficheiros dun cartafol do teu ordenador
A biblioteca de ficheiros zip entra en xogo para axudar a extraer ficheiros. Na terceira liña, ten coidado e escribe o teu camiño onde che resulte máis cómodo extraer.
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
Paso 3.5. conversión json
Despois de extraer os ficheiros do arquivo, cómpre converter ficheiros json en formato .gz e escribilos nun marco de datos para seguir traballando.
Teña en conta que aquí cómpre cambiar o camiño de novo ao seu propio e, en lugar de 000000, escribir o número do seu proxecto desde Amplitude (ou abrir manualmente o camiño onde se extraeu o arquivo e mirar o nome do cartafol que hai dentro).
En orde:
Escribindo un directorio nunha variable, obtendo unha lista de ficheiros dun directorio, creando un marco de datos baleiro, time.sleep(1) para que tqdm funcione correctamente, dentro do bucle abrimos ficheiros .gz e inmediatamente usamos pandas para ler json e encher. o marco de datos dado.
# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'\000000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('Прогресс обработки файлов:')
time.sleep(1)
for i in tqdm(files):
with gzip.open(directory + '\' + i) as f:
add = pd.read_json(f, lines = 'True')
amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)
print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')
0000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('Прогресс обработки файлов:')
time.sleep(1)
for i in tqdm(files):
with gzip.open(directory + '\' + i) as f:
add = pd.read_json(f, lines = 'True')
amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)
print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')
Paso 3.6. Escribir dataframe en excel
A carga a Excel é só un exemplo aquí. En moitos casos, é máis conveniente traballar co marco de datos resultante dentro de Python ou almacenar os datos.
Tamén terás que substituír a ruta de carga de datos aquí pola túa.
# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)
Paso 3.7. Contamos o tempo de execución do guión
Rexistrando a hora actual na variable b, calculando a diferenza e o número de minutos, mostrando os minutos totais. Este é o último paso.
b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))
Conclusión
Podes chamar á táboa e comezar a traballar con ela chamando á variable amplitude_dataframe na que se escribiron os datos. Terá unhas 50 columnas, das cales no 80% dos casos usará: event_type - nome do evento, event_properties - parámetros do evento, event_time - hora do evento, uuid - ID do cliente, user_properties - parámetros do cliente, primeiro debes comezar a traballar con elas. . E ao comparar as cifras dos teus propios cálculos cos indicadores dos paneis de Amplitude, non debes esquecer que o sistema utiliza a súa propia metodoloxía para calcular clientes/funíles únicos, etc., e antes de facelo, debes ler definitivamente a documentación de Amplitude.
Grazas pola súa atención! Agora podes cargar datos de eventos en bruto a Amplitude e utilizalos completamente no teu traballo.
Guión completo:
# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
a = time.time()
# Параметры начальной и конечной даты
startdate = '20200627'
enddate = '20200628'
api_key = 'd988fddd7cfc0a8a'
secret_key = 'da05cf1aeb3a361a61'
# Отправление запроса в Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос отправлен')
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
a = time.time()
# Параметры начальной и конечной даты
startdate = '20200627'
enddate = '20200628'
api_key = 'd988fddd7cfc0a8a'
secret_key = 'da05cf1aeb3a361a61'
# Отправление запроса в Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Запрос отправлен')
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+filename+'\000000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('Прогресс обработки файлов:')
time.sleep(1)
for i in tqdm(files):
with gzip.open(directory + '\' + i) as f:
add = pd.read_json(f, lines = 'True')
amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)
print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')
# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)
b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))
0000'
files = os.listdir(directory)
amplitude_dataframe = pd.DataFrame()
print('Прогресс обработки файлов:')
time.sleep(1)
for i in tqdm(files):
with gzip.open(directory + '\' + i) as f:
add = pd.read_json(f, lines = 'True')
amplitude_dataframe = pd.concat([amplitude_dataframe, add])
time.sleep(1)
print('4. JSON файлы из архива успешно преобразованы и записаны в dataframe')
# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)
b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))
Fonte: www.habr.com