Amplitude տվյալների առբերում API-ի միջոցով

Ներածություն

Amplitude-ն իրեն շատ լավ է դրսևորել որպես արտադրանքի վերլուծության գործիք՝ իր հեշտ իրադարձությունների տեղադրման և վիզուալացման ճկունության շնորհիվ: Եվ հաճախ անհրաժեշտություն է առաջանում ստեղծել ձեր սեփական վերագրման մոդելը, խմբավորել օգտվողներին կամ ստեղծել վահանակ այլ BI համակարգում: Նման խարդախություն հնարավոր է իրականացնել միայն Amplitude-ի հում իրադարձությունների տվյալների միջոցով: Այս հոդվածը ձեզ կպատմի, թե ինչպես ստանալ այս տվյալները ծրագրավորման նվազագույն գիտելիքներով:

Նախադրյալներ

  1. Ամպլիտուդով նախագիծ, որտեղ իրադարձություններն արդեն իսկ ճիշտ կազմաձևված են և դրանց վերաբերյալ վիճակագրություն է հավաքվում
  2. Python-ը տեղադրված է (ես աշխատում եմ 3.8.3 տարբերակում), որի հետ պոտենցիալ ընթերցողն արդեն կարող է աշխատել առնվազն հիմնական մակարդակում։

Հրահանգավորում

Քայլ 1. API-բանալու և գաղտնի բանալիների ստացում

Տվյալները վերբեռնելու համար նախ պետք է ձեռք բերել API բանալի և գաղտնի բանալի:

Դուք կարող եք գտնել դրանք՝ հետևելով հետևյալ ուղուն.

  1. «Կառավարել տվյալները» (գտնվում է էկրանի ներքևի ձախ մասում)
  2. Ընտրեք ցանկալի նախագիծը, որից տվյալները կներբեռնվեն և անցեք դրան
  3. Ծրագրի ընտրացանկից, որը բացվում է, ընտրեք «Նախագծի կարգավորումներ»
  4. Մենք գտնում ենք API-բանալու և գաղտնի բանալիների տողերը, պատճենում և պահում դրանք ապահով տեղում:

Առանց սեղմելու կարող եք հետևել հղմանը, որն ընդհանուր առմամբ ունի հետևյալ տեսքը.
analytics.amplitude.com/$$$$$$$$/manage/project/******/settings,
որտեղ $$$$$$-ը ձեր կազմակերպության ամպլիտուդային մուտքն է, ******-ը ծրագրի համարն է

Քայլ 2. Ստուգելով անհրաժեշտ գրադարանների առկայությունը

Լավ նորությունն այն է, որ դուք գրեթե հաստատ արդեն ունեք այս գրադարանները լռելյայն տեղադրված կամ ներբեռնված, բայց դուք պետք է ստուգեք: Գրադարանների ամբողջական ցանկը, որոնք ես օգտագործել եմ գրելու պահին (փակագծերում տրված տարբերակները նշված են, որտեղ անհրաժեշտ է).

  1. հարցումներ (2.10.0) - տվյալներ ստանալու համար հարցում ուղարկելը api-ի միջոցով
  2. pandas (1.0.1) - կարդալ json, ստեղծել տվյալների շրջանակ և այնուհետև գրել ֆայլին
  3. zipfile - ֆայլեր հանել API-ի միջոցով ստացված արխիվից
  4. gzip - unpacking json ֆայլերը .gz-ից
  5. os - չփաթեթավորված արխիվից ֆայլերի ցուցակ ստանալը
  6. ժամանակ - ընտրովի, չափեք սցենարի գործարկման ժամանակը
  7. tqdm - ընտրովի, ֆայլերի մշակման առաջընթացի հեշտ մոնիտորինգի համար

Քայլ 3. Տվյալների բեռնման սցենար գրելը

Հուշում. ներբեռնման ամբողջական սցենարը հոդվածի վերջում է, ցանկության դեպքում կարող եք անմիջապես վերցնել այն և անհրաժեշտության դեպքում դիմել քայլ առ քայլ բացատրություններին:

Քայլ 3.1. Գրադարանների ներմուծում

Մենք ներմուծում ենք երկրորդ քայլում թվարկված բոլոր գրադարանները:

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

Քայլ 3.2. Amplitude-ին հարցում ներկայացնելը

Եկեք հայտնաբերենք սցենարի կատարման սկիզբը և այն գրենք a փոփոխականում:

