Adalw data Amplitude trwy API

Cyflwyniad

Mae Amplitude wedi profi ei hun fel offeryn dadansoddi cynnyrch diolch i'w sefydlu digwyddiadau hawdd a'i ddelweddau hyblyg. Fodd bynnag, yn aml mae angen sefydlu model priodoli personol, cynnal clwstrio defnyddwyr, neu adeiladu dangosfwrdd mewn system BI arall. Dim ond gyda data digwyddiadau crai o Amplitude y mae campau o'r fath yn bosibl. Mae'r erthygl hon yn esbonio sut i gael y data hwn gyda gwybodaeth raglennu leiafswm.

Rhagofynion

  1. Prosiect yn Amplitude lle mae digwyddiadau eisoes wedi'u ffurfweddu'n gywir ac ystadegau'n cael eu casglu ar eu cyfer
  2. Mae Python wedi'i osod (dw i'n gweithio ar fersiwn 3.8.3), ac mae darpar ddarllenydd eisoes yn gwybod sut i weithio ag ef o leiaf ar lefel sylfaenol.

Cyfarwyddyd

Cam 1: Cael allwedd API ac allwedd gyfrinachol

I lawrlwytho data, mae angen i chi gael allwedd API ac allwedd gyfrinachol yn gyntaf.

Gallwch ddod o hyd iddyn nhw drwy ddilyn y llwybr:

  1. "Rheoli data" (wedi'i leoli yn rhan chwith isaf y sgrin)
  2. Dewiswch y prosiect gofynnol y bydd y data'n cael ei lawrlwytho ohono ac ewch iddo
  3. Yn y ddewislen prosiect sy'n agor, dewiswch “Gosodiadau prosiect”
  4. Dewch o hyd i'r llinynnau allwedd-API a'r allwedd-gyfrinachol, copïwch nhw, a'u cadw mewn lle diogel.

Heb glicio, gallwch ddilyn y ddolen, sydd fel arfer yn edrych fel hyn:
analytics.amplitude.com/$$$$$$$/rheoli/prosiect/******/gosodiadau,
lle mae $$$$$$ yn mewngofnod eich sefydliad mewn amplitude, ****** yw rhif y prosiect

Cam 2: Gwirio argaeledd y llyfrgelloedd gofynnol

Y newyddion da yw eich bod bron yn sicr eisoes wedi gosod y llyfrgelloedd hyn yn ddiofyn neu wedi'u lawrlwytho, ond mae'n werth gwirio. Dyma restr gyflawn o'r llyfrgelloedd rwy'n eu defnyddio ar adeg ysgrifennu (mae'r fersiynau mewn cromfachau lle bo'n berthnasol):

  1. ceisiadau (2.10.0) - anfon cais drwy'r API i gael data
  2. pandas (1.0.1) — darllen json, creu ffrâm ddata, ac yna ei ysgrifennu i ffeil
  3. ffeil zip — echdynnu ffeiliau o archif a gafwyd trwy'r API
  4. gzip — dadbacio ffeiliau json o .gz
  5. os - cael rhestr o ffeiliau o archif heb ei ddadbacio
  6. amser — dewisol, yn mesur amser gweithredu'r sgript
  7. tqdm - dewisol, ar gyfer monitro cynnydd prosesu ffeiliau yn hawdd

Cam 3: Ysgrifennu sgript llwytho data

Awgrym: Mae'r sgript lawrlwytho llawn ar ddiwedd yr erthygl. Os yw'n well gennych, gallwch ei gael ar unwaith a chyfeirio at y cyfarwyddiadau cam wrth gam yn ôl yr angen.

Cam 3.1. Mewnforio Llyfrgelloedd

Rydym yn mewnforio'r holl lyfrgelloedd a restrir yn yr ail gam.

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

Cam 3.2. Cyflwyno cais i Amplitude

Rydym yn canfod dechrau gweithrediad y sgript ac yn ei ysgrifennu i'r newidyn a.

Mae'r dyddiad cychwyn a'r dyddiad diwedd yn gyfrifol am y cyfnod ar gyfer lawrlwytho data ac maent wedi'u hymgorffori yn nhestun y cais a anfonwyd gweinydd Osgled, yn ogystal â'r dyddiad, gallwch hefyd nodi'r awr trwy newid y gwerth ar ôl 'T' yn y cais.

Mae api_key a secret_key yn cyfateb i'r gwerthoedd a gafwyd yn y cam cyntaf; at ddibenion diogelwch, rwy'n nodi dilyniannau ar hap yma yn lle fy rhai fy hun.

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

Cam 3.3. Lawrlwytho'r archif ddata

Rydyn ni'n meddwl am enw ar gyfer yr archif ac yn ei gadw yn y newidyn enw ffeil. Er hwylustod, rwy'n nodi'r cyfnod ac yn dangos mai data osgled yw hwn. Nesaf, rydyn ni'n cadw'r ymateb a dderbyniwyd gan Osgled i'r archif.

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

Cam 3.4. Echdynnu ffeiliau i ffolder ar eich cyfrifiadur

Bydd llyfrgell y ffeiliau zip yn eich helpu i echdynnu ffeiliau. Byddwch yn ofalus yn y drydedd linell a nodwch y llwybr i'ch lleoliad echdynnu dewisol.

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

Cam 3.5. Trosi JSON

Ar ôl echdynnu ffeiliau o'r archif, mae angen i chi drosi'r ffeiliau json, sydd ar fformat .gz, a'u hysgrifennu i ffrâm ddata ar gyfer gwaith pellach.

Sylwch fod angen i chi newid y llwybr eto i'ch llwybr eich hun yma, ac yn lle 000000 ysgrifennwch rif eich prosiect o Amplitude (neu agorwch y llwybr lle cafodd yr archif ei dynnu â llaw ac edrychwch ar enw'r ffolder y tu mewn).

