Pagbawi sa datos sa Amplitude pinaagi sa API

Pasiuna

Ang amplitude napamatud-an nga maayo ang kaugalingon ingon usa ka himan sa pag-analisa sa produkto tungod sa dali nga pag-setup sa panghitabo ug pagka-flexible sa visualization. Ug kasagaran adunay panginahanglan sa pag-set up sa imong kaugalingong attribution model, cluster users, o paghimo og dashboard sa laing BI system. Posible lamang nga himuon ang ingon nga pagpanglimbong gamit ang hilaw nga datos sa panghitabo gikan sa Amplitude. Kini nga artikulo magsulti kanimo kung giunsa pagkuha kini nga datos nga adunay gamay nga kahibalo sa programming.

Mga kinahanglanon

  1. Usa ka proyekto sa Amplitude diin ang mga panghitabo na-configure na sa husto ug ang mga estadistika nakolekta niini
  2. Gi-install ang Python (nagtrabaho ko sa bersyon 3.8.3), diin ang potensyal nga magbabasa mahimo nang magtrabaho bisan sa usa ka sukaranan nga lebel

Panudlo

Lakang 1. Pagkuha sa API-key ug sekreto-key

Aron ma-upload ang datos, kinahanglan una nimo nga makakuha usa ka yawe sa API ug sekreto nga yawe.

Makita nimo sila pinaagi sa pagsunod sa mosunod nga dalan:

  1. "Pagdumala sa datos" (naa sa ubos sa wala sa screen)
  2. Pilia ang gusto nga proyekto diin ang datos ma-download ug adto niini
  3. Sa menu sa proyekto nga magbukas, pilia ang "Mga setting sa proyekto"
  4. Among makit-an ang API-key ug sekreto-key string, kopyahon ug i-save kini sa luwas nga dapit.

Kung wala’y pag-klik, mahimo nimong sundon ang link, nga sa kinatibuk-an ingon niini:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
diin $$$$$$ ang amplitude login sa imong organisasyon, ****** ang numero sa proyekto

Lakang 2: Pagsusi sa presensya sa gikinahanglan nga mga librarya

Ang maayong balita mao nga hapit na nimo kini nga mga librarya nga na-install nga default o na-download, apan kinahanglan nimo nga susihon. Ang kompleto nga lista sa mga librarya nga akong gigamit sa pagsulat (mga bersyon sa parentesis gipakita kung angay):

  1. mga hangyo (2.10.0) - pagpadala ug hangyo pinaagi sa api aron makadawat ug datos
  2. pandas (1.0.1) - pagbasa sa json, paghimo og dataframe ug dayon pagsulat sa file
  3. zipfile - pagkuha sa mga file gikan sa usa ka archive nga nadawat pinaagi sa API
  4. gzip - pag-unpack sa mga json file gikan sa .gz
  5. os - pagkuha sa usa ka lista sa mga file gikan sa usa ka unpacked archive
  6. oras - opsyonal, sukda ang oras sa pagpadagan sa script
  7. tqdm - opsyonal, para sa sayon ​​nga pagmonitor sa pag-uswag sa pagproseso sa file

Lakang 3. Pagsulat og data loading script

Sugyot: ang bug-os nga script sa pag-download naa sa katapusan sa artikulo; kung gusto nimo, mahimo nimo kini makuha dayon ug tan-awa ang sunod-sunod nga pagpatin-aw kung kinahanglan.

Lakang 3.1. Pag-import sa mga librarya

Gi-import namon ang tanan nga mga librarya nga gilista sa ikaduhang lakang.

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

Lakang 3.2. Pagsumite sa usa ka hangyo sa Amplitude

Atong makita ang pagsugod sa script execution ug isulat kini sa variable a.

Ang petsa sa pagsugod ug ang katapusan nga petsa ang responsable sa panahon sa pag-download sa datos ug gitukod sa teksto sa gipadala nga hangyo sa Amplitude server; dugang pa sa petsa, mahimo usab nimo ipiho ang oras pinaagi sa pagbag-o sa kantidad pagkahuman sa 'T' sa hangyo.

