Ανάκτηση δεδομένων Amplitude μέσω API

Εισαγωγή

Το Amplitude έχει αποδειχθεί πολύ καλά ως εργαλείο ανάλυσης προϊόντων λόγω της εύκολης ρύθμισης συμβάντων και της ευελιξίας οπτικοποίησης του. Και συχνά υπάρχει ανάγκη να ρυθμίσετε το δικό σας μοντέλο απόδοσης, να ομαδοποιήσετε χρήστες ή να δημιουργήσετε έναν πίνακα ελέγχου σε άλλο σύστημα BI. Είναι δυνατό να πραγματοποιηθεί μια τέτοια απάτη μόνο με ακατέργαστα δεδομένα συμβάντων από το Amplitude. Αυτό το άρθρο θα σας πει πώς να αποκτήσετε αυτά τα δεδομένα με ελάχιστες γνώσεις προγραμματισμού.

Προαπαιτούμενα

  1. Ένα έργο στο Amplitude στο οποίο τα συμβάντα έχουν ήδη ρυθμιστεί σωστά και συλλέγονται στατιστικά στοιχεία για αυτά
  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, δημιουργία πλαισίου δεδομένων και μετά εγγραφή σε αρχείο
  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. Λήψη αρχείου με δεδομένα

Βρίσκουμε ένα όνομα για το αρχείο και το γράφουμε στη μεταβλητή όνομα αρχείου. Για τη διευκόλυνσή μου, υποδεικνύω την περίοδο + υποδηλώνω ότι πρόκειται για δεδομένα πλάτους. Στη συνέχεια, καταγράφουμε την απάντηση που λάβαμε από το 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 (ή να ανοίξετε με μη αυτόματο τρόπο τη διαδρομή όπου εξήχθη το αρχείο και να δείτε το όνομα του φακέλου μέσα).

Για να:

Γράψιμο ενός καταλόγου σε μια μεταβλητή, λήψη λίστας αρχείων από έναν κατάλογο, δημιουργία κενού dataframe, time.sleep(1) για να λειτουργήσει σωστά το tqdm, μέσα στον βρόχο ανοίγουμε αρχεία .gz και χρησιμοποιούμε αμέσως τα panda για να διαβάσουμε 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

Η μεταφόρτωση στο 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 name, event_properties - event parameters, event_time - event time, uuid - client id, user_properties - client parameters, θα πρέπει πρώτα να ξεκινήσετε να εργάζεστε με αυτές . Και όταν συγκρίνετε στοιχεία από τους δικούς σας υπολογισμούς με δείκτες από πίνακες εργαλείων 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))

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο