Úvod
Amplitude sa veľmi dobre osvedčila ako nástroj na analýzu produktov vďaka jednoduchému nastaveniu udalostí a flexibilite vizualizácie. A často je potrebné nastaviť si vlastný atribučný model, klastrových používateľov alebo zostaviť dashboard v inom systéme BI. Takýto podvod je možné vykonať iba s nespracovanými údajmi o udalosti z Amplitude. Tento článok vám povie, ako získať tieto údaje s minimálnymi znalosťami programovania.
Predpoklady
- Projekt v Amplitude, v ktorom sú udalosti už správne nakonfigurované a zhromažďujú sa o nich štatistiky
- Je nainštalovaný Python (pracujem vo verzii 3.8.3), s ktorým už môže potenciálny čitateľ pracovať aspoň na základnej úrovni
Inštrukcie
Krok 1. Získanie kľúča API a tajného kľúča
Ak chcete nahrať údaje, musíte najskôr získať kľúč API a tajný kľúč.
Môžete ich nájsť podľa nasledujúcej cesty:
- „Spravovať údaje“ (nachádza sa v ľavej dolnej časti obrazovky)
- Vyberte požadovaný projekt, z ktorého sa budú sťahovať údaje, a prejdite naň
- V ponuke projektu, ktorá sa otvorí, vyberte „Nastavenia projektu“
- Nájdeme reťazce kľúčov API a tajných kľúčov, skopírujeme ich a uložíme na bezpečné miesto.
Bez kliknutia môžete nasledovať odkaz, ktorý vo všeobecnosti vyzerá takto:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
kde $$$$$$ je prihlasovacie meno vašej organizácie, ****** je číslo projektu
Krok 2: Kontrola prítomnosti požadovaných knižníc
Dobrou správou je, že takmer určite už máte tieto knižnice predvolene nainštalované alebo stiahnuté, ale musíte to skontrolovať. Úplný zoznam knižníc, ktoré som používal v čase písania (verzie v zátvorkách sú uvedené tam, kde je to vhodné):
- requesty (2.10.0) - odoslanie požiadavky cez api na príjem dát
- pandas (1.0.1) - čítanie json, vytvorenie dátového rámca a následný zápis do súboru
- zipfile - extrahuje súbory z archívu prijatého cez API
- gzip - rozbalenie súborov json z .gz
- os - získanie zoznamu súborov z rozbaleného archívu
- čas - voliteľné, zmerajte čas behu skriptu
- tqdm - voliteľné, pre jednoduché sledovanie priebehu spracovania súborov
Krok 3. Napísanie skriptu na načítanie údajov
Tip: celý skript na stiahnutie je na konci článku; ak chcete, môžete si ho okamžite vziať a v prípade potreby si pozrieť vysvetlenia krok za krokom.
Krok 3.1. Importovanie knižníc
Importujeme všetky knižnice uvedené v druhom kroku.
# Импорт библиотек
import requests
import pandas as pd
import zipfile
import gzip
import os
import time
import tqdm
from tqdm import tqdm
Krok 3.2. Odoslanie požiadavky spoločnosti Amplitude
Zistime začiatok vykonávania skriptu a zapíšme ho do premennej a.
Počiatočný dátum a koncový dátum zodpovedajú za obdobie sťahovania údajov a sú vložené do textu odoslanej požiadavky. server Amplitúda, okrem dátumu môžete zadať aj hodinu zmenou hodnoty za „T“ v požiadavke.
api_key a secret_key zodpovedajú hodnotám získaným v prvom kroku; z bezpečnostných dôvodov tu uvádzam náhodné sekvencie namiesto svojich vlastných.
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. Запрос отправлен')
Krok 3.3. Sťahovanie archívu s údajmi
Vymyslíme názov archívu a zapíšeme ho do premennej názvu súboru. Pre moje pohodlie uvádzam bodku + označujem, že ide o údaje o amplitúde. Ďalej zaznamenáme prijatú odpoveď z Amplitude do archívu.
# Скачивание архива с данными
filename = 'period_since'+startdate+'to'+enddate+'_amplitude_data'
with open(filename + '.zip', "wb") as code:
code.write(response.content)
print('2. Архив с файлами успешно скачан')
Krok 3.4. Obnovenie súborov z priečinka v počítači
Do hry vstupuje knižnica zipfile, ktorá pomáha extrahovať súbory. V treťom riadku buďte opatrní a napíšte si cestu, kde je pre vás výhodnejšie extrahovať.
# Извлечение файлов в папку на компьютере
z = zipfile.ZipFile(filename + '.zip', 'r')
z.extractall(path = 'C:\Users\...\'+filename)
print('3. Архив с файлами извлечен и записан в папку ' + filename)
Krok 3.5. konverzia json
Po extrahovaní súborov z archívu je potrebné previesť súbory json do formátu .gz a zapísať ich do dátového rámca pre ďalšiu prácu.
Upozorňujeme, že tu musíte znova zmeniť cestu na svoju vlastnú a namiesto 000000 napísať číslo projektu z Amplitude (alebo manuálne otvoriť cestu, kde bol archív extrahovaný, a pozrieť sa na názov priečinka vo vnútri).
V poradí:
Zápis adresára do premennej, získanie zoznamu súborov z adresára, vytvorenie prázdneho dátového rámca, time.sleep(1) aby tqdm fungoval správne, vo vnútri slučky otvárame súbory .gz a okamžite používame pandy na čítanie json a vyplnenie daný dátový rámec.
# Преобразование 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')
Krok 3.6. Zápis dátového rámca v exceli
Nahranie do excelu je tu len príkladom. V mnohých prípadoch je pohodlnejšie pracovať s výsledným dátovým rámcom v pythone alebo uložiť dáta do úložiska.
Tu budete tiež musieť nahradiť cestu nahrávania údajov vlastnou.
# Записать полученной таблицы в Excel-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)
Krok 3.7. Počítame čas chodu skriptu
Záznam aktuálneho času do premennej b, výpočet rozdielu a počtu minút, zobrazenie celkových minút. Toto je posledný krok.
b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))
Záver
Tabuľku môžete zavolať a začať s ňou pracovať volaním premennej amplitúda_dataframe, do ktorej boli dáta zapísané. Bude mať asi 50 stĺpcov, z toho v 80% prípadov použijete: event_type - názov udalosti, event_properties - parametre udalosti, event_time - čas udalosti, uuid - id klienta, user_properties - parametre klienta, mali by ste s nimi začať pracovať ako prvé . A pri porovnávaní údajov z vlastných výpočtov s ukazovateľmi z dashboardov Amplitude nesmiete zabúdať, že systém používa vlastnú metodiku na výpočet jedinečných klientov/lievikov atď., a pred tým by ste si mali určite prečítať dokumentáciu Amplitude.
Ďakujem za tvoju pozornosť! Teraz môžete nahrať nespracované dáta udalostí do Amplitude a plne ich využiť vo svojej práci.
Celý 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))
Zdroj: hab.com
