Ibuyisa idatha ye-Amplitude nge-API

Isingeniso

I-Amplitude izibonakalise kahle kakhulu njengethuluzi lokuhlaziya umkhiqizo ngenxa yokusetha kalula umcimbi nokuvumelana nezimo. Futhi ngokuvamile kuba nesidingo sokusetha imodeli yakho yesichasiso, abasebenzisi beqoqo, noma ukwakha ideshibhodi kwenye isistimu ye-BI. Kungenzeka kuphela ukwenza ukukhwabanisa okunjalo ngedatha yomcimbi ongahluziwe evela ku-Amplitude. Lesi sihloko sizokutshela ukuthi ungayithola kanjani le datha ngolwazi oluncane lokuhlela.

Okudingekayo

  1. Iphrojekthi eku-Amplitude lapho imicimbi isivele ilungiselelwe kahle futhi izibalo ziqoqwa kuyo
  2. I-Python ifakiwe (ngisebenza kunguqulo 3.8.3), lowo ongase abe umfundi angakwazi ukusebenza nayo okungenani ezingeni eliyisisekelo

Imiyalo

Isinyathelo 1. Ukuthola ukhiye we-API kanye nokhiye oyimfihlo

Ukuze ulayishe idatha, udinga kuqala ukuthola ukhiye we-API nokhiye oyimfihlo.

Ungazithola ngokulandela indlela elandelayo:

  1. "Phatha idatha" (etholakala ngezansi kwesokunxele kwesikrini)
  2. Khetha iphrojekthi oyifunayo okuzolandwa kuyo idatha bese uya kuyo
  3. Kumenyu yephrojekthi evulayo, khetha "Izilungiselelo zephrojekthi"
  4. Sithola ukhiye we-API kanye neyunithi yezinhlamvu zokhiye oyimfihlo, sikopishe futhi sizilondoloze endaweni ephephile.

Ngaphandle kokuchofoza, ungalandela isixhumanisi, esibukeka kanjena ngokujwayelekile:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
lapho i-$$$$$$ iwukungena kwe-amplitude yenhlangano yakho, ****** inombolo yephrojekthi

Isinyathelo sesi-2: Ukuhlola ubukhona bemitapo yolwazi edingekayo

Izindaba ezinhle ukuthi cishe usuvele unayo le mitapo yolwazi efakwe ngokuzenzakalelayo noma elandiwe, kodwa udinga ukuhlola. Uhlu oluphelele lwemitapo yolwazi engiyisebenzisile ngesikhathi sokubhala (izinguqulo kubakaki zikhonjisiwe lapho kufanele khona):

  1. izicelo (2.10.0) - ukuthumela isicelo nge-api ukuthola idatha
  2. I-pandas (1.0.1) - ukufunda i-json, ukudala i-dataframe bese ubhalela ifayela
  3. zipfile - khipha amafayela kungobo yomlando etholwe nge-API
  4. gzip - ikhipha amafayela e-json ku-.gz
  5. os - ukuthola uhlu lwamafayela kungobo yomlando engapakishiwe
  6. isikhathi - ozikhethela, kala isikhathi sokusebenza sombhalo
  7. tqdm - ongakukhetha, ukuze kuqashwe kalula inqubekelaphambili yokucubungula ifayela

Isinyathelo sesi-3. Ukubhala iskripthi sokulayisha idatha

Ukusikisela: umbhalo ogcwele wokulanda usekupheleni kwesihloko; uma uthanda, ungawuthatha ngokushesha futhi ubhekisele ezincazelweni zesinyathelo ngesinyathelo uma kunesidingo.

Isinyathelo 3.1. Ingenisa imitapo yolwazi

Singenisa yonke imitapo yolwazi esohlwini lwesinyathelo sesibili.

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

Isinyathelo 3.2. Ukuthumela isicelo ku-Amplitude

Ake sithole ukuqala kokwenziwa kombhalo futhi sikubhale ukuze kuguquguquke a.

idethi yokuqala neyokuphela inesibopho sesikhathi sokulanda idatha futhi yakhelwe embhalweni wesicelo esithunyelwe kuseva ye-Amplitude; ngaphezu kosuku, ungaphinda ucacise ihora ngokushintsha inani ngemva kuka-'T' esicelweni.