մեկնարկի ամսաթիվը և ավարտի ամսաթիվը պատասխանատու են տվյալների ներբեռնման ժամանակաշրջանի համար և ներկառուցված են Amplitude սերվերին ուղարկված հարցման տեքստում: Բացի ամսաթվից, դուք կարող եք նաև նշել ժամը՝ փոխելով «T»-ից հետո արժեքը հարցումում:

api_key-ը և secret_key-ը համապատասխանում են առաջին քայլում ստացված արժեքներին, անվտանգության նկատառումներից ելնելով, ես այստեղ նշում եմ պատահական հաջորդականություններ՝ իմ սեփականի փոխարեն:

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. Տվյալներով արխիվի ներբեռնում

Մենք գալիս ենք արխիվի անուն և գրում այն ​​ֆայլի անունը փոփոխականում: Իմ հարմարության համար ես նշում եմ ժամանակաշրջանը + նշում եմ, որ սա ամպլիտուդային տվյալ է: Հաջորդը, մենք գրանցում ենք Amplitude-ից ստացված պատասխանը արխիվում:

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

Քայլ 3.4. Ֆայլերի առբերում ձեր համակարգչի թղթապանակից

Zipfile գրադարանը գործի է դրվում՝ օգնելու ֆայլեր հանել: Երրորդ տողում զգույշ եղեք և գրեք ձեր ճանապարհը, որտեղ ավելի հարմար է ձեզ հանել։

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

Քայլ 3.5. json փոխակերպում

Արխիվից ֆայլերը հանելուց հետո դուք պետք է փոխակերպեք json ֆայլերը .gz ձևաչափով և դրանք գրեք տվյալների շրջանակի մեջ՝ հետագա աշխատանքի համար։

Խնդրում ենք նկատի ունենալ, որ այստեղ դուք պետք է նորից փոխեք ուղին ձեր սեփականի վրա, և 000000-ի փոխարեն գրեք ձեր նախագծի համարը Amplitude-ից (կամ ձեռքով բացեք այն ճանապարհը, որտեղ արդյունահանվել է արխիվը և նայեք ներսում գտնվող թղթապանակի անունը):

Որպեսզի:

Փոփոխականի վրա գրացուցակ գրելը, գրացուցակից ֆայլերի ցուցակ ստանալը, դատարկ տվյալների շրջանակի ստեղծումը, time.sleep(1) tqdm-ի ճիշտ աշխատանքի համար, օղակի ներսում մենք բացում ենք .gz ֆայլերը և անմիջապես օգտագործում ենք պանդաները json կարդալու և լրացնելու համար: տվյալ տվյալների շրջանակը:

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

Քայլ 3.6. Էքսելում տվյալների շրջանակ գրելը

Excel-ում բեռնումը պարզապես օրինակ է այստեղ: Շատ դեպքերում ավելի հարմար է աշխատել ստացված տվյալների շրջանակի հետ python-ի ներսում կամ տվյալները տեղադրել պահեստում:

Դուք նաև ստիպված կլինեք փոխարինել տվյալների վերբեռնման ուղին այստեղ ձեր սեփականով:

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

Քայլ 3.7. Մենք հաշվում ենք սցենարի գործարկման ժամանակը

Ընթացիկ ժամանակի գրանցում b փոփոխականում, հաշվարկելով տարբերությունը և րոպեների քանակը, ցուցադրելով ընդհանուր րոպեները: Սա վերջին քայլն է։

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

Ամփոփում

Դուք կարող եք զանգահարել աղյուսակը և սկսել աշխատել դրա հետ՝ կանչելով amplitude_dataframe փոփոխականը, որի մեջ գրվել են տվյալները: Այն կունենա մոտ 50 սյունակ, որոնցից 80% դեպքերում դուք կօգտագործեք՝ event_type - իրադարձության անվանում, event_properties - իրադարձության պարամետրեր, event_time - իրադարձության ժամանակ, uuid - հաճախորդի id, user_properties - հաճախորդի պարամետրեր, նախ պետք է սկսել աշխատել նրանց հետ: . Եվ երբ համեմատում եք ձեր սեփական հաշվարկների թվերը Amplitude վահանակների ցուցիչների հետ, չպետք է մոռանաք, որ համակարգը օգտագործում է իր մեթոդաբանությունը եզակի հաճախորդներ/ձագարներ և այլն հաշվարկելու համար, և նախքան դա անելը, դուք պետք է անպայման կարդաք Amplitude փաստաթղթերը:

Շնորհակալություն ուշադրության համար! Այժմ դուք կարող եք վերբեռնել չմշակված իրադարձությունների տվյալները Amplitude-ում և ամբողջությամբ օգտագործել դրանք ձեր աշխատանքում:

Ամբողջ սցենարը.

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

Добавить комментарий