Marrja e të dhënave Amplitude përmes API

Hyrje

Amplitude si një mjet analitik për produktet ka treguar rezultate të mira falë konfigurimit të thjeshtë të ngjarjeve dhe fleksibilitetit të vizualizimeve. Shpesh ndodh nevoja për të vendosur një model të vetë-attribuimit, për të kryer klasterizimin e përdoruesve ose për të ndërtuar një dashboard në një sistem tjetër BI. Kryerja e këtij procesi është e mundur vetëm me të dhënat e papërpunuara të ngjarjeve nga Amplitude. Në këtë artikull do të diskutojmë se si të merrni këto të dhëna me njohuri minimale në programim.

Kërkesat paraprake

  1. Një projekt në Amplitude, ku ngjarjet tashmë janë konfigurur siç duhet dhe grumbullohen statistika
  2. Python i instaluar (punoj me versionin 3.8.3), me të cilin lexuesi potencial tashmë di të punojë të paktën në një nivel bazik

Udhëzimi

Hapi 1. Marrja e API-key dhe secret-key

Për të eksportuar të dhënat, fillimisht duhet të merrni API-key dhe secret-key.

Ishin të mundur për t'u gjetur duke kaluar nëpër këtë rrugë:

  1. «Menaxho të dhënat» (ndodhet në pjesën e poshtme të majtë të ekranit)
  2. Zgjidhni projektin e nevojshëm, nga i cili do të eksportohen të dhënat, dhe kaloni te ai
  3. Në menu-në e hapur të projektit zgjidhni «Cilësimet e projektit»
  4. Gjejmë rreshtat API-key dhe secret-key, i kopjojmë dhe i ruajmë në një vend të sigurt.

Pa pa klikimeve, mund të kaloni në lidhjen, e cila në përgjithësi duket kështu:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
ku $$$$$$ është identifikuesi i organizatës tuaj në amplitude, ****** — numri i projektit

Hapi 2. Kontrollimi i pranisë së bibliotekave të nevojshme

Lajmi i mirë është se këto biblioteka shumë gjasa janë tashmë të instaluara si default ose të shkarkuara, por është e nevojshme të kontrollohet. Lista e plotë e bibliotekave që unë përdora në momentin e shkruan artikullit (në prindhëra janë treguar versionet, kur është e përshtatshme):

  1. requests (2.10.0) - dërgimi i një kërkese përmes api për të marrë të dhënat
  2. pandas (1.0.1) — leximi i json, krijimi i dataframe dhe ruajtja e mëtejshme në skedar
  3. zipfile — nxjerrja e skedarëve nga arkivi, e cila u mor nga API
  4. gzip — shpërbërja e skedarëve json nga .gz
  5. os — marrja e listës së skedarëve nga arkivi i shpërbërë
  6. time — e opsionale, matja e kohës së punës së skriptit
  7. tqdm — e opsionale, për lehtësimin e vëzhgimit të progresit të përpunimit të skedarëve

Hapi 3. Shkrimi i skriptit për ngarkimin e të dhënave

Këshillë: skripti i plotë për ngarkim ndodhet në fund të artikullit, nëse dëshironi mund ta merrni menjëherë atë dhe të referoheni ose shpjegimeve hap pas hapi sipas nevojës.

Hapi 3.1. Importimi i bibliotekave

Importojmë të gjitha bibliotekat e listuara në hapin e dytë.

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

Hapi 3.2. Dërgimi i kërkesës në Amplitude

Regjistrojmë fillimin e ekzekutimit të skriptit dhe e ruajmë në variablën a.

startdate dhe enddate përcaktojnë periudhën për eksportimin e të dhënave dhe integrohen në tekstin e dërguar të kërkesës në server Amplitude, përveç datës, mund të specifikohet gjithashtu ora, duke ndryshuar vlerën pas ‘T’ në kërkesë.

