Obținerea datelor Amplitude prin API

Introducere

Amplitude ca instrument de analiză a produselor s-a dovedit a fi foarte eficient datorită configurării simple a evenimentelor și flexibilității vizualizărilor. De multe ori, apar nevoia de a stabili un model propriu de atribuire, de a efectua clustering-ul utilizatorilor sau de a construi un tablou de bord în alt sistem BI. O astfel de manevră este posibilă doar având datele brute despre evenimente din Amplitude. Cum să obțineți aceste date cu cunoștințe minime de programare — va fi subiectul acestui articol.

Prerequisites

  1. Un proiect în Amplitude, în care evenimentele sunt deja configurate corect și se colectează statistici
  2. Python instalat (lucrez cu versiunea 3.8.3), cu care cititorul potențial știe deja să lucreze cel puțin la un nivel de bază

Instrucțiune

Pasul 1. Obținerea API-key și secret-key

Pentru a exporta datele, mai întâi trebuie să obțineți API-key și secret-key.

Le puteți găsi accesând următorul parcurs:

  1. „Manage data” (se află în colțul din stânga jos al ecranului)
  2. Selectați proiectul dorit din care se vor exporta datele și accesați-l
  3. În meniul deschis al proiectului, selectați „Project settings”
  4. Găsiți liniile API-key și secret-key, copiați-le și salvați-le într-un loc sigur.

Fără a face clic, puteți accesa linkul care, în general, arată astfel:
analytics.amplitude.com/$$$$$$$/manage/project/*******/settings,
unde $$$$$$$ — este utilizatorul organizației dumneavoastră în Amplitude, ****** — este numărul proiectului

Pasul 2. Verificarea bibliotecilor necesare

Vestea bună este că aceste biblioteci sunt aproape sigur deja instalate implicit sau descărcate, dar trebuie să le verificați. Lista completă cu bibliotecile pe care le folosesc în momentul redactării articolului (în paranteză sunt indicate versiunile, acolo unde este cazul):

  1. requests (2.10.0) - trimiterea unei cereri prin api pentru a obține date
  2. pandas (1.0.1) — citirea json, crearea dataframe-ului și exportul acestuia în fișier
  3. zipfile — extragerea fișierelor din arhiva obținută prin API
  4. gzip — decomprimarea fișierelor json din .gz
  5. os — obținerea listei fișierelor din arhiva decomprimată
  6. time — opțional, măsurarea timpului de execuție al scriptului
  7. tqdm — opțional, pentru a observa progresul procesării fișierelor

Pasul 3. Scrierea scriptului de încărcare a datelor

Sfat: scriptul complet de încărcare se află la finalul articolului, dacă doriți, îl puteți lua direct și consulta explicațiile pas cu pas, după cum este necesar.

Pasul 3.1. Importarea bibliotecilor

Importăm toate bibliotecile enumerate la pasul doi.

# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm

Pasul 3.2. Trimiterea cererii către Amplitude

Vom marca începutul execuției scriptului și vom salva în variabila a.

startdate și enddate corespund perioadei pentru descărcarea datelor și sunt integrate în textul cererii trimise către serverul Amplitude, pe langă dată, se pot specifica și ore, schimbând valoarea după 'T' în cerere.

api_key și secret_key corespund valorilor obținute la pasul întâi, din motive de securitate, aici folosesc secvențe aleatorii în locul celor reale.

a = time.time()
# Parametrii datei de început și de sfârșit
startdate = '20200627'
enddate = '20200628'

api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# Trimiterea cererii către Amplitude
response = requests.get('https://amplitude.com/api/2/export?start=' + startdate + 'T0&end=' + enddate + 'T0', auth = (api_key, secret_key))
print('1. Cererea a fost trimisă')

Pasul 3.3. Descărcarea arhivei cu date

Gândim un nume pentru arhivă și îl salvăm în variabila filename. Pentru comoditate, specific perioada + indic că acestea sunt datele din amplitude. Apoi salvăm răspunsul obținut de la Amplitude în arhivă.

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

Pasul 3.4. Extracția fișierelor în folderul de pe computer

Biblioteca zipfile intră în acțiune, care va ajuta la extragerea fișierelor. În a treia linie, fiți atenți și specificați calea dvs., unde vă e mai convenabil să faceți extracția.

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

Pasul 3.5. Transformarea json

După extragerea fișierelor din arhivă, trebuie să transformăm fișierele json, care sunt în format .gz și să le salvăm în dataframe pentru utilizare ulterioară.

Atrag atenția că aici trebuie să schimbați din nou calea cu a dvs. și în loc de 000000 să scrieți numărul dvs. de proiect din Amplitude (sau să deschideți manual calea unde a fost extrasă arhiva și să verificați numele folderului din interior).

În ordinea de urgență:

Salvarea directorului în variabilă, obținerea listei fișierelor din director, crearea unui dataframe gol, time.sleep(1) pentru funcționarea corectă a tqdm, în interiorul buclei deschidem fișierele .gz și imediat folosim pandas pentru a citi json și a umple dataframe-ul specificat.

# Преобразование 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')

Pasul 3.6. Salvarea dataframe-ului în excel

Exportul în excel este doar un exemplu. În multe cazuri este mai convenabil să lucrați cu dataframe-ul obținut în python sau să salvați datele în stocare.

Va trebui să schimbați calea de export a datelor aici, de asemenea.

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

Pasul 3.7. Calculăm timpul de execuție al scriptului

Salvarea timpului curent în variabila b, calcularea diferenței și a numărului de minute, afișarea totalului de minute. Acesta este ultimul pas.

b = time.time()
diff = b-a
minutes = diff//60
print('Executarea codului a durat: {:.0f} minut(ă)'.format(minutes))

Concluzie

Pentru a apela tabelul și a începe lucrul cu acesta, trebuie să apelați variabila amplitude_dataframe, în care au fost înregistrate datele. Aceasta va conține aproximativ 50 de coloane, dintre care în 80% din cazuri veți utiliza: event_type — denumirea evenimentului, event_properties — parametrii evenimentului, event_time — timpul evenimentului, uuid — id-ul clientului, user_properties — parametrii clientului, este important să începeți lucrul în primul rând cu aceștia. Și atunci când comparați cifrele din calculele proprii cu indicatorii din tablourile de bord Amplitude, nu trebuie să uitați că sistemul folosește propria metodologie pentru calcularea clienților unici/pixelor etc., iar înainte de aceasta trebuie neapărat să consultați documentația Amplitude.

Vă mulțumim pentru atenție! Acum puteți exporta date brute despre evenimente în Amplitude și le puteți utiliza pe deplin în activitatea voastră.

Întregul script:

# Импорт библиотек
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))

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster