It opheljen fan amplitudegegevens fia API

Ynlieding

Amplitude hat himsels heul goed bewiisd as in produktanalyse-ark troch syn maklike opset fan eveneminten en fleksibiliteit foar fisualisaasje. En faaks is d'r needsaak om jo eigen attribúsjemodel op te stellen, brûkers te clusteren, of in dashboard te bouwen yn in oar BI-systeem. It is allinich mooglik om sa'n fraude út te fieren mei rauwe evenemintgegevens fan Amplitude. Dit artikel sil jo fertelle hoe't jo dizze gegevens kinne krije mei minimale programmearkennis.

Betingsten

  1. In projekt yn Amplitude wêryn eveneminten al goed binne ynsteld en statistiken wurde sammele oer har
  2. Python is ynstalleare (ik wurkje yn ferzje 3.8.3), wêrmei de potensjele lêzer op syn minst op in basisnivo al kin wurkje

Ynstruksjes

Stap 1. It krijen fan API-kaai en geheime-kaai

Om gegevens te uploaden moatte jo earst in API-kaai en geheime kaai krije.

Jo kinne se fine troch it folgjende paad te folgjen:

  1. "Gegevens beheare" (linksûnder op it skerm)
  2. Selektearje it winske projekt wêrfan gegevens sille wurde ynladen en gean nei it
  3. Selektearje yn it projektmenu dat iepent "Projektynstellingen"
  4. Wy fine de API-kaai en geheime-kaai-strings, kopiearje en bewarje se op in feilich plak.

Sûnder te klikken kinne jo de keppeling folgje, dy't yn 't algemien der sa útsjocht:
analytics.amplitude.com/$$$$$$$/manage/project/********/settings,
wêr $$$$$$ de amplitude-oanmelding fan jo organisaasje is, ****** is it projektnûmer

Stap 2: Kontrolearje de oanwêzigens fan 'e fereaske biblioteken

It goede nijs is dat jo dizze biblioteken hast wis al hawwe ynstalleare as standert of ynladen, mar jo moatte kontrolearje. De folsleine list mei biblioteken dy't ik brûkte op it momint fan skriuwen (ferzjes tusken heakjes wurde oanjûn wêr't passend is):

  1. fersiken (2.10.0) - it ferstjoeren fan in fersyk fia api om gegevens te ûntfangen
  2. pandas (1.0.1) - json lêze, in dataframe oanmeitsje en dan nei in bestân skriuwe
  3. zipfile - ekstrahearje bestannen út in argyf ûntfongen fia de API
  4. gzip - it útpakke fan json-bestannen fan .gz
  5. os - in list mei bestannen krije fan in útpakt argyf
  6. tiid - opsjoneel, mjit de rinnende tiid fan it skript
  7. tqdm - opsjoneel, foar maklike tafersjoch op de fuortgong fan triemferwurking

Stap 3. Skriuwen fan in gegevens laden skript

Hint: it folsleine downloadskript is oan 'e ein fan it artikel; as jo wolle, kinne jo it direkt nimme en as nedich ferwize nei de stap-foar-stap útlis.

Stap 3.1. It ymportearjen fan biblioteken

Wy ymportearje alle biblioteken neamd yn 'e twadde stap.

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

Stap 3.2. It yntsjinjen fan in fersyk oan Amplitude

Litte wy it begjin fan skriptútfiering ûntdekke en it skriuwe nei fariabele a.

startdate en slute binne ferantwurdlik foar de perioade foar it ynladen fan gegevens en binne ynboud yn 'e tekst fan' e ferstjoerde fersyk nei de Amplitude-tsjinner; Neist de datum kinne jo ek de oere opjaan troch de wearde nei 'T' yn it fersyk te feroarjen.

api_key en secret_key oerienkomme mei de wearden krigen yn 'e earste stap; om feiligens redenen spesifisearje ik hjir willekeurige sekwinsjes yn stee fan myn eigen.

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

Stap 3.3. It ynladen fan in argyf mei gegevens

Wy komme mei in namme foar it argyf en skriuwe it nei de triemnamme fariabele. Foar myn gemak, ik jou de perioade + oan dat dit amplitude gegevens. Dêrnei registrearje wy it ûntfongen antwurd fan Amplitude yn it argyf.

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

Stap 3.4. Triemen ophelje út in map op jo kompjûter

De zipfile-bibleteek komt yn spiel om te helpen bestannen ekstrahearje. Yn 'e tredde rigel, wês foarsichtich en skriuw jo paad op wêr't it handiger is foar jo om te extract.

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

Stap 3.5. json konverzje

Nei it ekstrahearjen fan de bestannen út it argyf, moatte jo json-bestannen konvertearje yn .gz-formaat en skriuwe se yn in dataframe foar fierdere wurk.

Tink derom dat jo hjir it paad op 'e nij moatte feroarje nei jo eigen, en ynstee fan 000000 jo projektnûmer skriuwe fan Amplitude (of manuell iepenje it paad wêr't it argyf útpakt is en sjoch nei de namme fan 'e map deryn).

Yn oarder:

In map skriuwe nei in fariabele, in list mei triemmen út in map krije, in leech dataframe meitsje, time.sleep(1) foar tqdm om goed te wurkjen, binnen de lus iepenje wy .gz-bestannen en brûke fuortendaliks pandas om json te lêzen en te foljen it opjûne dataframe.

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

Stap 3.6. Dataframe skriuwe yn excel

De upload nei excel is hjir mar in foarbyld. Yn in protte gefallen is it handiger om te wurkjen mei it resultearjende gegevensframe yn python of de gegevens yn opslach te setten.

Jo sille ek it paad foar upload fan gegevens hjir moatte ferfange troch jo eigen.

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

Stap 3.7. Wy telle de rinnende tiid fan it skript

It opnimmen fan de aktuele tiid yn de fariabele b, it berekkenjen fan it ferskil en it oantal minuten, it werjaan fan de totale minuten. Dit is de lêste stap.

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

konklúzje

Jo kinne de tabel neame en dermei begjinne te wurkjen troch de fariabele amplitude_dataframe te neamen wêryn de gegevens skreaun binne. It sil sa'n 50 kolommen hawwe, wêrfan jo yn 80% fan 'e gefallen sille brûke: event_type - evenemint namme, event_properties - evenemint parameters, event_time - evenemint tiid, uuid - client id, user_properties - client parameters, jo moatte earst begjinne te wurkjen mei harren . En by it fergelykjen fan sifers fan jo eigen berekkeningen mei yndikatoaren fan Amplitude-dashboards, moatte jo net ferjitte dat it systeem syn eigen metodyk brûkt foar it berekkenjen fan unike kliïnten / trechters, ensfh., En foardat jo dit dogge, moatte jo perfoarst de Amplitude-dokumintaasje lêze.

Tank foar jo oandacht! No kinne jo rauwe evenemintgegevens uploade nei Amplitude en it folslein brûke yn jo wurk.

Hiele 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))

Boarne: www.habr.com

Add a comment