Yn nhrefn blaenoriaeth:

Cadw cyfeiriadur i newidyn, cael rhestr o ffeiliau o'r cyfeiriadur, creu ffrâm ddata wag, time.sleep(1) er mwyn i tqdm weithio'n gywir, agor ffeiliau .gz y tu mewn i'r ddolen a darllen json ar unwaith gan ddefnyddio pandas a llenwi'r ffrâm ddata penodedig.

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

Cam 3.6. Cadw'r ffrâm ddata i Excel

Dim ond enghraifft yw allforio i Excel. Mewn llawer o achosion, mae'n fwy cyfleus gweithio gyda'r ffrâm ddata sy'n deillio o hyn o fewn Python neu storio'r data mewn storfa.

Bydd yn rhaid i chi hefyd ddisodli'r llwybr lawrlwytho data yma gyda'ch un chi'ch hun.

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

Cam 3.7. Cyfrifwch amser gweithredu'r sgript

Ysgrifennwch yr amser cyfredol i newidyn b, cyfrifwch y gwahaniaeth a nifer y munudau, ac arddangoswch gyfanswm y munudau. Dyma'r cam olaf.

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

Casgliad

Gallwch gael mynediad at y tabl a dechrau gweithio gydag ef drwy alw'r newidyn amplitude_dataframe, sef lle cafodd y data ei gadw. Bydd ganddo tua 50 o golofnau, ac 80% o'r rhain byddwch yn defnyddio: event_type (enw'r digwyddiad), event_properties (paramedrau'r digwyddiad), event_time (amser y digwyddiad), uuid (ID y cleient), a user_properties (paramedrau'r cleient). Dyma'r cyntaf i ddechrau gweithio gyda nhw. Wrth gymharu eich cyfrifiadau eich hun â'r metrigau mewn dangosfyrddau Amplitude, cofiwch fod y system yn defnyddio ei fethodoleg ei hun ar gyfer cyfrifo cleientiaid/twneli unigryw, ac ati, ac mae'n hanfodol ymgynghori â dogfennaeth Amplitude cyn gwneud hynny.

Diolch am eich sylw! Gallwch nawr allforio data digwyddiadau crai i Amplitude a'i ddefnyddio'n llawn yn eich gwaith.

Y sgript gyfan:

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

Ffynhonnell: hab.com

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd â diogelwch DDoS, gweinyddwyr VPS VDS 🔥 Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster