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

Hyrje

Amplitude si një mjet analitik për produktet ka treguar rezultate të shkëlqyera falë konfigurimit të thjeshtë të ngjarjeve dhe fleksibilitetit të vizualizimeve. Shpesh lind nevoja për të krijuar një model të vetin të atribucionit, të kryejmë një grumbullim të përdoruesve ose të ndjekim një tabelë në një sistem tjetër BI. Të realizosh një manipulim të tillë është e mundur vetëm duke pasur të dhëna të papërpunuara rreth ngjarjeve nga Amplitude. Si të merrni këto të dhëna me njohuri minimale të programimit do të përshkruhet në këtë artikull.

Parakusht

  1. Një projekt në Amplitude, ku ngjarjet janë konfiguruar saktë, dhe po mblidhen statistika për to.
  2. Për të instaluar python (punoj me versionin 3.8.3), me të cilin lexuesi i mundshëm tashmë duhet të dijë të punojë edhe në një nivel themelor.

Udhëzues

Hapi 1. Merrni API-key dhe secret-key.

Për të eksportuar të dhënat, së pari është e nevojshme të merrni API-key dhe secret-key.

Mund t'i gjeni duke kaluar nëpër këtë rrugë:

  1. «Menaxho të dhënat» (është në këndin e poshtëm të majtë të ekranit).
  2. Zgjidhni projektin e nevojshëm nga i cili do të eksportohen të dhënat, dhe kaloni në të.
  3. Në menunë e hapur të projektit, zgjidhni «Cilësimet e projektit».
  4. Gjeni rreshtat API-key dhe secret-key, kopjoni dhe ruani ato në një vend të sigurt.

Pa nevojën për të klikuar, mund të kaloni në lidhjen që në formën e përgjithshme duket kështu:
analytics.amplitude.com/$$$$$$$/menaxho/projekt/*******/cilësimet,
ku $$$$$$$ është emri i organizatës tuaj në amplitude, ****** është numri i projektit.

Hapi 2. Kontrolloni praninë e librarive të nevojshme.

Lajmi i mirë është se këto libra me shumë gjasa janë tashmë të instaluara në mënyrë standarde ose të shkarkuara, por duhet t'i kontrolloni. Lista e plotë e librarive që përdor përdoruesi në momentin e shkrimit të këtij artikulli (në kllapa janë versionet, ku është e nevojshme):

  1. requests (2.10.0) - dërgimi i një kërkese përmes API për marrjen e të dhënave.
  2. pandas (1.0.1) - leximi i json, krijimi i dataframe dhe shkarkimi më pas në një skedar.
  3. zipfile - nxjerrja e skedave nga arkiva, të marrë përmes API.
  4. gzip - nxjerrja e skedave json nga .gz.
  5. os - marrja e listës së skedave nga arkivi i nxjerrë.
  6. time - e opcional, matja e kohës së funksionimit të skriptit.
  7. tqdm - e opcional, për lehtësimin e vëzhgimit të përparimit në përpunimin e skedave.

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

Sugjerim: skripti i plotë i ngarkimit ndodhet në fund të artikullit, nëse dëshironi mund ta merrni menjëherë dhe të referoheni në shpjegimet hap pas hapi kur është e nevojshme.

Hapi 3.1. Importimi i librarive.

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

Do të regjistrojmë fillimin e ekzekutimit të skriptit dhe do ta ruajmë në variablin a.

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

api_key dhe secret_key korrespondrojnë me vlerat e marra në hapin e parë, për arsye sigurie këtu po tregoj sekuenca rastësore 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 e dërguar')

Hapi 3.3. Shkarkimi i arkivës me të dhëna

Mendoni një emër për arkivën dhe ruajeni në variablin filename. Për lehtësinë time, po specifikoj periudhën + po tregoj se kjo janë të dhënat e Amplitude. Më pas ruajmë përgjigjen e marra 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 e kompjuterit

Biblioteka zipfile vjen në ndihmë për të realizuar nxjerrjen e skedarëve. Në rreshtin e tretë, jini të kujdesshëm dhe shkruani rrugën tuaj, ku do t'ju jetë më lehtë të realizoni nxjerrjen.

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

Hapi 3.5. Transformimi i json

Pasi të nxjerrini skedaret nga arkiva, duhet të transformoni skedaret json, që ndodhen në format .gz dhe t'i registroni ato në dataframe për punë të mëtejshme.

Vërej se këtu duhet të ndërroni përsëri 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 u nxorr arkiva dhe të shihni emrin e dosjes brenda).

Sipas renditjes:

Regjistrimi i direktorisë në variablin, marrja e listës së skedarëve nga direktoria, krijimi i një dataframe bosh, time.sleep(1) për funksionimin e saktë të tqdm, brenda ciklit hapim skedarët .gz dhe menjëherë duke përdorur 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

Eksportimi në excel këtu është thjesht si një shembull. Në shumë raste është më e përshtatshme të punoni me dataframe-në e marrë brenda python ose të grumbulloni të dhënat në një depo.

Dhe rrugën e eksportimit të të dhënave këtu gjithashtu do të duhet ta ndërroni me tuajën.

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

Hapi 3.7. Llogaritja e kohës së funksionimit të skriptit

Regjistrimi i kohës aktuale në variablin b, llogaritja e diferencës dhe numri i minutave, shfaqja e minutave total. Ky është hapi përfundimtar.

b = time.time()
diff = b-a
minutes = diff//60
print('Koha e ekzekutimit të kodit zgjati: {:.0f} minuta(ë)'.format( minutes))

Përfundim

Për të thirrur tabelën dhe nisur punën me të, mund të thirreni variablin amplitude_dataframe, ku janë regjistruar të dhënat. Në të do të ketë rreth 50 kolona, nga të cilat në 80% të rasteve do të përdorni: event_type — emri i ngjarjes, event_properties — parametrat e ngjarjes, event_time — koha e ngjarjes, uuid — id e klientit, user_properties — parametrat e klientit, është mirë të filloni punën me ta. Dhe gjatë krahasimit të numrave nga llogaritjet tuaja me treguesit nga tabelat e Amplitude, nuk duhet të harroni se sistemi përdor metodologjinë e tij për llogaritjen e klientëve unikë/piramidave etj., dhe para kësaj është patjetër të njiheni me dokumentacionin e Amplitude.

Faleminderit për vëmendjen! Tani mund të eksportoni të dhënat e papërpunuara mbi ngjarjet në Amplitude dhe t’i përdorni ato 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

Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS 🔥 Blini hosting të besueshëm për faqe interneti me mbrojtje nga DDoS, serverë VPS VDS | ProHoster