Kinukuha ang Amplitude data sa pamamagitan ng API

Pagpapakilala

Napakahusay na napatunayan ng amplitude ang sarili bilang isang tool sa analytics ng produkto dahil sa madaling pag-setup ng event at flexibility ng visualization. At kadalasan ay kailangang i-set up ang sarili mong modelo ng attribution, mga user ng cluster, o bumuo ng dashboard sa isa pang BI system. Posible lamang na magsagawa ng naturang panloloko gamit ang raw na data ng kaganapan mula sa Amplitude. Sasabihin sa iyo ng artikulong ito kung paano makuha ang data na ito nang may kaunting kaalaman sa programming.

Mga kinakailangan

  1. Isang proyekto sa Amplitude kung saan ang mga kaganapan ay na-configure nang tama at ang mga istatistika ay nakolekta sa mga ito
  2. Naka-install ang Python (nagtatrabaho ako sa bersyon 3.8.3), na magagamit na ng potensyal na mambabasa kahit man lang sa pangunahing antas

Pagtuturo

Hakbang 1. Pagkuha ng API-key at secret-key

Para mag-upload ng data, kailangan mo munang kumuha ng API key at secret key.

Mahahanap mo sila sa pamamagitan ng pagsunod sa sumusunod na landas:

  1. "Pamahalaan ang data" (matatagpuan sa kaliwang ibaba ng screen)
  2. Piliin ang gustong proyekto kung saan mada-download ang data at pumunta dito
  3. Sa bubukas na menu ng proyekto, piliin ang "Mga setting ng proyekto"
  4. Nahanap namin ang API-key at secret-key na mga string, kopyahin at i-save ang mga ito sa isang ligtas na lugar.

Nang walang pag-click, maaari mong sundin ang link, na sa pangkalahatan ay ganito ang hitsura:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
kung saan ang $$$$$$ ay ang amplitude login ng iyong organisasyon, ang ****** ay ang numero ng proyekto

Hakbang 2: Sinusuri ang presensya ng mga kinakailangang aklatan

Ang magandang balita ay halos tiyak na mayroon ka nang mga aklatang ito na naka-install bilang default o na-download, ngunit kailangan mong suriin. Ang kumpletong listahan ng mga aklatan na ginamit ko sa oras ng pagsulat (mga bersyon sa panaklong ay ipinahiwatig kung saan naaangkop):

  1. mga kahilingan (2.10.0) - pagpapadala ng kahilingan sa pamamagitan ng api upang makatanggap ng data
  2. pandas (1.0.1) - pagbabasa ng json, paggawa ng dataframe at pagkatapos ay pagsusulat sa isang file
  3. zipfile - i-extract ang mga file mula sa isang archive na natanggap sa pamamagitan ng API
  4. gzip - pag-unpack ng mga json file mula sa .gz
  5. os - pagkuha ng isang listahan ng mga file mula sa isang naka-unpack na archive
  6. oras - opsyonal, sukatin ang oras ng pagtakbo ng script
  7. tqdm - opsyonal, para sa madaling pagsubaybay sa pag-unlad ng pagproseso ng file

Hakbang 3. Pagsusulat ng script ng paglo-load ng data

Pahiwatig: ang buong script ng pag-download ay nasa dulo ng artikulo; kung nais mo, maaari mo itong agad na kunin at sumangguni sa sunud-sunod na mga paliwanag kung kinakailangan.

Hakbang 3.1. Pag-import ng mga aklatan

Ini-import namin ang lahat ng mga aklatan na nakalista sa ikalawang hakbang.

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

Hakbang 3.2. Pagsusumite ng kahilingan sa Amplitude

I-detect natin ang simula ng script execution at isulat ito sa variable a.

Ang startdate at enddate ay may pananagutan para sa panahon ng pag-download ng data at binuo sa teksto ng ipinadalang kahilingan sa Amplitude server; bilang karagdagan sa petsa, maaari mo ring tukuyin ang oras sa pamamagitan ng pagbabago ng halaga pagkatapos ng 'T' sa kahilingan.

Ang api_key at secret_key ay tumutugma sa mga halaga na nakuha sa unang hakbang; para sa mga kadahilanang pangseguridad, tinutukoy ko ang mga random na pagkakasunud-sunod dito sa halip na ang aking sarili.

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

Hakbang 3.3. Nagda-download ng archive na may data

Nakabuo kami ng isang pangalan para sa archive at isulat ito sa variable ng filename. Para sa aking kaginhawahan, ipinapahiwatig ko ang tuldok + na nagpapahiwatig na ito ay data ng amplitude. Susunod, itinatala namin ang natanggap na tugon mula sa Amplitude sa archive.

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

Hakbang 3.4. Kinukuha ang mga file mula sa isang folder sa iyong computer

Naglalaro ang zipfile library para tumulong sa pag-extract ng mga file. Sa ikatlong linya, mag-ingat at isulat ang iyong landas kung saan mas maginhawa para sa iyo na kunin.

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

Hakbang 3.5. json conversion

Pagkatapos i-extract ang mga file mula sa archive, kailangan mong i-convert ang mga json file sa .gz na format at isulat ang mga ito sa isang dataframe para sa karagdagang trabaho.

Mangyaring tandaan na dito kailangan mong baguhin muli ang landas sa iyong sarili, at sa halip na 000000 isulat ang iyong numero ng proyekto mula sa Amplitude (o manu-manong buksan ang landas kung saan nakuha ang archive at tingnan ang pangalan ng folder sa loob).

sa pagkakasunud-sunod:

Pagsusulat ng isang direktoryo sa isang variable, pagkuha ng isang listahan ng mga file mula sa isang direktoryo, paggawa ng isang walang laman na dataframe, time.sleep(1) para gumana ng tama ang tqdm, sa loob ng loop ay binubuksan namin ang mga .gz na file at agad na gumagamit ng mga pandas upang basahin ang json at punan ang ibinigay na 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')

Hakbang 3.6. Pagsusulat ng dataframe sa excel

Ang pag-upload sa excel ay isang halimbawa lamang dito. Sa maraming mga kaso, mas maginhawang magtrabaho kasama ang nagresultang data frame sa loob ng python o ilagay ang data sa imbakan.

Kakailanganin mo ring palitan ang path ng pag-upload ng data dito ng sarili mo.

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

Hakbang 3.7. Binibilang namin ang oras ng pagtakbo ng script

Pagre-record ng kasalukuyang oras sa variable b, pagkalkula ng pagkakaiba at bilang ng mga minuto, na ipinapakita ang kabuuang minuto. Ito ang huling hakbang.

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

Konklusyon

Maaari mong tawagan ang talahanayan at magsimulang magtrabaho kasama nito sa pamamagitan ng pagtawag sa variable na amplitude_dataframe kung saan isinulat ang data. Magkakaroon ito ng humigit-kumulang 50 column, kung saan sa 80% ng mga kaso ay gagamitin mo: event_type - event name, event_properties - event parameters, event_time - event time, uuid - client id, user_properties - client parameters, dapat mo munang simulan ang pakikipagtulungan sa kanila . At kapag inihambing ang mga numero mula sa iyong sariling mga kalkulasyon sa mga tagapagpahiwatig mula sa mga dashboard ng Amplitude, hindi mo dapat kalimutan na ang system ay gumagamit ng sarili nitong pamamaraan para sa pagkalkula ng mga natatanging kliyente/funnel, atbp., at bago gawin ito, dapat mong tiyak na basahin ang dokumentasyon ng Amplitude.

Salamat sa iyong atensyon! Ngayon ay maaari ka nang mag-upload ng raw na data ng kaganapan sa Amplitude at ganap na gamitin ito sa iyong trabaho.

Buong script:

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

Pinagmulan: www.habr.com

Magdagdag ng komento