Pridobivanje podatkov o amplitudi prek API-ja

Predstavitev

Amplitude se je zelo dobro izkazalo kot orodje za analizo izdelkov zaradi enostavne nastavitve dogodkov in prilagodljivosti vizualizacije. In pogosto je treba nastaviti lasten model dodeljevanja, združiti uporabnike v gruče ali zgraditi nadzorno ploščo v drugem sistemu BI. Takšno goljufijo je mogoče izvesti le z neobdelanimi podatki o dogodkih iz Amplitude. Ta članek vam bo povedal, kako pridobiti te podatke z minimalnim znanjem programiranja.

Predpogoji

  1. Projekt v Amplitudi, v katerem so dogodki že pravilno konfigurirani in se o njih zbira statistika
  2. Nameščen je Python (delam v različici 3.8.3), ki ga potencialni bralec že obvlada vsaj na osnovni ravni

Navodila

Korak 1. Pridobitev API-ključa in skrivnega ključa

Za nalaganje podatkov morate najprej pridobiti ključ API in skrivni ključ.

Najdete jih po naslednji poti:

  1. »Upravljanje podatkov« (nahaja se v spodnjem levem kotu zaslona)
  2. Izberite želeni projekt, iz katerega bodo preneseni podatki, in pojdite nanj
  3. V meniju projekta, ki se odpre, izberite »Nastavitve projekta«
  4. Poiščemo API-ključ in nize skrivnega ključa, jih kopiramo in shranimo na varno mesto.

Brez klika lahko sledite povezavi, ki na splošno izgleda takole:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
kjer je $$$$$$ prijava amplitude vaše organizacije, ****** je številka projekta

2. korak: Preverjanje prisotnosti zahtevanih knjižnic

Dobra novica je, da skoraj zagotovo že imate te knjižnice privzeto nameščene ali prenesene, vendar morate preveriti. Celoten seznam knjižnic, ki sem jih uporabljal v času pisanja (različice v oklepajih so navedene, kjer je primerno):

  1. requests (2.10.0) - pošiljanje zahteve preko api za sprejem podatkov
  2. pandas (1.0.1) - branje json, ustvarjanje podatkovnega okvira in nato pisanje v datoteko
  3. zipfile - ekstrahirajte datoteke iz arhiva, prejetega prek API-ja
  4. gzip - razpakiranje datotek json iz .gz
  5. os - pridobivanje seznama datotek iz nepakiranega arhiva
  6. čas - neobvezno, izmerite čas delovanja skripta
  7. tqdm - neobvezno, za enostavno spremljanje napredka obdelave datotek

Korak 3. Pisanje skripta za nalaganje podatkov

Namig: celoten skript za prenos je na koncu članka; če želite, ga lahko takoj vzamete in si po potrebi ogledate razlage po korakih.

Korak 3.1. Uvažanje knjižnic

Uvozimo vse knjižnice, navedene v drugem koraku.

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

Korak 3.2. Pošiljanje zahteve Amplitudi

Zaznajmo začetek izvajanja skripta in ga zapišimo v spremenljivko a.

začetni in končni datum sta odgovorna za obdobje prenosa podatkov in sta vgrajena v besedilo poslane zahteve strežniku Amplitude, poleg datuma lahko določite tudi uro, tako da spremenite vrednost za 'T' v zahtevi.

api_key in secret_key ustrezata vrednostima, pridobljenima v prvem koraku; iz varnostnih razlogov tukaj določim naključna zaporedja namesto svojih.

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

Korak 3.3. Prenos arhiva s podatki

Izmislimo ime za arhiv in ga zapišemo v spremenljivko imena datoteke. Zaradi lažjega označujem obdobje + označujem, da so to podatki o amplitudi. Nato prejeti odziv Amplitude zabeležimo v arhiv.

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

Korak 3.4. Pridobivanje datotek iz mape v računalniku

Za pomoč pri ekstrahiranju datotek pride v poštev knjižnica zipfile. V tretji vrstici bodite previdni in zapišite svojo pot, kjer vam je bolj priročno izvleči.

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

Korak 3.5. json pretvorba

Po ekstrahiranju datotek iz arhiva morate datoteke json pretvoriti v format .gz in jih zapisati v podatkovni okvir za nadaljnje delo.

Upoštevajte, da morate tukaj znova spremeniti pot na svojo in namesto 000000 napisati številko svojega projekta iz Amplitude (ali ročno odprite pot, kjer je bil ekstrahiran arhiv, in poglejte ime mape v njej).

Po vrstnem redu:

Pisanje imenika v spremenljivko, pridobivanje seznama datotek iz imenika, ustvarjanje praznega podatkovnega okvira, time.sleep(1) za pravilno delovanje tqdm, znotraj zanke odpremo datoteke .gz in takoj uporabimo pande za branje json in polnjenje podani podatkovni okvir.

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

Korak 3.6. Pisanje podatkovnega okvira v excelu

Nalaganje v excel je tukaj le primer. V mnogih primerih je bolj priročno delati z nastalim podatkovnim okvirjem znotraj pythona ali shraniti podatke v shrambo.

Tukaj boste morali zamenjati tudi pot za nalaganje podatkov s svojo.

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

Korak 3.7. Štejemo čas delovanja scenarija

Zapis trenutnega časa v spremenljivko b, izračun razlike in števila minut, prikaz skupnih minut. To je zadnji korak.

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

Zaključek

Tabelo lahko pokličete in začnete delati z njo tako, da pokličete spremenljivko amplitude_dataframe, v katero so bili zapisani podatki. Imel bo približno 50 stolpcev, od katerih boste v 80% primerov uporabili: event_type - ime dogodka, event_properties - parametri dogodka, event_time - čas dogodka, uuid - ID odjemalca, user_properties - parametri odjemalca, najprej morate začeti delati z njimi . In ko primerjate številke iz lastnih izračunov z indikatorji iz nadzornih plošč Amplitude, ne smete pozabiti, da sistem uporablja lastno metodologijo za izračun unikatnih odjemalcev/tokov itd., in preden to storite, morate vsekakor prebrati dokumentacijo Amplitude.

Hvala za vašo pozornost! Zdaj lahko naložite neobdelane podatke o dogodkih v Amplitude in jih v celoti uporabite pri svojem delu.

Celoten scenarij:

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

Vir: www.habr.com

Dodaj komentar