Amplitude-Daten über die API abrufen

Einführung

Amplitude hat sich als hervorragendes Tool für Produktanalysen etabliert, dank der einfachen Ereignisgestaltung und der flexiblen Visualisierungen. Oft besteht der Bedarf, ein eigenes Attributionsmodell einzurichten, Nutzer zu clustern oder ein Dashboard in einem anderen BI-System zu erstellen. Solche Manipulationen sind nur möglich, wenn man Rohdaten zu Ereignissen aus Amplitude hat. In diesem Artikel erfahren Sie, wie Sie diese Daten mit minimalen Programmierkenntnissen erhalten.

Voraussetzung

  1. Ein Projekt in Amplitude, in dem Ereignisse bereits korrekt eingerichtet sind und Statistiken gesammelt werden
  2. Python ist installiert (ich arbeite mit Version 3.8.3), und der potenzielle Leser sollte zumindest über grundlegende Kenntnisse im Umgang damit verfügen

Anleitung

Schritt 1. API-Key und Secret-Key abrufen

Um die Daten zu exportieren, müssen zunächst der API-Key und der Secret-Key abgerufen werden.

Diese finden Sie, indem Sie folgenden Pfad gehen:

  1. „Daten verwalten“ (im linken unteren Teil des Bildschirms)
  2. Wählen Sie das benötigte Projekt aus, aus dem die Daten exportiert werden sollen, und wechseln Sie zu diesem
  3. Im geöffneten Menü des Projekts wählen Sie „Projekteinstellungen“
  4. Wir finden die API-Key- und Secret-Key-Zeilen, kopieren und speichern sie an einem sicheren Ort.

Ohne klicken können Sie dem Link folgen, der allgemein so aussieht:
analytics.amplitude.com/$$$$$$$/manage/project/******/settings,
wo $$$$$$ — der Login Ihrer Organisation bei Amplitude, ****** — die Projektnummer

Schritt 2. Überprüfung der erforderlichen Bibliotheken

Die gute Nachricht ist, dass diese Bibliotheken höchstwahrscheinlich bereits standardmäßig installiert oder heruntergeladen sind, aber es ist notwendig, dies zu überprüfen. Die vollständige Liste der von mir verwendeten Bibliotheken zum Zeitpunkt des Schreibens des Artikels (Versionen in Klammern, wo zutreffend):

  1. requests (2.10.0) - Sendung einer Anfrage über die API zur Datenabfrage
  2. pandas (1.0.1) - Lesen von JSON, Erstellen eines DataFrames und anschließendes Schreiben in eine Datei
  3. zipfile - Dateien aus dem über die API erhaltenen Archiv extrahieren
  4. gzip - Entpacken von JSON-Dateien aus .gz
  5. os - Abrufen der Dateiliste aus dem entpackten Archiv
  6. time - optional, zur Messung der Skriptlaufzeit
  7. tqdm - optional, zur bequemeren Überwachung des Fortschritts bei der Verarbeitung von Dateien

Schritt 3. Schreiben des Datenupload-Skripts

Hinweis: Das vollständige Download-Skript befindet sich am Ende des Artikels. Bei Bedarf können Sie es direkt übernehmen und die schrittweisen Erklärungen konsultieren.

Schritt 3.1. Bibliotheken importieren

Wir importieren alle Bibliotheken, die im zweiten Schritt aufgeführt sind.

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

Schritt 3.2. Anfrage an Amplitude senden

Wir messen den Beginn der Skriptausführung und speichern diesen in der Variable a.

startdate und enddate definieren den Zeitraum für den Datenexport und werden in den gesendeten Anfrage-Text an der Server Amplitude integriert. Neben dem Datum kann auch die Uhrzeit angegeben werden, indem der Wert nach 'T' in der Anfrage geändert wird.

api_key und secret_key entsprechen den Werten, die im ersten Schritt erhalten wurden. Zur Sicherheit gebe ich hier zufällige Sequenzen anstelle meiner eigenen an.

a = time.time()
# Parameter für das Start- und Enddatum
startdate = '20200627'
enddate = '20200628'

api_key = 'kldfg844203rkwekfjs9234'
secret_key = '094tfjdsfmw93mxwfek'
# Anfrage an Amplitude senden
response = requests.get('https://amplitude.com/api/2/export?start=' + startdate + 'T0&end=' + enddate + 'T0', auth=(api_key, secret_key))
print('1. Anfrage gesendet')

Schritt 3.3. Archiv mit Daten herunterladen

Wir benennen das Archiv und speichern den Namen in der Variable filename. Zur eigenen Übersicht gebe ich den Zeitraum an und notiere, dass dies Amplitude-Daten sind. Anschließend speichern wir die Antwort von Amplitude im Archiv.

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

Schritt 3.4: Dateien im Ordner auf dem Computer extrahieren.

Hier kommt die Bibliothek zipfile ins Spiel, die uns beim Extrahieren der Dateien hilft. Seien Sie in der dritten Zeile vorsichtig und geben Sie den Pfad an, wo Sie die Extraktion bevorzugen.

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

Schritt 3.5: JSON konvertieren.

Nach dem Extrahieren der Dateien aus dem Archiv müssen die JSON-Dateien, die im .gz-Format vorliegen, konvertiert und in ein DataFrame für die weitere Verarbeitung geschrieben werden.

Ich weise darauf hin, dass Sie hier erneut Ihren eigenen Pfad angeben müssen, und anstelle von 000000 Ihre Projektnummer aus Amplitude schreiben sollten (oder den extrahierten Archivordner manuell öffnen und den Namen des darin enthaltenen Ordners ansehen).

In der Reihenfolge:

Aufzeichnung des Verzeichnisses in einer Variablen, Abruf der Dateiliste aus dem Verzeichnis, Erstellung eines leeren DataFrames, time.sleep(1) für die korrekte Funktion von tqdm, innerhalb der Schleife öffnen wir die .gz-Dateien und lesen sie sofort mit pandas und fügen das angegebene DataFrame hinzu.

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

Schritt 3.6: DataFrame in Excel schreiben.

Der Export in Excel ist hier einfach ein Beispiel. In vielen Fällen ist es bequemer, mit dem erhaltenen Datenrahmen in Python zu arbeiten oder die Daten in einem Speicher abzulegen.

Den Exportpfad der Daten müssen Sie hier ebenfalls anpassen.

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

Schritt 3.7. Berechnung der Laufzeit des Skripts

Aktuelle Zeit in die Variable b speichern, Differenz und Anzahl der Minuten berechnen, Gesamtdauer in Minuten ausgeben. Das ist der letzte Schritt.

b = time.time()
diff = b-a
minutes = diff//60
print('Die Ausführung des Codes dauerte: {:.0f} Minute(n)'.format(minutes))

Fazit

Um die Tabelle aufzurufen und damit zu arbeiten, können Sie die Variable amplitude_dataframe verwenden, in der die Daten gespeichert sind. Diese enthält etwa 50 Spalten, von denen Sie in 80 % der Fälle folgende verwenden werden: event_type – der Name des Events, event_properties – die Parameter des Events, event_time – die Zeit des Events, uuid – die ID des Kunden, user_properties – die Parameter des Kunden. Beginnen Sie zunächst mit diesen. Und beim Vergleich der Zahlen aus Ihren eigenen Berechnungen mit den Werten aus den Amplitude-Dashboards sollte man nicht vergessen, dass das System seine eigene Methodik zur Berechnung von einzigartigen Kunden/Funnels usw. verwendet; daher ist es wichtig, sich zuvor mit der Amplitude-Dokumentation vertraut zu machen.

Vielen Dank für Ihre Aufmerksamkeit! Jetzt können Sie Rohdaten über Ereignisse in Amplitude exportieren und sie in Ihrer Arbeit vollständig nutzen.

Das gesamte Skript:

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

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster