Sissejuhatus
Amplitude tooteanalüütika tööriist on end hästi tõestanud, pakkudes lihtsat sündmuste seadistamist ja paindlikke visualiseerimise võimalusi. Tihti tekib vajadus luua oma atributsioonimudel, teha kasutajate klasterdamist või luua juhtpaneel teises BI-süsteemis. Sellise manipuleerimise teostamiseks on vajalik toorete andmete olemasolu Amplitudist. Käesolevas artiklis käsitleme, kuidas neid andmeid saada minimaalsete programmeerimisoskustega.
Eeltingimus
- Projekt Amplitudes, kus sündmused on juba korrektselt seadistatud ja mille kohta kogutakse statistikat
- Installitud on Python (kasutan versiooni 3.8.3), millega potentsiaalne lugeja oskab vähemalt põhi tasemel töötada
Juhend
Samm 1. API-võtme ja salajase võtme saamine
Andmete eksportimiseks tuleb kõigepealt saada API-võti ja salajane võti.
Neid saab leida, minnes järgmise tee kaudu:
- „Manage data“ (asub ekraani vasakus alumises nurgas)
- Valime vajaliku projekti, kust andmed eksporteeritakse, ja läheme sinna
- Avanenud projekti menüüs valime „Project settings“
- Otsime üles ridadest API-võti ja salajane võti, kopeerime ja salvestame need turvalisse kohta.
Ilma klikkimata saab minna lingile, mis üldiselt näeb välja järgmiselt:
analytics.amplitude.com/$$$$$$$/manage/project/*******/settings,
kus $$$$$$$ on teie organisatsiooni sisse logimise nimi amplituudis, ****** on projekti number
Samm 2. Vajalikud teegid kontrollimine
Hea uudis on, et need teegid on peaaegu kindlasti teil juba vaikimisi installitud või allalaaditud, kuid tasub kontrollida. Kõikide kasutatavate teede täielik loetelu artikli kirjutamise hetkel (parandatud versioonid on märgitud sulgudes, kui need on asjakohased):
- requests (2.10.0) - päringu saatmine API kaudu andmete saamiseks
- pandas (1.0.1) - json-i lugemine, dataframe'i loomine ja sellele järgneva salvestamine faili
- zipfile - failide väljavõttemine arhivist, mis on saadud API kaudu
- gzip - json-failide dekompressioon .gz-formaadis
- os - failide loendi saamine dekompresseeritud arhivist
- time - valikuline, skripti tööaja mõõtmiseks
- tqdm - valikuline, et jälgida failide töötlemise edenemist mugavamalt
Samm 3. Andmete laadimise skripti kirjutamine
Näpunäide: täielik laadimisskript asub artikli lõpus, soovi korral saate selle kohe võtta ja vajadusel suunata samm-sammulistele selgitustele.
Samm 3.1. Teegide importimine
Toome impordime kõik raamatukogud, mis on loetletud teisel sammul.
# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
Samm 3.2. Päringu esitamine Amplitude'ile
Märkime skripti käivitamise alguse ja salvestame muutuja a.
startdate ja enddate määravad perioodi andmete eksportimiseks ja need sisaldavad saadetava päringu tekstis. server Amplitude's lisaks kuupäevale saab samuti määrata kellaaja, muutes väärtust pärast 'T' päringus.
api_key ja secret_key vastavad esimesel sammul saadud väärtustele, turvalisuse kaalutlustel jagan siin juhuslikke järjestusi oma väärtuste asemel.
a = time.time()
# Algus- ja lõppkuupäeva parameetrid
startdate = '20200627'
enddate = '20200628'
api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# Päringu esitamine Amplitude'ile
response = requests.get('https://amplitude.com/api/2/export?start=' + startdate + 'T0&end=' + enddate + 'T0', auth = (api_key, secret_key))
print('1. Päring on esitatud')
Samm 3.3. Andmete arhiivi allalaadimine
Mõtleme välja arhiivi nime ja salvestame selle muutujasse filename. Oma mugavuse huvides märkige periood + kirjutage, et need on Amplitude'i andmed. Seejärel salvestame Amplitude'ilt saadud vastuse arhiivi.
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')
Samm 3.4. Failide väljavõtmine arvuti kaustas
Siia tuleb zipfile raamatukogu, mis aitab failide väljavõtmisel. Kolmandas reas olge ettevaatlik ja kirjutage oma tee, kuhu teile on mugavam väljavõtmine teha.
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
Samm 3.5. json'i muutmine
Pärast failide arhiivist väljavõtmist tuleb muuta .gz formaadis json failid ja salvestada need dataframe'i edasiseks töötlemiseks.
Pööran tähelepanu sellele, et siin tuleb jälle oma tee muuta ja 000000 asemel kirjutada oma Amplitude'i projekti number (või avada käsitsi tee, kuhu arhiiv väljavõeti, ja vaadata kausta nime sees).
Järjestuse järgi:
Kirjutage kataloog muutuja, hankige failide loend kataloogist, looge tühi dataframe, time.sleep(1) korrektseks tqdm tööks, tsükli sees avame .gz failid ja loeme pandas'i abil kohe json'i ja täidame määratud dataframe'i.
# Преобразование 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')
Samm 3.6. Dataframe'i salvestamine excelisse
Excelisse eksportimine on siin lihtsalt näitena. Paljudes juhtudes on mugavam töötada saadud andmetega pythonis või koguda andmed ladustamisse.
Siin tuleb ka andmete eksportimise tee muuta oma omaks.
# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)
Samm 3.7. Loendame skripti tööaja
Salvestame praeguse aja muutuja b, arvutame erinevuse ja minutite arvu, väljastame lõpptulemuse minutites. See on viimane samm.
b = time.time()
diff = b-a
minutes = diff//60
print('Koodi täitmine võttis aega: {:.0f} minutit'.format(minutes))
Kokkuvõte
Tabelit saab kutsuda ja sellega töötama asuda, kutsudes muutuja amplitude_dataframe, kuhu andmed on salvestatud. Sellest leiate umbes 50 veergu, millest 80% juhtudel kasutate: event_type — sündmuse nimi, event_properties — sündmuse parameetrid, event_time — sündmuse aeg, uuid — kliendi id, user_properties — kliendi parameetrid. Alustage esialgu nendega. Ja võrreldes oma arvutuste tulemusi Amplitudei armatuurlaualt saadud näitajatega, ei tohi unustada, et süsteem kasutab oma unikaalsete klientide/propellerite jne arvutamise metoodikat, ja enne seda tuleb kindlasti tutvuda Amplitude dokumentatsiooniga.
Aitäh tähelepanu eest! Nüüd saate Amplitude'is sündmuste toorandmeid eksportida ja neid oma töös täielikult kasutada.
Kogu skript:
# Импорт библиотек
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))
Allikas: habr.com
