Amplitudės duomenų gavimas per API

įvedimas

Amplitudė labai gerai pasitvirtino kaip produkto analizės įrankis dėl lengvo įvykių nustatymo ir vizualizacijos lankstumo. Ir dažnai reikia nustatyti savo priskyrimo modelį, sugrupuoti vartotojus arba sukurti informacijos suvestinę kitoje BI sistemoje. Tokį sukčiavimą galima atlikti tik naudojant neapdorotus įvykių duomenis iš Amplitudės. Šiame straipsnyje bus pasakyta, kaip gauti šiuos duomenis turint minimalias programavimo žinias.

Būtinos sąlygos

  1. Projektas amplitudėje, kuriame įvykiai jau tinkamai sukonfigūruoti ir apie juos renkama statistika
  2. Įdiegtas Python (dirbu 3.8.3 versijoje), su kuriuo potencialus skaitytojas jau gali dirbti bent jau pagrindiniu lygiu

Mokymas

1 veiksmas. API rakto ir slaptojo rakto gavimas

Norėdami įkelti duomenis, pirmiausia turite gauti API raktą ir slaptąjį raktą.

Juos galite rasti šiuo keliu:

  1. „Tvarkyti duomenis“ (esantis apatiniame kairiajame ekrano kampe)
  2. Pasirinkite norimą projektą, iš kurio bus atsisiunčiami duomenys, ir eikite į jį
  3. Atsidariusiame projekto meniu pasirinkite „Projekto nustatymai“
  4. Surandame API rakto ir slaptojo rakto eilutes, nukopijuojame ir išsaugome saugioje vietoje.

Nespustelėję galite sekti nuorodą, kuri paprastai atrodo taip:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
kur $$$$$$ yra jūsų organizacijos prisijungimo amplitudė, ****** yra projekto numeris

2 veiksmas: patikrinkite, ar yra reikiamų bibliotekų

Geros naujienos yra tai, kad jūs beveik neabejotinai jau turite šias bibliotekas įdiegtas arba atsisiųstas, bet turite patikrinti. Visas bibliotekų, kurias naudojau rašydamas, sąrašas (jei reikia, skliausteliuose nurodytos versijos):

  1. užklausos (2.10.0) – užklausos siuntimas per api gauti duomenis
  2. pandas (1.0.1) – json skaitymas, duomenų rėmelio kūrimas ir įrašymas į failą
  3. zipfile - išskleiskite failus iš archyvo, gauto per API
  4. gzip – json failų išpakavimas iš .gz
  5. os - failų sąrašo gavimas iš išpakuoto archyvo
  6. laikas – neprivaloma, išmatuokite scenarijaus veikimo laiką
  7. tqdm – neprivaloma, kad būtų lengva stebėti failų apdorojimo eigą

3 veiksmas. Duomenų įkėlimo scenarijaus rašymas

Užuomina: visas atsisiuntimo scenarijus yra straipsnio pabaigoje; jei norite, galite nedelsdami jį paimti ir, jei reikia, peržiūrėti nuoseklius paaiškinimus.

3.1 veiksmas. Bibliotekų importavimas

Importuojame visas antrame žingsnyje nurodytas bibliotekas.

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

3.2 veiksmas. Prašymo pateikimas Amplitudei

Nustatykime scenarijaus vykdymo pradžią ir įrašykime jį į kintamąjį a.

startdate ir enddate yra atsakingi už duomenų atsisiuntimo laikotarpį ir yra įmontuoti į amplitudės serveriui išsiųstos užklausos tekstą; be datos, taip pat galite nurodyti valandą, pakeisdami reikšmę po „T“ užklausoje.

api_key ir secret_key atitinka pirmame žingsnyje gautas reikšmes; saugumo sumetimais čia nurodysiu atsitiktines sekas, o ne savo.

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. Запрос отправлен')

3.3 veiksmas. Atsisiunčiamas archyvas su duomenimis

Mes sugalvojame archyvo pavadinimą ir įrašome jį į failo pavadinimo kintamąjį. Patogumui nurodysiu laikotarpį + nurodysiu, kad tai amplitudės duomenys. Tada gautą atsakymą iš Amplitudės įrašome į archyvą.

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

3.4 veiksmas. Failų nuskaitymas iš kompiuterio aplanko

„Zipfile“ biblioteka pradeda veikti, kad padėtų išskleisti failus. Trečioje eilutėje būkite atsargūs ir užsirašykite savo kelią, kur jums patogiau išgauti.

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

3.5 veiksmas. json konvertavimas

Ištraukę failus iš archyvo, turite konvertuoti json failus į .gz formatą ir įrašyti juos į duomenų rėmelį tolesniam darbui.

Atkreipkite dėmesį, kad čia reikia vėl pakeisti kelią į savo ir vietoj 000000 parašyti projekto numerį iš Amplitudės (arba rankiniu būdu atidaryti kelią, kuriame buvo ištrauktas archyvas, ir pažiūrėti viduje esančio aplanko pavadinimą).

Eilės tvarka:

Katalogo įrašymas į kintamąjį, failų sąrašo gavimas iš katalogo, tuščio duomenų rėmelio kūrimas, time.sleep(1), kad tqdm veiktų tinkamai, ciklo viduje atidarome .gz failus ir iš karto naudojame pandas, kad nuskaitytų json ir užpildytų nurodytą duomenų rėmelį.

# Преобразование json к обычному табличному формату
directory = 'C:\Users\...\'+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')
0000' 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 veiksmas. Duomenų rėmelio rašymas excel

Įkėlimas į „Excel“ yra tik pavyzdys. Daugeliu atvejų patogiau dirbti su gautu duomenų rėmeliu python viduje arba įdėti duomenis į saugyklą.

Čia taip pat turėsite pakeisti duomenų įkėlimo kelią savo.

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

3.7 veiksmas. Skaičiuojame scenarijaus vykdymo laiką

Esamo laiko įrašymas į kintamąjį b, skirtumo ir minučių skaičiaus apskaičiavimas, bendros minučių rodymas. Tai paskutinis žingsnis.

b = time.time()
diff = b-a
minutes = diff//60
print('Выполнение кода заняло: {:.0f} минут(ы)'.format( minutes))

išvada

Galite iškviesti lentelę ir pradėti su ja dirbti iškviesdami kintamąjį amplitude_dataframe, į kurį buvo įrašyti duomenys. Jame bus apie 50 stulpelių, iš kurių 80% atvejų naudosite: event_type – įvykio pavadinimas, event_properties – įvykio parametrai, event_time – įvykio laikas, uuid – kliento ID, user_properties – kliento parametrai, pirmiausia turėtumėte pradėti dirbti su jais . O lygindami skaičius iš savo skaičiavimų su rodikliais iš amplitudės prietaisų skydelių, nepamirškite, kad sistema naudoja savo metodiką unikalių klientų/piltuvėlių ir pan. apskaičiavimui, o prieš tai darydami būtinai perskaitykite amplitudės dokumentaciją.

Ačiū už dėmesį! Dabar galite įkelti neapdorotus įvykių duomenis į „Amplitude“ ir visapusiškai panaudoti juos savo darbe.

Visas scenarijus:

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

Šaltinis: www.habr.com

Добавить комментарий