Recuperando datos de Amplitude mediante API

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

  1. Un proxecto en Amplitude no que os eventos xa están configurados correctamente e se recollen estatísticas sobre eles
  2. 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:

  1. "Xestionar datos" (situado na parte inferior esquerda da pantalla)
  2. Seleccione o proxecto desexado do que se descargarán os datos e vaia a el
  3. No menú do proxecto que se abre, seleccione "Configuración do proxecto"
  4. 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):

  1. solicitudes (2.10.0) - enviar unha solicitude a través da api para recibir datos
  2. pandas (1.0.1): lendo json, creando un marco de datos e despois escribindo nun ficheiro
  3. zipfile - extrae ficheiros dun arquivo recibido a través da API
  4. gzip - desempaquetado de ficheiros json de .gz
  5. os - obter unha lista de ficheiros dun arquivo desempaquetado
  6. time - opcional, mide o tempo de execución do script
  7. 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

Engadir un comentario