Преузимање података амплитуде преко АПИ-ја

Увод

Амплитуде се веома добро показао као алат за анализу производа због лаког подешавања догађаја и флексибилности визуелизације. И често постоји потреба да подесите сопствени модел атрибуције, групе корисника или направите контролну таблу у другом БИ систему. Такву превару је могуће извести само са сировим подацима о догађајима из Амплитуде. Овај чланак ће вам рећи како да добијете ове податке уз минимално знање програмирања.

Предуслови

  1. Пројекат у Амплитуди у којем су догађаји већ исправно конфигурисани и о њима се прикупља статистика
  2. Инсталиран је Питхон (радим у верзији 3.8.3), са којим потенцијални читалац већ може да ради барем на основном нивоу

Инструкција

Корак 1. Добијање АПИ-кључа и тајног кључа

Да бисте отпремили податке, прво морате да набавите АПИ кључ и тајни кључ.

Можете их пронаћи тако што ћете пратити следећу путању:

  1. „Управљање подацима“ (налази се у доњем левом углу екрана)
  2. Изаберите жељени пројекат са којег ће се преузети подаци и идите на њега
  3. У менију пројекта који се отвори изаберите „Подешавања пројекта“
  4. Проналазимо низове АПИ-кључа и тајног кључа, копирамо их и чувамо на безбедном месту.

Без клика, можете пратити везу, која генерално изгледа овако:
аналитицс.амплитуде.цом/$$$$$$$/манаге/пројецт/******/сеттингс,
где је $$$$$$ амплитуда за пријаву ваше организације, ****** је број пројекта

Корак 2: Провера присуства потребних библиотека

Добра вест је да скоро сигурно већ имате ове библиотеке подразумевано инсталиране или преузете, али морате да проверите. Комплетна листа библиотека које сам користио у време писања (верзије у заградама су назначене где је то прикладно):

  1. захтеви (2.10.0) - слање захтева преко АПИ-ја за пријем података
  2. пандас (1.0.1) - читање јсон-а, креирање оквира података и затим писање у датотеку
  3. зипфиле - издваја датотеке из архиве примљене преко АПИ-ја
  4. гзип - распакивање јсон датотека из .гз
  5. ос - добијање листе датотека из неотпаковане архиве
  6. време - опционо, измерите време рада скрипте
  7. ткдм - опционо, за лако праћење напретка обраде датотека

Корак 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. Подношење захтева Амплитуди

Хајде да откријемо почетак извршавања скрипте и запишемо га у променљиву а.

датум почетка и датум завршетка су одговорни за период преузимања података и уграђени су у текст послатог захтева серверу Амплитуде, а поред датума можете одредити и сат променом вредности иза 'Т' у захтеву.

апи_кеи и сецрет_кеи одговарају вредностима добијеним у првом кораку; из безбедносних разлога, овде наводим насумичне секвенце уместо своје.

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. Преузимање датотека из фасцикле на вашем рачунару

Библиотека зипфиле улази у игру како би помогла при екстракцији датотека. У трећем реду будите опрезни и запишите своју путању где вам је згодније да извучете.

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

Корак 3.5. јсон конверзија

Након што извучете датотеке из архиве, потребно је да конвертујете јсон датотеке у .гз формат и да их запишете у датафраме за даљи рад.

Имајте на уму да овде треба поново да промените путању у своју, и уместо 000000 упишите број свог пројекта из Амплитуде (или ручно отворите путању где је архива извучена и погледајте назив фасцикле унутра).

У реду:

Писање директоријума у ​​променљиву, добијање листе датотека из директоријума, креирање празног оквира података, тиме.слееп(1) да ткдм ради исправно, унутар петље отварамо .гз датотеке и одмах користимо пандас да читамо јсон и попуњавамо дати оквир података.

# Преобразование 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-файл
amplitude_dataframe.to_excel('C:\Users\...\'+filename+'.xlsx',index=False)
print('5. Dataframe успешно записан в файл ' + filename)

Корак 3.7. Рачунамо време рада скрипте

Снимање тренутног времена у варијаблу б, израчунавање разлике и броја минута, приказивање укупних минута. Ово је последњи корак.

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

Закључак

Можете позвати табелу и почети да радите са њом тако што ћете позвати променљиву амплитуде_датафраме у коју су подаци уписани. Имаће око 50 колона, од којих ћете у 80% случајева користити: евент_типе - назив догађаја, евент_пропертиес - параметри догађаја, евент_тиме - време догађаја, ууид - ид клијента, усер_пропертиес - параметри клијента, прво треба да почнете да радите са њима . А када упоредите бројке из сопствених прорачуна са индикаторима са контролне табле Амплитуде, не смете заборавити да систем користи сопствену методологију за израчунавање јединствених клијената/токова итд., а пре него што то урадите, свакако треба да прочитате документацију о Амплитуди.

Хвала на пажњи! Сада можете да отпремите необрађене податке о догађајима у Амплитуде и да их у потпуности користите у свом раду.

Цела скрипта:

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

Извор: ввв.хабр.цом

Додај коментар