Гирифтани маълумоти амплитуда тавассути API

Муқаддима

Амплитуда аз сабаби танзими осони рӯйдодҳо ва чандирии визуализатсияи худ ҳамчун воситаи таҳлили маҳсулот худро хеле хуб исбот кардааст. Ва аксар вақт зарурати таъсиси модели аттрибутсияи худ, корбарони кластер ё сохтани панели идоракунӣ дар системаи дигари 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, сохтани dataframe ва баъд ба файл навиштан
  3. zipfile - баровардани файлҳо аз бойгоние, ки тавассути API гирифта шудааст
  4. gzip - кушодани файлҳои 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. Зеркашии архив бо маълумот

Мо номеро барои архив меорем ва онро ба тағирёбандаи номи файл менависем. Барои роҳати ман, ман давраро нишон медиҳам + нишон медиҳам, ки ин маълумоти амплитуда аст. Баъдан, мо посухи гирифтаи амплитударо ба бойгонӣ сабт мекунем.

# Скачивание архива с данными
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 табдил диҳед ва онҳоро барои кори минбаъда ба чаҳорчӯбаи dataframe нависед.

Лутфан таваҷҷӯҳ намоед, ки дар ин ҷо шумо бояд роҳро дубора ба роҳи худатон иваз кунед ва ба ҷои 000000 рақами лоиҳаи худро аз Амплитуда нависед (ё роҳеро, ки бойгонӣ истихроҷ карда шудааст, дастӣ кушоед ва ба номи ҷузвдони дохили он нигаред).

Барои:

Навиштани директория ба тағирёбанда, гирифтани рӯйхати файлҳо аз директория, сохтани dataframe холӣ, 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. Навиштани dataframe дар Excel

Боргузорӣ ба 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 бор кунед ва онро дар кори худ пурра истифода баред.

Тамоми скрипт:

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

Манбаъ: will.com

Илова Эзоҳ