I-api_key kanye ne-secret_key zihambisana namanani atholwe esinyathelweni sokuqala; ngenxa yezizathu zokuphepha, ngicacisa ukulandelana okungahleliwe lapha esikhundleni sokwami.

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

Isinyathelo 3.3. Ilanda ingobo yomlando enedatha

Siza negama lengobo yomlando bese silibhala ekuguquguqukeni kwegama lefayela. Ukuze kube lula kimi, ngibonisa isikhathi + sibonisa ukuthi lena idatha ye-amplitude. Okulandelayo, siqopha impendulo etholiwe evela ku-Amplitude siyifake kungobo yomlando.

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

Isinyathelo 3.4. Ikhipha amafayela kufolda ekukhompuyutha yakho

Ilabhulali ye-zifile iyasebenza ukuze isize ukukhipha amafayela. Emugqeni wesithathu, qaphela futhi ubhale phansi indlela yakho lapho kulula khona ukuthi uyikhiphe.

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

Isinyathelo 3.5. json ukuguqulwa

Ngemva kokukhipha amafayela kungobo yomlando, udinga ukuguqula amafayela e-json ngefomethi ye-.gz futhi uwabhale kuhlaka lwedatha ukuze uthole umsebenzi owengeziwe.

Sicela uqaphele ukuthi lapha udinga ukushintsha indlela futhi ibe eyakho, futhi esikhundleni sika-000000 bhala inombolo yephrojekthi yakho ku-Amplitude (noma uvule ngesandla indlela lapho ingobo yomlando ikhishwe khona bese ubheka igama lefolda ngaphakathi).

Ukuze:

Ukubhala uhla lwemibhalo kuya kokuguquguqukayo, ukuthola uhlu lwamafayela ohlwini lwemibhalo, ukwakha idatha engenalutho, i-time.sleep(1) ukuze i-tqdm isebenze kahle, ngaphakathi kweluphu sivula amafayela we-.gz futhi ngokushesha sisebenzise i-pandas ukuze sifunde i-json futhi sigcwalise uhlaka lwedatha olunikeziwe.

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

Isinyathelo 3.6. Ibhala uhlaka lwedatha ku-excel

Ukulayisha ku-Excel kuyisibonelo nje lapha. Ezimweni eziningi, kulula kakhulu ukusebenza nohlaka lwedatha oluvelayo ngaphakathi kwe-python noma ukubeka idatha endaweni yokugcina.

Kuzodingeka futhi ufake eyakho esikhundleni sendlela yokulayisha idatha lapha.

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

Isinyathelo 3.7. Sibala isikhathi sokusebenza sombhalo

Ukurekhoda isikhathi samanje kokuguquguqukayo b, ukubala umehluko nenani lamaminithi, kukhombisa ingqikithi yamaminithi. Lesi isinyathelo sokugcina.

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

isiphetho

Ungashayela ithebula futhi uqale ukusebenza nalo ngokubiza okuguquguqukayo kwe-amplitude_dataframe okwabhalwa kuyo idatha. Izoba namakholomu angaba ngu-50, kuzo zonke izimo ezingu-80% uzosebenzisa: event_type - igama lomcimbi, event_properties - imingcele yomcimbi, umcimbi_isikhathi - isikhathi somcimbi, uuid - i-id yeklayenti, umsebenzisi_properties - amapharamitha weklayenti, kufanele uqale ukusebenza nawo kuqala . Futhi lapho uqhathanisa izibalo ezibalweni zakho siqu nezinkomba ezivela kudeshibhodi ye-Amplitude, akumele ukhohlwe ukuthi isistimu isebenzisa indlela yayo yokubala amaklayenti/amafaneli ahlukile, njll., futhi ngaphambi kokwenza lokhu, kufanele nakanjani ufunde imibhalo ye-Amplitude.

Ngiyabonga ukulalela kwenu! Manje usungakwazi ukulayisha idatha yomcimbi ongahluziwe ku-Amplitude futhi uyisebenzise ngokugcwele emsebenzini wakho.

Sonke iskripthi:

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

Engeza amazwana