Adatok lekérése az Amplitude API-n keresztül

Bevezetés

Az Amplitude mint termékelemzési eszköz kiválóan teljesített az események egyszerű beállítása és a vizualizációk rugalmassága miatt. Gyakran felmerül az igény, hogy létrehozzuk a saját attribúciós modellünket, felhasználói klaszterezést végezzünk, vagy egy másik BI rendszerben készítsünk irányítópultot. Ilyen műveletek végrehajtásához azonban nyers eseményadatokra van szükség az Amplitudeból. Arról, hogy miként lehet ezeket az adatokat minimalis programozási ismeretekkel megszerezni, ebben a cikkben lesz szó.

Előfeltétel

  1. Egy Amplitude projekt, amelyben már helyesen be vannak állítva az események, és ezekről statisztikai adatokat gyűjt.
  2. Telepítve van a Python (3.8.3 verzióval dolgozom), amelyet a potenciális olvasó legalább alapszinten már ismer.

Az útmutató

1. lépés: API-kulcs és secret-kulcs beszerzése

Az adatok exportálásához először is meg kell szerezni az API-kulcsot és a secret-kulcsot.

Ezeket az alábbi úton találhatjuk meg:

  1. „Manage data” (a bal alsó sarokban található)
  2. Válassza ki a kívánt projektet, amelyből az adatokat exportálni szeretné, majd lépjen be.
  3. A projekt megnyíló menüjében válassza a „Project settings” lehetőséget.
  4. Keresse meg az API-kulcs és secret-kulcs sorokat, másolja ki és tárolja biztonságos helyen.

Kattintás nélkül is át lehet lépni a következő hivatkozásra, amely általános formában így néz ki:
analytics.amplitude.com/$$$$$$$ /manage/project/****** /settings,
ahol $$$$$$$ a szervezetének bejelentkezési neve az amplitudeba, ****** pedig a projekt száma.

2. lépés: A szükséges könyvtárak ellenőrzése

Jó hír, hogy ezek a könyvtárak majdnem biztosan már telepítve vannak önnél alapértelmezetten, vagy letöltve, de ellenőrizni szükséges. Az általam használt könyvtárak teljes listája a cikk írásának időpontjában (zárójelben a megfelelő verziók):

  1. requests (2.10.0) - kérés küldése az api-n keresztül az adatok megszerzésére.
  2. pandas (1.0.1) - json olvasása, dataframe létrehozása és az utána fájlba írás.
  3. zipfile - fájlok kicsomagolása az API-n keresztül kapott archívumból.
  4. gzip - json fájlok kicsomagolása .gz-ből.
  5. os - fájllista megszerzése a kicsomagolt archívumból.
  6. time - nem kötelező, a szkript futási idejének mérése.
  7. tqdm - nem kötelező, a fájlok feldolgozásának előrehaladásának kényelmes megfigyelésére.

3. lépés: Az adatok betöltéséhez szükséges szkript írása.

Tipp: A betöltési szkript teljes szövege a cikk végén található, igény esetén azonnal átveheti, és szükség esetén a lépésről lépésre magyarázatokhoz fordulhat.

3.1 lépés: A könyvtárak importálása

Minden könyvtár importálása, amely a második lépésben szerepel.

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

3.2. lépés. Kérés küldése az Amplitude-nak

Megmérjük a szkript futásának kezdetét, és eltároljuk az 'a' változóba.

A startdate és enddate a számadatok exportálásának időszakát határozza meg, és beépül a kérés szövegébe. szerver Az Amplitude-nál a dátum mellett az órát is megadhatjuk, a 'T' utáni érték módosításával a kérésben.

Az api_key és secret_key az első lépésben kapott értékeknek felelnek meg, biztonsági okokból itt véletlenszerű sorozatokat adok meg a sajátjaim helyett.

a = time.time()
# Kezdő és befejező dátum paraméterei
startdate = '20200627'
enddate = '20200628'

api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# Kérés küldése az Amplitude-nak
response = requests.get('https://amplitude.com/api/2/export?start='+startdate+'T0&end='+enddate+'T0', auth = (api_key, secret_key))
print('1. A kérés elküldve')

3.3. lépés. Az adatok archívumának letöltése

Kitalálunk egy nevet az archívumnak, és eltároljuk a 'filename' változóba. Saját kényelmünk érdekében megadjuk az időszakot + megadjuk, hogy az Amplitude adatainak letöltése történt. Ezt követően eltároljuk az Amplitude-tól kapott választ az archívumban.

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

3.4. lépés. Fájlok kicsomagolása a számítógépen található mappába

A zipfile könyvtár segít a fájlok kicsomagolásában. A harmadik sorban figyeljünk és adjuk meg a saját útvonalunkat, ahová a kicsomagolást szeretnénk végezni.

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

3.5. lépés. JSON átalakítása

A fájlok archívumból való kicsomagolása után a .gz formátumban lévő JSON fájlokat át kell alakítanunk, és be kell töltenünk őket egy dataframe-be a további feldolgozáshoz.

Felhívom a figyelmet arra, hogy itt újra módosítani kell az útvonalat a sajátunkra, és a 000000 helyett be kell írni a saját Amplitude projekt számunkat (vagy manuálisan meg kell nyitni az archívum kicsomagolt mappáját, és megnézni a mappa nevét).

A sorrend szerint:

A könyvtár eltárolása a változóban, fájllista lekérdezés a könyvtárból, üres dataframe létrehozása, time.sleep(1) a tqdm megfelelő működése érdekében, a cikluson belül .gz fájlok megnyitása és azonnali pandassal JSON olvasása, és a megadott dataframe feltöltése.

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

3.6. lépés. DataFrame exportálása Excel-be

Az Excel-be történő exportálás itt egyszerűen példa. Sok esetben kényelmesebb a kapott adatkerettel dolgozni Pythonon belül, vagy az adatokat tárolóba helyezni.

Az adatkiadás útvonalát is a sajátunkra kell módosítani.

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

3.7. lépés. A szkript futási idejének számítása

A jelenlegi idő eltárolása a 'b' változóba, a különbség és a percek számának kiszámítása, a perc végső kiíratása. Ez az utolsó lépés.

b = time.time()
diff = b-a
minutes = diff//60
print('A kód futása: {:.0f} perc(ig) tartott'.format( minutes))

Zárás

A táblázat meghívásához és annak használatához először hívja meg az amplitude_dataframe változót, amelyben az adatok rögzítve lettek. Ebben körülbelül 50 oszlop található, amelyek 80%-ában a következőket fogja használni: event_type — az esemény neve, event_properties — az esemény paraméterei, event_time — az esemény időpontja, uuid — az ügyfél azonosítója, user_properties — az ügyfél paraméterei, érdemes elsőként ezekkel kezdeni a munkát. Az Amplitude saját módszertanát alkalmazza az egyedi ügyfelek/lefutásaik kiszámításához, így összehasonlításkor nem szabad elfelejteni, hogy a saját kalkulációk számadatait az Amplitude irányítópultjának mutatóihoz mérjük, és mindenképpen meg kell ismerkedni a dokumentációval.

Köszönjük a figyelmet! Most már exportálhatja az események nyers adatait az Amplitudeból, és teljes mértékben használhatja azokat a munkájában.

Az egész szkript:

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

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster