Hentning af amplitudedata via API

Indledning

Amplitude har vist sig meget godt som et produktanalyseværktøj på grund af dets nemme hændelsesopsætning og visualiseringsfleksibilitet. Og ofte er der behov for at opsætte din egen tilskrivningsmodel, klynge brugere eller bygge et dashboard i et andet BI-system. Det er kun muligt at udføre en sådan svindel med rå hændelsesdata fra Amplitude. Denne artikel vil fortælle dig, hvordan du får disse data med minimal programmeringsviden.

Forudsætninger

  1. Et projekt i Amplitude, hvor hændelser allerede er konfigureret korrekt, og der indsamles statistik på dem
  2. Python er installeret (jeg arbejder i version 3.8.3), som den potentielle læser allerede kan arbejde med i det mindste på et grundlæggende niveau

Instruktion

Trin 1. Indhentning af API-nøgle og hemmelig nøgle

For at uploade data skal du først anskaffe en API-nøgle og en hemmelig nøgle.

Du kan finde dem ved at følge følgende sti:

  1. "Administrer data" (placeret nederst til venstre på skærmen)
  2. Vælg det ønskede projekt, hvorfra data skal downloades, og gå til det
  3. I projektmenuen, der åbnes, skal du vælge "Projektindstillinger"
  4. Vi finder API-nøgle- og hemmelige-nøgle-strengene, kopierer og gemmer dem et sikkert sted.

Uden at klikke kan du følge linket, som generelt ser sådan ud:
analytics.amplitude.com/$$$$$$$/manage/project/********/settings,
hvor $$$$$$ er din organisations amplitude-login, ****** er projektnummeret

Trin 2: Kontrol af tilstedeværelsen af ​​de nødvendige biblioteker

Den gode nyhed er, at du næsten helt sikkert allerede har disse biblioteker installeret som standard eller downloadet, men du skal tjekke. Den komplette liste over biblioteker, jeg brugte i skrivende stund (versioner i parentes er angivet, hvor det er relevant):

  1. anmodninger (2.10.0) - afsendelse af en anmodning via api for at modtage data
  2. pandas (1.0.1) - læser json, laver en dataramme og skriver derefter til en fil
  3. zipfil - udpak filer fra et arkiv modtaget via API'et
  4. gzip - udpakning af json-filer fra .gz
  5. os - få en liste over filer fra et udpakket arkiv
  6. tid – valgfrit, mål scriptets køretid
  7. tqdm - valgfri, til nem overvågning af filbehandlingsfremskridt

Trin 3. Skrivning af et dataindlæsningsscript

Tip: det fulde download-script er i slutningen af ​​artiklen; hvis du ønsker det, kan du straks tage det og henvise til trin-for-trin forklaringer, hvis det er nødvendigt.

Trin 3.1. Import af biblioteker

Vi importerer alle de biblioteker, der er anført i andet trin.

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

Trin 3.2. Indsendelse af en anmodning til Amplitude

Lad os registrere starten af ​​scriptudførelse og skrive det til variabel a.

startdato og slutdato er ansvarlig for perioden for upload af data og er indbygget i teksten i den sendte anmodning til Amplitude-serveren; udover datoen kan du også angive timen ved at ændre værdien efter 'T' i anmodningen.

api_key og secret_key svarer til værdierne opnået i det første trin; af sikkerhedsmæssige årsager angiver jeg tilfældige sekvenser her i stedet for min egen.

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

Trin 3.3. Download af et arkiv med data

Vi finder på et navn til arkivet og skriver det til variabelen filnavn. For nemheds skyld angiver jeg perioden + angiver, at dette er amplitudedata. Dernæst registrerer vi det modtagne svar fra Amplitude i arkivet.

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

Trin 3.4. Henter filer fra en mappe på din computer

Zipfil-biblioteket kommer i spil for at hjælpe med at udpakke filer. I tredje linje skal du være forsigtig og skrive din vej ned, hvor det er mere bekvemt for dig at udtrække.

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

Trin 3.5. json konvertering

Efter at have udtrukket filerne fra arkivet, skal du konvertere json-filer i .gz-format og skrive dem ind i en dataramme for yderligere arbejde.

Bemærk, at du her skal ændre stien igen til din egen, og i stedet for 000000 skrive dit projektnummer fra Amplitude (eller manuelt åbne stien, hvor arkivet blev udtrukket, og se på navnet på mappen indeni).

I rækkefølge:

At skrive en mappe til en variabel, hente en liste over filer fra en mappe, oprette en tom dataramme, time.sleep(1) for at tqdm fungerer korrekt, inde i løkken åbner vi .gz-filer og bruger straks pandaer til at læse json og udfylde den givne dataramme.

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

Trin 3.6. Skriver dataramme i excel

Uploaden til excel er blot et eksempel her. I mange tilfælde er det mere bekvemt at arbejde med den resulterende dataramme inde i python eller lægge dataene på lager.

Du skal også erstatte dataoverførselsstien her med din egen.

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

Trin 3.7. Vi tæller køretiden for scriptet

Registrering af den aktuelle tid i variablen b, beregning af forskellen og antallet af minutter, visning af det samlede antal minutter. Dette er det sidste skridt.

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

Konklusion

Du kan kalde tabellen og begynde at arbejde med den ved at kalde variablen amplitude_dataframe, som dataene blev skrevet ind i. Den vil have omkring 50 kolonner, hvoraf du i 80 % af tilfældene vil bruge: hændelsestype - hændelsesnavn, hændelsesegenskaber - hændelsesparametre, hændelsestidspunkt - hændelsestidspunkt, uuid - klient-id, bruger_egenskaber - klientparametre, du bør begynde at arbejde med dem først . Og når man sammenligner tal fra egne beregninger med indikatorer fra Amplitude dashboards, må man ikke glemme, at systemet anvender sin egen metodik til beregning af unikke klienter/tragte mv., og før man gør dette, bør man bestemt læse Amplitude dokumentationen.

Tak for din opmærksomhed! Nu kan du uploade rå hændelsesdata til Amplitude og fuldt ud bruge dem i dit arbejde.

Hele manuskriptet:

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

Kilde: www.habr.com

Tilføj en kommentar