Ang api_key ug secret_key katumbas sa mga kantidad nga nakuha sa unang lakang; alang sa mga hinungdan sa seguridad, akong gipiho ang mga random nga han-ay dinhi imbes sa akong kaugalingon.

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

Lakang 3.3. Pag-download sa usa ka archive nga adunay data

Naghimo kami usa ka ngalan alang sa archive ug isulat kini sa variable sa filename. Alang sa akong kasayon, akong gipakita ang panahon + nagpakita nga kini amplitude data. Sunod, among girekord ang nadawat nga tubag gikan sa Amplitude ngadto sa archive.

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

Lakang 3.4. Pagkuha sa mga file gikan sa usa ka folder sa imong computer

Ang zipfile library nagdula aron makatabang sa pagkuha sa mga file. Sa ikatulo nga linya, pag-amping ug isulat ang imong agianan kung diin mas kombenyente nimo nga makuha.

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

Lakang 3.5. json pagkakabig

Human makuha ang mga file gikan sa archive, kinahanglan nimo nga i-convert ang mga file sa json sa format nga .gz ug isulat kini sa usa ka dataframe alang sa dugang nga trabaho.

Palihug timan-i nga dinhi kinahanglan nimo nga usbon pag-usab ang agianan sa imong kaugalingon, ug imbes nga 000000 isulat ang imong numero sa proyekto gikan sa Amplitude (o mano-mano nga ablihan ang agianan diin ang archive gikuha ug tan-awa ang ngalan sa folder sa sulod).

Sa pagkasunodsunod:

Pagsulat sa usa ka direktoryo ngadto sa usa ka variable, pagkuha sa usa ka lista sa mga file gikan sa usa ka direktoryo, paghimo sa usa ka walay sulod nga dataframe, time.sleep(1) para sa tqdm sa pagtrabaho sa husto, sulod sa loop atong ablihan .gz files ug diha-diha dayon gamiton ang mga pandas sa pagbasa json ug pun-on. ang gihatag nga 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')

Lakang 3.6. Pagsulat sa dataframe sa excel

Ang pag-upload sa excel usa lang ka pananglitan dinhi. Sa daghang mga kaso, mas sayon ​​​​ang pagtrabaho sa resulta nga data frame sulod sa python o ibutang ang datos sa storage.

Kinahanglan nimo usab nga ilisan ang agianan sa pag-upload sa datos dinhi sa imong kaugalingon.

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

Lakang 3.7. Giihap namo ang oras sa pagdagan sa script

Pagrekord sa kasamtangan nga oras sa variable b, pagkalkula sa kalainan ug ang gidaghanon sa mga minuto, pagpakita sa kinatibuk-ang mga minuto. Kini ang katapusang lakang.

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

konklusyon

Mahimo nimong tawagan ang lamesa ug magsugod sa pagtrabaho niini pinaagi sa pagtawag sa variable nga amplitude_dataframe diin gisulat ang datos. Kini adunay mga 50 ka kolum, diin sa 80% sa mga kaso imong gamiton: event_type - event name, event_properties - event parameters, event_time - event time, uuid - client id, user_properties - client parameters, kinahanglan nga magsugod ka sa pagtrabaho uban kanila una . Ug kung itandi ang mga numero gikan sa imong kaugalingon nga mga kalkulasyon sa mga timailhan gikan sa mga dashboard sa Amplitude, kinahanglan nga dili nimo kalimtan nga ang sistema naggamit sa kaugalingon nga pamaagi sa pagkalkula sa mga talagsaon nga kliyente / funnel, ug uban pa, ug sa wala pa kini buhaton, kinahanglan nimo nga basahon gyud ang dokumentasyon sa Amplitude.

Salamat sa imong pagtagad! Karon mahimo nimong i-upload ang hilaw nga data sa panghitabo sa Amplitude ug magamit kini sa hingpit sa imong trabaho.

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

Source: www.habr.com

Idugang sa usa ka comment