Herwin Amplitude-data via API

Inleiding

Amplitude het homself baie goed bewys as 'n produkanalise-instrument vanweë die maklike gebeurtenisopstelling en visualiseringsbuigsaamheid. En dikwels is daar 'n behoefte om jou eie toeskrywingsmodel op te stel, gebruikers te groepeer of 'n dashboard in 'n ander BI-stelsel te bou. Dit is slegs moontlik om so 'n bedrog uit te voer met rou gebeurtenisdata van Amplitude. Hierdie artikel sal jou vertel hoe om hierdie data met minimale programmeringskennis te bekom.

Voorvereistes

  1. 'n Projek in Amplitude waarin gebeurtenisse reeds korrek gekonfigureer is en statistieke daaroor ingesamel word
  2. Python is geïnstalleer (ek werk in weergawe 3.8.3), waarmee die potensiële leser ten minste op 'n basiese vlak reeds kan werk

Onderrig

Stap 1. Verkry API-sleutel en geheime sleutel

Om data op te laai, moet jy eers 'n API-sleutel en geheime sleutel kry.

Jy kan hulle vind deur die volgende pad te volg:

  1. "Bestuur data" (geleë links onder op die skerm)
  2. Kies die gewenste projek waaruit data afgelaai sal word en gaan daarna
  3. In die projekkieslys wat oopmaak, kies "Projek instellings"
  4. Ons vind die API-sleutel en geheime sleutel stringe, kopieer en stoor dit op 'n veilige plek.

Sonder om te klik, kan jy die skakel volg, wat oor die algemeen so lyk:
analytics.amplitude.com/$$$$$$$/manage/project/********/settings,
waar $$$$$$ jou organisasie se amplitude-aanmelding is, ****** is die projeknommer

Stap 2: Kontroleer die teenwoordigheid van die vereiste biblioteke

Die goeie nuus is dat u hierdie biblioteke byna seker reeds by verstek geïnstalleer of afgelaai het, maar u moet kyk. Die volledige lys biblioteke wat ek gebruik het ten tyde van die skryf daarvan (weergawes tussen hakies word aangedui waar toepaslik):

  1. versoeke (2.10.0) - stuur 'n versoek via api om data te ontvang
  2. pandas (1.0.1) - lees json, skep 'n dataraam en skryf dan na 'n lêer
  3. zipfile - onttrek lêers uit 'n argief wat via die API ontvang is
  4. gzip - pak json-lêers uit .gz
  5. os - kry 'n lys van lêers uit 'n uitgepakte argief
  6. tyd - opsioneel, meet die skrif se looptyd
  7. tqdm - opsioneel, vir maklike monitering van lêerverwerkingsvordering

Stap 3. Skryf van 'n datalaai-skrip

Wenk: die volledige aflaaiskrif is aan die einde van die artikel; as jy wil, kan jy dit dadelik neem en na die stap-vir-stap verduidelikings verwys indien nodig.

Stap 3.1. Invoer van biblioteke

Ons voer al die biblioteke in wat in die tweede stap gelys is.

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

Stap 3.2. Dien 'n versoek in by Amplitude

Kom ons bespeur die begin van skripuitvoering en skryf dit na veranderlike a.

begindatum en einddatum is verantwoordelik vir die tydperk vir die aflaai van data en is ingebou in die teks van die gestuurde versoek na die Amplitude-bediener; benewens die datum, kan jy ook die uur spesifiseer deur die waarde na 'T' in die versoek te verander.

api_key en secret_key stem ooreen met die waardes wat in die eerste stap verkry is; vir sekuriteitsredes spesifiseer ek ewekansige rye hier in plaas van my eie.

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. Запрос отправлен')

Stap 3.3. Laai tans 'n argief met data af

Ons kom met 'n naam vir die argief en skryf dit na die lêernaam veranderlike. Vir my gerief dui ek die tydperk aan + dui aan dat dit amplitudedata is. Vervolgens teken ons die ontvange reaksie van Amplitude in die argief op.

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

Stap 3.4. Haal tans lêers uit 'n gids op jou rekenaar

Die zipfile-biblioteek kom in die spel om lêers te help onttrek. In die derde reël, wees versigtig en skryf jou pad neer waar dit vir jou geriefliker is om te onttrek.

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

Stap 3.5. json-omskakeling

Nadat u die lêers uit die argief onttrek het, moet u json-lêers in .gz-formaat omskakel en dit in 'n dataraam skryf vir verdere werk.

Neem asseblief kennis dat jy hier weer die pad na jou eie moet verander, en in plaas van 000000 jou projeknommer vanaf Amplitude skryf (of die pad waar die argief onttrek is met die hand oopmaak en kyk na die naam van die vouer binne).

In volgorde:

Skryf 'n gids na 'n veranderlike, kry 'n lys lêers uit 'n gids, skep 'n leë dataraam, time.sleep(1) vir tqdm om reg te werk, binne die lus maak ons ​​.gz lêers oop en gebruik dadelik pandas om json te lees en te vul die gegewe dataraam.

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

Stap 3.6. Skryf dataraam in Excel

Die oplaai na Excel is net 'n voorbeeld hier. In baie gevalle is dit geriefliker om met die resulterende dataraam in python te werk of die data in die stoor te plaas.

Jy sal ook die data-oplaaipad hier met jou eie moet vervang.

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

Stap 3.7. Ons tel die looptyd van die draaiboek

Teken die huidige tyd in die veranderlike b aan, bereken die verskil en die aantal minute, vertoon die totale minute. Dit is die laaste stap.

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

Gevolgtrekking

Jy kan die tabel noem en daarmee begin werk deur die amplitude_dataframe-veranderlike waarin die data geskryf is, te roep. Dit sal ongeveer 50 kolomme hê, waarvan jy in 80% van die gevalle sal gebruik: gebeurtenis_tipe - gebeurtenis naam, gebeurtenis_eienskappe - gebeurtenis parameters, gebeurtenis_tyd - gebeurtenis tyd, uuid - kliënt ID, gebruiker_eienskappe - kliënt parameters, jy moet eers daarmee begin werk . En wanneer jy syfers van jou eie berekeninge met aanwysers van Amplitude-dashboards vergelyk, moet jy nie vergeet dat die stelsel sy eie metodologie gebruik vir die berekening van unieke kliënte/tregters, ens. nie, en voordat jy dit doen, moet jy beslis die Amplitude-dokumentasie lees.

Dankie vir jou aandag! Nou kan jy rou gebeurtenisdata na Amplitude oplaai en dit ten volle in jou werk gebruik.

Hele skrif:

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

Bron: will.com

Voeg 'n opmerking