api_key dhe secret_key korrespondon me vlerat e marra në hapin e parë, për arsye sigurie këtu citoj sekuenca të rastit në vend të mia.

a = time.time()
# Parametrat e datës fillestare dhe përfundimtare
startdate = '20200627'
enddate = '20200628'

api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# Dërgimi i kërkesës në Amplitude
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. Kërkesa është dërguar')

Hapi 3.3. Shkarkimi i arkivit me të dhëna

Krijojmë një emër për arkivin dhe e ruajmë në variablën filename. Për lehtësinë time, citoj periudhën + citoj që këto janë të dhëna nga amplitude. Pastaj regjistrojmë përgjigjen e marrë nga Amplitude në arkiv.

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

Hapi 3.4. Nxjerrja e skedarëve në dosjen në kompjuterin tuaj

Biblioteka zipfile hyn të aktivizohet, e cila do të ndihmojë në nxjerrjen e skedarëve. Në rreshtin e tretë, kini kujdes dhe shkruani rrugën tuaj, ku është më e përshtatshme për të realizuar nxjerrjen.

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

Hapi 3.5. Transformimi i json

Pas nxjerrjes së skedarëve nga arkivi, duhet të transformoni skedarët json, të cilët janë në formatin .gz dhe t'i regjistroni ata në dataframe për punë të mëtejshme.

Dua të theksoj se këtu duhet sërish të ndryshoni rrugën në tuajën, dhe në vend të 000000 të shkruani numrin tuaj të projektit nga Amplitude (ose të hapni manualisht rrugën ku është nxjerrë arkivi dhe të shihni emrin e dosjes brenda).

Sipas renditjes:

Regjistroni drejtorinë në një variabël, merrni listën e skedarëve nga drejtorinë, krijoni një dataframe bosh, time.sleep(1) për të siguruar funksionimin korrekt të tqdm, brenda ciklit hapim skedarët .gz dhe menjëherë me pandas lexojmë json dhe mbushim dataframe-in e caktuar.

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

Hapi 3.6. Regjistrimi i dataframe në excel

Nxjerrja në excel është këtu thjeshtë si një shembull. Në shumë raste është më e përshtatshme të punoni me kornizën e të dhënave të marra brenda python ose t'i ruani të dhënat në një depo.

Këtu gjithashtu duhet të ndryshoni rrugën e nxjerrjes së të dhënave me tuajën.

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

Hapi 3.7. Llogarisni kohën e punës së skriptit

Shënimi i kohës aktuale në variablën b, llogaritja e diferencës dhe numri i minutave, shpërndarja e minutave totale. Ky është hapi i fundit.

b = time.time()
diff = b-a
minutes = diff//60
print('Kohëzgjatja e ekzekutimit të kodit ishte: {:.0f} minut(ë)'.format(minutes))

Përfundimi

Për të thirrur tabelën dhe për të filluar punën me të, mund të thirrni variablën amplitude_dataframe, në të cilën janë regjistruar të dhënat. Në të ka rreth 50 kolona, nga të cilat në 80% të rasteve do të përdorni: event_type — emri i ngjarjes, event_properties — parametrit e ngjarjes, event_time — koha e ngjarjes, uuid — id e klientit, user_properties — parametrat e klientit, është më mirë të filloni punën fillimisht me to. Dhe kur krahasoni shifrat nga llogaritjet tuaja me treguesit nga tabelat Amplitude, nuk duhet të harroni që sistemi përdor metodologjinë e tij për llogaritjen e klientëve të veçantë/punëve etj., dhe para kësaj duhet patjetër të njiheni me dokumentacionin Amplitude.

Faleminderit për vëmendjen! Tani mund të nxirrni të dhënat e papërpunuara rreth ngjarjeve në Amplitude dhe t'i përdorni ato plotësisht në punën tuaj.

I gjithë skripti:

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

Burimi: habr.com

Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë 🔥 Bli një hosting të besueshëm për faqet me mbrojtje DDoS, VPS VDS serverë | ProHoster