Recuperar datos de amplitud a través de API

introducción

Amplitude ha demostrado su eficacia como herramienta de análisis de productos debido a su sencilla configuración de eventos y su flexibilidad de visualización. Y, a menudo, es necesario configurar su propio modelo de atribución, agrupar usuarios o crear un panel en otro sistema de BI. Sólo es posible realizar un fraude de este tipo con datos de eventos sin procesar de Amplitude. Este artículo le dirá cómo obtener estos datos con conocimientos mínimos de programación.

Requisitos previos

  1. Un proyecto en Amplitude en el que los eventos ya están configurados correctamente y se recopilan estadísticas sobre los mismos
  2. Python está instalado (estoy trabajando en la versión 3.8.3), con el que el lector potencial ya puede trabajar al menos en un nivel básico.

instrucciones

Paso 1. Obtención de clave API y clave secreta

Para cargar datos, primero debe obtener una clave API y una clave secreta.

Puedes encontrarlos siguiendo la siguiente ruta:

  1. “Administrar datos” (ubicado en la parte inferior izquierda de la pantalla)
  2. Seleccione el proyecto deseado del cual se descargarán los datos y acceda a él.
  3. En el menú del proyecto que se abre, seleccione "Configuración del proyecto".
  4. Encontramos las cadenas de clave API y clave secreta, las copiamos y las guardamos en un lugar seguro.

Sin hacer clic, puede seguir el enlace, que en general tiene este aspecto:
Analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
donde $$$$$$ es el inicio de sesión de amplitud de su organización, ****** es el número del proyecto

Paso 2: comprobar la presencia de las bibliotecas necesarias

La buena noticia es que es casi seguro que ya tienes estas bibliotecas instaladas de forma predeterminada o descargadas, pero debes verificarlas. La lista completa de bibliotecas que utilicé al momento de escribir este artículo (las versiones entre paréntesis se indican cuando corresponde):

  1. solicitudes (2.10.0): envío de una solicitud a través de API para recibir datos
  2. pandas (1.0.1): lee json, crea un marco de datos y luego escribe en un archivo
  3. zipfile: extrae archivos de un archivo recibido a través de la API
  4. gzip: descomprimir archivos json de .gz
  5. os: obtener una lista de archivos de un archivo descomprimido
  6. tiempo: opcional, mide el tiempo de ejecución del script
  7. tqdm: opcional, para facilitar el seguimiento del progreso del procesamiento de archivos

Paso 3. Escribir un script de carga de datos

Sugerencia: el script de descarga completo se encuentra al final del artículo; si lo desea, puede tomarlo inmediatamente y consultar las explicaciones paso a paso si es necesario.

Paso 3.1. Importando bibliotecas

Importamos todas las bibliotecas enumeradas en el 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 una solicitud a Amplitude

Detectemos el inicio de la ejecución del script y escribámoslo en la variable a.

startdate y enddate son responsables del período de descarga de datos y están integrados en el texto de la solicitud enviada al servidor Amplitude; además de la fecha, también puede especificar la hora cambiando el valor después de 'T' en la solicitud.

api_key y secret_key corresponden a los valores obtenidos en el primer paso; por razones de seguridad, aquí especifico secuencias aleatorias en lugar de las mí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. Descargar un archivo con datos

Creamos un nombre para el archivo y lo escribimos en la variable de nombre de archivo. Para mi comodidad, indico el período + indico que se trata de datos de amplitud. A continuación, registramos la respuesta recibida de Amplitude en el archivo.

# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
    code.write(response.content)
print('2. Архив с файлами успешно скачан')  

Paso 3.4. Recuperar archivos de una carpeta en su computadora

La biblioteca zipfile entra en juego para ayudar a extraer archivos. En la tercera línea, tenga cuidado y escriba su ruta donde le resulte más conveniente extraer.

# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)

Paso 3.5. conversión json

Después de extraer los archivos del archivo, debe convertir los archivos json al formato .gz y escribirlos en un marco de datos para seguir trabajando.

Tenga en cuenta que aquí debe cambiar la ruta nuevamente a la suya y, en lugar de 000000, escriba el número de su proyecto desde Amplitude (o abra manualmente la ruta donde se extrajo el archivo y observe el nombre de la carpeta que contiene).

En orden:

Escribir un directorio en una variable, obtener una lista de archivos del directorio, crear un marco de datos vacío, time.sleep(1) para que tqdm funcione correctamente, dentro del bucle abrimos archivos .gz e inmediatamente usamos pandas para leer json y rellenar el 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 marco de datos en Excel

La carga a Excel es solo un ejemplo aquí. En muchos casos, es más conveniente trabajar con el marco de datos resultante dentro de Python o almacenar los datos.

También tendrás que reemplazar la ruta de carga de datos aquí por la tuya.

# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)

Paso 3.7. Contamos el tiempo de ejecución del script.

Registrando la hora actual en la variable b, calculando la diferencia y el número de minutos, mostrando el total de minutos. Este es el ultimo paso.

b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))

Conclusión

Puede llamar a la tabla y comenzar a trabajar con ella llamando a la variable amplitude_dataframe en la que se escribieron los datos. Tendrá alrededor de 50 columnas, de las cuales en el 80% de los casos usará: event_type - nombre del evento, event_properties - parámetros del evento, event_time - hora del evento, uuid - ID del cliente, user_properties - parámetros del cliente, primero debe comenzar a trabajar con ellos . Y al comparar cifras de sus propios cálculos con indicadores de los paneles de Amplitude, no debe olvidar que el sistema utiliza su propia metodología para calcular clientes/embudos únicos, etc., y antes de hacer esto, definitivamente debe leer la documentación de Amplitude.

¡Gracias por su atención! Ahora puede cargar datos de eventos sin procesar en Amplitude y utilizarlos plenamente en su trabajo.

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))

Fuente: habr.com

Añadir un comentario