Ներածություն
Amplitude-ն իրեն շատ լավ է դրսևորել որպես արտադրանքի վերլուծության գործիք՝ իր հեշտ իրադարձությունների տեղադրման և վիզուալացման ճկունության շնորհիվ: Եվ հաճախ անհրաժեշտություն է առաջանում ստեղծել ձեր սեփական վերագրման մոդելը, խմբավորել օգտվողներին կամ ստեղծել վահանակ այլ BI համակարգում: Նման խարդախություն հնարավոր է իրականացնել միայն Amplitude-ի հում իրադարձությունների տվյալների միջոցով: Այս հոդվածը ձեզ կպատմի, թե ինչպես ստանալ այս տվյալները ծրագրավորման նվազագույն գիտելիքներով:
Նախադրյալներ
- Ամպլիտուդով նախագիծ, որտեղ իրադարձություններն արդեն իսկ ճիշտ կազմաձևված են և դրանց վերաբերյալ վիճակագրություն է հավաքվում
- Python-ը տեղադրված է (ես աշխատում եմ 3.8.3 տարբերակում), որի հետ պոտենցիալ ընթերցողն արդեն կարող է աշխատել առնվազն հիմնական մակարդակում։
Հրահանգավորում
Քայլ 1. API-բանալու և գաղտնի բանալիների ստացում
Տվյալները վերբեռնելու համար նախ պետք է ձեռք բերել API բանալի և գաղտնի բանալի:
Դուք կարող եք գտնել դրանք՝ հետևելով հետևյալ ուղուն.
- «Կառավարել տվյալները» (գտնվում է էկրանի ներքևի ձախ մասում)
- Ընտրեք ցանկալի նախագիծը, որից տվյալները կներբեռնվեն և անցեք դրան
- Ծրագրի ընտրացանկից, որը բացվում է, ընտրեք «Նախագծի կարգավորումներ»
- Մենք գտնում ենք API-բանալու և գաղտնի բանալիների տողերը, պատճենում և պահում դրանք ապահով տեղում:
Առանց սեղմելու կարող եք հետևել հղմանը, որն ընդհանուր առմամբ ունի հետևյալ տեսքը.
analytics.amplitude.com/$$$$$$$$/manage/project/******/settings,
որտեղ $$$$$$-ը ձեր կազմակերպության ամպլիտուդային մուտքն է, ******-ը ծրագրի համարն է
Քայլ 2. Ստուգելով անհրաժեշտ գրադարանների առկայությունը
Լավ նորությունն այն է, որ դուք գրեթե հաստատ արդեն ունեք այս գրադարանները լռելյայն տեղադրված կամ ներբեռնված, բայց դուք պետք է ստուգեք: Գրադարանների ամբողջական ցանկը, որոնք ես օգտագործել եմ գրելու պահին (փակագծերում տրված տարբերակները նշված են, որտեղ անհրաժեշտ է).
- հարցումներ (2.10.0) - տվյալներ ստանալու համար հարցում ուղարկելը api-ի միջոցով
- pandas (1.0.1) - կարդալ json, ստեղծել տվյալների շրջանակ և այնուհետև գրել ֆայլին
- zipfile - ֆայլեր հանել API-ի միջոցով ստացված արխիվից
- gzip - unpacking json ֆայլերը .gz-ից
- os - չփաթեթավորված արխիվից ֆայլերի ցուցակ ստանալը
- ժամանակ - ընտրովի, չափեք սցենարի գործարկման ժամանակը
- 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