Haetaan amplituditietoja API:n kautta

Esittely

Amplitudi on osoittautunut erittäin hyvin tuoteanalytiikkatyökaluksi helpon tapahtumien asennuksen ja visualisoinnin joustavuuden ansiosta. Ja usein on tarpeen määrittää oma attribuutiomallisi, ryhmitellä käyttäjiä tai rakentaa kojelauta toiseen BI-järjestelmään. Tällainen huijaus on mahdollista vain Amplitudin käsittelemättömällä tapahtumadatalla. Tässä artikkelissa kerrotaan, kuinka saada nämä tiedot minimaalisella ohjelmointitiedolla.

Edellytykset

  1. Projekti amplitudissa, jossa tapahtumat on jo määritetty oikein ja niistä kerätään tilastoja
  2. Python on asennettu (työskentelen versiossa 3.8.3), jonka kanssa potentiaalinen lukija voi jo käyttää ainakin perustasolla

Opetus

Vaihe 1. API-avaimen ja salaisen avaimen hankkiminen

Tietojen lataamista varten sinun on ensin hankittava API-avain ja salainen avain.

Löydät ne seuraamalla seuraavaa polkua:

  1. "Hallinnoi tietoja" (sijaitsee näytön vasemmassa alakulmassa)
  2. Valitse haluamasi projekti, josta tiedot ladataan, ja siirry siihen
  3. Valitse avautuvasta projektivalikosta ”Projektiasetukset”
  4. Löydämme API-avaimen ja salaisen avaimen merkkijonot, kopioimme ja tallennamme ne turvalliseen paikkaan.

Ilman napsautusta voit seurata linkkiä, joka näyttää yleensä tältä:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
missä $$$$$$ on organisaatiosi amplituditunnus, ****** on projektin numero

Vaihe 2: Vaadittujen kirjastojen olemassaolon tarkistaminen

Hyvä uutinen on, että sinulla on melkein varmasti jo nämä kirjastot asennettuna tai ladattuina, mutta sinun on tarkistettava. Täydellinen luettelo kirjastoista, joita käytin kirjoittaessani (suluissa olevat versiot ilmoitetaan tarvittaessa):

  1. pyynnöt (2.10.0) - pyynnön lähettäminen api:n kautta vastaanottaa tietoja
  2. pandas (1.0.1) - lukee json-tiedostoa, luo datakehyksen ja kirjoittaa sitten tiedostoon
  3. zipfile - pura tiedostoja API:n kautta vastaanotetusta arkistosta
  4. gzip - json-tiedostojen purkaminen .gz-tiedostosta
  5. os - tiedostoluettelon saaminen pakkaamattomasta arkistosta
  6. aika - valinnainen, mittaa skriptin käyttöaika
  7. tqdm - valinnainen, helpottaa tiedostojen käsittelyn edistymisen seurantaa

Vaihe 3. Tietojen latauskomentosarjan kirjoittaminen

Vihje: koko latausskripti on artikkelin lopussa, voit halutessasi ottaa sen heti ja katsoa tarvittaessa vaiheittaisia ​​selityksiä.

Vaihe 3.1. Kirjastojen tuonti

Tuomme kaikki toisessa vaiheessa luetellut kirjastot.

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

Vaihe 3.2. Pyynnön lähettäminen Amplitudelle

Tunnistataan komentosarjan suorituksen alku ja kirjoitetaan se muuttujaan a.

startdate ja enddate vastaavat datan latausjaksosta ja ovat sisäänrakennettu amplitudipalvelimelle lähetetyn pyynnön tekstiin; päivämäärän lisäksi voit määrittää myös tunnin muuttamalla pyynnössä T:n jälkeen olevaa arvoa.

api_avain ja salainen_avain vastaavat ensimmäisessä vaiheessa saatuja arvoja; turvallisuussyistä määritän tässä satunnaisia ​​sarjoja omani sijaan.

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

Vaihe 3.3. Dataa sisältävän arkiston lataaminen

Keksimme arkistolle nimen ja kirjoitamme sen tiedostonimimuuttujaan. Mukavuussyistä osoitan ajanjakson + ilmaisen, että tämä on amplituditietoja. Seuraavaksi tallennamme vastaanotetun vastauksen Amplitudista arkistoon.

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

Vaihe 3.4. Tiedostojen hakeminen tietokoneen kansiosta

Zipfile-kirjasto tulee peliin tiedostojen purkamisen helpottamiseksi. Kolmannella rivillä ole varovainen ja kirjoita polkusi sinne, missä se on sinulle helpompaa poimia.

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

Vaihe 3.5. json-muunnos

Kun olet purkanut tiedostot arkistosta, sinun on muunnettava json-tiedostot .gz-muotoon ja kirjoitettava ne tietokehykseen jatkotyötä varten.

Huomaa, että tässä sinun on vaihdettava polku uudelleen omaksesi ja kirjoitettava 000000:n sijaan projektinumerosi Amplitudesta (tai avaa polku manuaalisesti, josta arkisto purettiin ja katso kansion nimi).

Järjestyksessä:

Hakemiston kirjoittaminen muuttujaan, tiedostoluettelon saaminen hakemistosta, tyhjän datakehyksen luominen, time.sleep(1), jotta tqdm toimisi oikein, silmukan sisällä avaamme .gz-tiedostot ja käytämme välittömästi pandaa jsonin lukemiseen ja täyttöön. annettu tietokehys.

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

Vaihe 3.6. Datakehyksen kirjoittaminen excelissä

Lataaminen Exceliin on vain esimerkki tästä. Monissa tapauksissa on kätevämpää työskennellä tuloksena olevan tietokehyksen kanssa pythonissa tai laittaa tiedot tallennustilaan.

Sinun on myös korvattava täällä oleva tietojen latauspolku omallasi.

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

Vaihe 3.7. Laskemme käsikirjoituksen suoritusajan

Nykyisen ajan kirjaaminen muuttujaan b, eron ja minuuttien lukumäärän laskeminen, kokonaisminuuttien näyttäminen. Tämä on viimeinen vaihe.

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

Johtopäätös

Voit kutsua taulukkoa ja aloittaa työskentelyn sen kanssa kutsumalla amplitude_dataframe-muuttujaa, johon tiedot kirjoitettiin. Siinä on noin 50 saraketta, joista 80 %:ssa tapauksista käytät: event_type - tapahtuman nimi, tapahtuman_ominaisuudet - tapahtumaparametrit, tapahtuman_aika - tapahtuman aika, uuid - asiakastunnus, user_properties - asiakasparametrit, sinun tulee aloittaa työskentely niiden kanssa ensin. . Ja kun vertaat omien laskelmiesi lukuja Amplitudi-kojelaudan indikaattoreihin, älä unohda, että järjestelmä käyttää omaa menetelmäänsä yksilöllisten asiakkaiden/suppiloiden jne. laskemiseen, ja ennen kuin teet tämän, sinun tulee ehdottomasti lukea amplitudidokumentaatio.

Kiitos huomiostasi! Nyt voit ladata raakatapahtumadataa Amplitudeen ja käyttää sitä täysimääräisesti työssäsi.

Koko käsikirjoitus:

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

Lähde: will.com

Lisää kommentti