Amplituudi andmete hankimine API kaudu

Sissejuhatus

Amplituud on end tooteanalüüsi tööriistana väga hästi tõestanud tänu oma lihtsale sündmuste seadistamisele ja visualiseerimise paindlikkusele. Ja sageli on vaja seadistada oma omistamismudel, koondada kasutajad või luua armatuurlaud mõnes teises BI-süsteemis. Sellist pettust on võimalik teostada ainult amplituudi sündmuste töötlemata andmetega. See artikkel räägib teile, kuidas neid andmeid minimaalsete programmeerimisalaste teadmistega hankida.

Eeldused

  1. Projekt amplituudis, milles sündmused on juba õigesti konfigureeritud ja nende kohta kogutakse statistikat
  2. Python on installitud (töötan versioonis 3.8.3), millega potentsiaalne lugeja saab juba vähemalt algtasemel töötada

Juhendamine

Samm 1. API-võtme ja salajase võtme hankimine

Andmete üleslaadimiseks peate esmalt hankima API võtme ja salajase võtme.

Need leiate järgmiselt teed pidi:

  1. „Andmete haldamine” (asub ekraani vasakus alanurgas)
  2. Valige soovitud projekt, millest andmed alla laaditakse, ja minge selle juurde
  3. Avanevas projektimenüüs valige "Projekti sätted"
  4. Leiame API-võtme ja salajase võtme stringid, kopeerime ja salvestame need kindlasse kohta.

Ilma klõpsamata saate jälgida linki, mis üldiselt näeb välja selline:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
kus $$$$$$ on teie organisatsiooni amplituudiga sisselogimine, ****** on projekti number

2. samm: kontrollige vajalike teekide olemasolu

Hea uudis on see, et teil on need teegid peaaegu kindlasti juba vaikimisi installitud või alla laaditud, kuid peate kontrollima. Täielik nimekiri raamatukogudest, mida ma kirjutamise ajal kasutasin (sulgudes olevad versioonid on vajaduse korral märgitud):

  1. päringud (2.10.0) - päringu saatmine api kaudu andmete saamiseks
  2. pandas (1.0.1) – jsoni lugemine, andmeraami loomine ja seejärel faili kirjutamine
  3. zipfile – API kaudu saadud arhiivist failide ekstraktimine
  4. gzip – Json-failide lahtipakkimine failist .gz
  5. os - failide loendi hankimine lahtipakkitud arhiivist
  6. aeg – valikuline, mõõta skripti tööaega
  7. tqdm – valikuline, failide töötlemise edenemise hõlpsaks jälgimiseks

Samm 3. Andmete laadimise skripti kirjutamine

Vihje: täielik allalaadimisskript on artikli lõpus, soovi korral võite selle kohe kätte võtta ja vajadusel vaadata samm-sammult selgitusi.

Samm 3.1. Teekide importimine

Impordime kõik teises etapis loetletud teegid.

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

Samm 3.2. Taotluse esitamine Amplitude'ile

Tuvastame skripti täitmise alguse ja kirjutame selle muutujasse a.

startdate ja enddate vastutavad andmete allalaadimise perioodi eest ning on sisse ehitatud amplituudiserverile saadetud päringu teksti sisse, lisaks kuupäevale saab määrata ka tunni, muutes päringus 'T' järel olevat väärtust.

api_key ja secret_key vastavad esimeses etapis saadud väärtustele; turvakaalutlustel määran siin omaenda asemel juhuslikud järjestused.

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

Samm 3.3. Andmetega arhiivi allalaadimine

Mõtleme arhiivile välja nime ja kirjutame selle failinime muutujasse. Mugavuse huvides märgin perioodi + näitan, et tegemist on amplituudiandmetega. Järgmisena salvestame Amplituudilt 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 allalaadimine arvuti kaustast

Failide ekstraktimiseks tuleb mängu ZIP-failide teek. Kolmandale reale olge ettevaatlik ja kirjutage üles oma tee, kus teil on mugavam välja tõmmata.

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

Samm 3.5. jsoni teisendamine

Pärast failide arhiivist väljavõtmist peate json-failid teisendama .gz-vormingusse ja kirjutama need edasiseks tööks andmeraami.

Pange tähele, et siin peate muutma tee uuesti enda omaks ja 000000 asemel kirjutage oma projekti number amplituudist (või avage käsitsi tee, kust arhiiv ekstraktiti, ja vaadake sees oleva kausta nime).

Korras:

Kataloogi kirjutamine muutujasse, failide loendi hankimine kataloogist, tühja andmeraami loomine, time.sleep(1), et tqdm töötaks õigesti, tsükli sees avame .gz failid ja kasutame kohe pandasid jsoni lugemiseks ja täitmiseks antud andmeraami.

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

Samm 3.6. Andmeraami kirjutamine Excelis

Excelisse üleslaadimine on siin vaid näide. Paljudel juhtudel on mugavam töötada saadud andmeraamiga pythoni sees või panna andmed hoiule.

Samuti peate siin asendama andmete üleslaadimise tee enda omaga.

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

Samm 3.7. Loeme skripti tööaega

Praeguse kellaaja salvestamine muutujasse b, vahe ja minutite arvu arvutamine, koguminutite kuvamine. See on viimane samm.

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

Järeldus

Saate helistada tabelile ja alustada sellega töötamist, kutsudes välja muutuja amplitude_dataframe, millesse andmed kirjutati. Sellel on umbes 50 veergu, millest 80% juhtudest kasutate: sündmuse_tüüp - sündmuse nimi, sündmuse_omadused - sündmuse parameetrid, sündmuse_aeg - sündmuse aeg, uuid - kliendi ID, user_properties - kliendi parameetrid, nendega peaksite kõigepealt töötama. . Ja kui võrrelda enda tehtud arvutusi Amplitude armatuurlaudade näitajatega, siis ei tohi unustada, et süsteem kasutab unikaalsete klientide/lehtrite jms arvutamiseks oma metoodikat ning enne seda tuleks kindlasti tutvuda amplituudi dokumentatsiooniga.

Täname tähelepanu eest! Nüüd saate sündmuste töötlemata andmed üles laadida rakendusse Amplitude 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+'
# Импорт библиотек
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))

Allikas: www.habr.com

Lisa kommentaar