Amplitūdas datu izgūšana, izmantojot API

Ievads

Amplitūda ir sevi ļoti labi pierādījusi kā produktu analīzes rīks, pateicoties tā vienkāršai notikumu iestatīšanai un vizualizācijas elastībai. Un bieži vien ir nepieciešams iestatīt savu attiecinājuma modeli, grupēt lietotājus vai izveidot informācijas paneli citā BI sistēmā. Šādu krāpšanu ir iespējams veikt tikai ar neapstrādātiem notikumu datiem no Amplitūdas. Šis raksts jums pateiks, kā iegūt šos datus ar minimālām programmēšanas zināšanām.

Priekšnoteikumi

  1. Projekts amplitūdā, kurā notikumi jau ir pareizi konfigurēti un par tiem tiek apkopota statistika
  2. Ir instalēts Python (strādāju versijā 3.8.3), ar kuru potenciālais lasītājs jau var strādāt vismaz pamata līmenī

Norādījums

1. darbība. API atslēgas un slepenās atslēgas iegūšana

Lai augšupielādētu datus, vispirms ir jāiegūst API atslēga un slepenā atslēga.

Jūs varat tos atrast, izpildot šādu ceļu:

  1. “Pārvaldīt datus” (atrodas ekrāna apakšējā kreisajā stūrī)
  2. Izvēlieties vajadzīgo projektu, no kura tiks lejupielādēti dati, un dodieties uz to
  3. Atvērtajā projekta izvēlnē atlasiet “Projekta iestatījumi”
  4. Mēs atrodam API atslēgas un slepenās atslēgas virknes, nokopējam un saglabājam tās drošā vietā.

Nenoklikšķinot, varat sekot saitei, kas kopumā izskatās šādi:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
kur $$$$$$ ir jūsu organizācijas amplitūdas pieteikšanās, ****** ir projekta numurs

2. darbība: pārbaudiet nepieciešamo bibliotēku klātbūtni

Labā ziņa ir tā, ka šīs bibliotēkas gandrīz noteikti jau ir instalētas pēc noklusējuma vai lejupielādētas, taču jums ir jāpārbauda. Pilns to bibliotēku saraksts, kuras izmantoju rakstīšanas laikā (vajadzības gadījumā norādītas iekavās esošās versijas):

  1. pieprasījumi (2.10.0) - pieprasījuma nosūtīšana caur api datu saņemšanai
  2. pandas (1.0.1) — lasa json, izveido datu rāmi un pēc tam raksta failā
  3. zipfile - izņemiet failus no arhīva, kas saņemti, izmantojot API
  4. gzip — JSON failu izpakošana no .gz
  5. os - failu saraksta iegūšana no neizpakotā arhīva
  6. laiks — neobligāti, mēra skripta darbības laiku
  7. tqdm — pēc izvēles, lai viegli uzraudzītu failu apstrādes progresu

3. darbība. Datu ielādes skripta rakstīšana

Padoms: pilns lejupielādes skripts ir raksta beigās; ja vēlaties, varat to nekavējoties ņemt un, ja nepieciešams, skatīt soli pa solim sniegtos paskaidrojumus.

3.1. darbība. Bibliotēku importēšana

Mēs importējam visas otrajā darbībā norādītās bibliotēkas.

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

3.2. darbība. Pieprasījuma iesniegšana Amplitude

Noteiksim skripta izpildes sākumu un ierakstīsim to mainīgajā a.

sākuma datums un beigu datums ir atbildīgi par datu lejupielādes periodu un ir iebūvēti amplitūdas serverim nosūtītā pieprasījuma tekstā; papildus datumam varat norādīt arī stundu, mainot vērtību aiz 'T' pieprasījumā.

api_key un secret_key atbilst vērtībām, kas iegūtas pirmajā solī; drošības apsvērumu dēļ es šeit norādu nejaušas secības, nevis savas.

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. darbība. Arhīva ar datiem lejupielāde

Mēs izdomājam arhīva nosaukumu un ierakstām to faila nosaukuma mainīgajā. Ērtības labad norādu periodu + norādu, ka tie ir amplitūdas dati. Tālāk mēs arhīvā ierakstām saņemto atbildi no Amplitūdas.

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

Solis 3.4. Failu izgūšana no datora mapes

Zipfile bibliotēka tiek izmantota, lai palīdzētu izvilkt failus. Trešajā rindā esi uzmanīgs un pieraksti savu ceļu, kur tev ērtāk izvilkt.

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

3.5. darbība. json konvertēšana

Pēc failu izvilkšanas no arhīva jums jākonvertē JSON faili .gz formātā un jāieraksta datu rāmī turpmākam darbam.

Lūdzu, ņemiet vērā, ka šeit jums atkal jāmaina ceļš uz savu un 000000 vietā ierakstiet sava projekta numuru no Amplitūdas (vai manuāli atveriet ceļu, kurā tika izvilkts arhīvs, un skatiet tajā esošās mapes nosaukumu).

Kārtībā:

Direktorija rakstīšana mainīgajam, failu saraksta iegūšana no direktorija, tukša datu rāmja izveidošana, time.sleep(1), lai tqdm darbotos pareizi, cilpas iekšpusē atveram .gz failus un nekavējoties izmantojam pandas, lai lasītu json un aizpildītu. dotais datu rāmis.

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

Solis 3.6. Datu rāmja rakstīšana programmā Excel

Augšupielāde programmā Excel ir tikai piemērs šeit. Daudzos gadījumos ērtāk ir strādāt ar iegūto datu rāmi python iekšpusē vai ievietot datus krātuvē.

Arī datu augšupielādes ceļš šeit būs jāaizstāj ar savu.

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

Solis 3.7. Mēs uzskaitām skripta darbības laiku

Pašreizējā laika ierakstīšana mainīgajā b, starpības un minūšu skaita aprēķināšana, kopējo minūšu rādīšana. Šis ir pēdējais solis.

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

Secinājums

Varat izsaukt tabulu un sākt ar to strādāt, izsaucot mainīgo amplitude_dataframe, kurā tika ierakstīti dati. Tajā būs aptuveni 50 kolonnas, no kurām 80% gadījumu izmantosit: event_type - notikuma nosaukums, event_properties - notikuma parametri, event_time - notikuma laiks, uuid - klienta ID, user_properties - klienta parametri, vispirms jāsāk ar tiem strādāt. . Un, salīdzinot skaitļus no saviem aprēķiniem ar indikatoriem no amplitūdas paneļiem, nedrīkst aizmirst, ka sistēma izmanto savu metodiku unikālu klientu/piltuvju u.tml. aprēķināšanai, un pirms to darīt, noteikti jāizlasa Amplitūdas dokumentācija.

Paldies par jūsu uzmanību! Tagad varat augšupielādēt neapstrādātus notikumu datus pakalpojumā Amplitude un pilnībā izmantot tos savā darbā.

Viss skripts:

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

Avots: www.habr.com