Query Service in Jupyter Notebook
Mit Adobe Experience Platform können Sie SQL (Structured Query Language) in Data Science Workspace verwenden, indem Sie Query Service als Standardfunktion in JupyterLab integrieren.
In diesem Tutorial werden Beispiel-SQL-Abfragen für gängige Anwendungsfälle zur Erforschung, Transformation und Analyse von Adobe Analytics-Daten veranschaulicht.
Erste Schritte
Bevor Sie mit diesem Tutorial beginnen, müssen Sie folgende Voraussetzungen erfüllen:
-
Zugriff auf Adobe Experience Platform. Wenn Sie keinen Zugriff auf eine Organisation in Experience Platform haben, wenden Sie sich an Ihren Systemadministrator, bevor Sie fortfahren
-
Ein Adobe Analytics -Datensatz
-
Ein Verständnis der folgenden Schlüsselkonzepte, die in diesem Tutorial verwendet werden:
Zugriff auf JupyterLab und Query Service access-jupyterlab-and-query-service
-
Navigieren Sie in Experience Platform in der linken Navigationsspalte zu Notebooks . Warten Sie einen Moment, bis JupyterLab geladen ist.
note note NOTE Wenn keine neue Registerkarte "Launcher"angezeigt wird, öffnen Sie eine neue Registerkarte "Launcher", indem Sie auf Datei klicken und dann Neuer Launcher auswählen. -
Klicken Sie auf der Registerkarte „Launcher“ auf das Symbol Leer in einer Python 3-Umgebung, um ein leeres Notebook zu öffnen.
note note NOTE Python 3 ist derzeit die einzige unterstützte Umgebung für Query Service in Notebooks. -
Klicken Sie in der linken Auswahlleiste auf das Symbol Daten und doppelklicken Sie auf das Verzeichnis Datensätze, um alle Datensätze aufzulisten.
-
Suchen Sie einen Adobe Analytics -Datensatz, den Sie untersuchen möchten, und klicken Sie mit der rechten Maustaste auf die Liste und klicken Sie auf Daten in Notebook abfragen , um SQL-Abfragen im leeren Notebook zu generieren.
-
Klicken Sie auf die erste generierte Zelle, die die Funktion
qs_connect()
enthält, und führen Sie sie durch Klicken auf die Wiedergabeschaltfläche aus. Diese Funktion stellt eine Verbindung zwischen Ihrem Notebook Instanz und der Query Service. -
Kopie der Name des Adobe Analytics Datensatz aus der zweiten generierten SQL-Abfrage nach unten, ist dies der Wert nach
FROM
. -
Fügen Sie eine neue Notebook-Zelle ein, indem Sie auf die Schaltfläche + klicken.
-
Kopieren Sie die folgenden Importerklärungen, fügen Sie sie in eine neue Zelle ein und führen Sie sie aus. Diese Erklärungen werden zur Visualisierung Ihrer Daten verwendet:
code language-python import plotly.plotly as py import plotly.graph_objs as go from plotly.offline import iplot
-
Kopieren Sie anschließend die folgenden Variablen und fügen Sie sie in eine neue Zelle ein. Ändern Sie die Werte nach Bedarf und führen Sie sie dann aus.
code language-python target_table = "your Adobe Analytics dataset name" target_year = "2019" target_month = "04" target_day = "01"
target_table
: Name Ihres Adobe Analytics -Datensatzes.- 0: Bestimmtes Jahr, aus dem die Zieldaten stammen.
target_year
target_month
: Bestimmter Monat, aus dem die Zielgruppe stammt.target_day
: Bestimmter Tag, aus dem die Zieldaten stammen.
note note NOTE Sie können diese Werte jederzeit ändern. Führen Sie dabei die Variablenzelle aus, damit die Änderungen angewendet werden.
Abfragen der Daten query-your-data
Geben Sie die folgenden SQL-Abfragen in die einzelnen Notebook-Zellen ein. Führen Sie eine Abfrage aus, indem Sie auf ihrer Zelle und anschließend die Button zum Abspielen auswählen. Erfolgreiche Abfrageergebnisse oder Fehlerprotokolle werden unterhalb der ausgeführten Zelle angezeigt.
Wenn ein Notebook über einen längeren Zeitraum inaktiv ist, kann die Verbindung zwischen dem Notebook und Query Service unterbrochen werden. Starten Sie in solchen Fällen JupyterLab neu, indem Sie die Schaltfläche Neu starten oben rechts neben dem Betriebsschalter auswählen.
Der Notebook-Kernel wird zurückgesetzt, aber die Zellen bleiben, führen Sie alle Zellen erneut aus, um dort weiterzumachen, wo Sie aufgehört haben.
Stündliche Besucherzahl hourly-visitor-count
Die folgende Abfrage gibt die stündliche Besucherzahl für ein bestimmtes Datum zurück:
Abfrage
%%read_sql hourly_visitor -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(DISTINCT concat(enduserids._experience.aaid.id,
_experience.analytics.session.num)) AS Visit_Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY Day, Hour
ORDER BY Hour;
Im obigen Abfrage wird der Zeitstempel in der WHERE
Klausel auf den Wert von target_year
festgelegt. Fügen Sie Variablen in SQL-Abfragen ein, indem Sie diese in geschweifte Klammern setzen ({}
).
Die erste Zeile der Abfrage enthält die optionale Variable hourly_visitor
. Die Abfrage-Ergebnisse werden in dieser Variablen als Pandas-Dataframe gespeichert. Das Speichern der Ergebnisse in einem Dataframe ermöglicht es Ihnen, die Abfrage Ergebnisse später mit einem gewünschten Python Paket zu visualisieren. Führen Sie den folgenden Python Code in einer neuen Zelle aus, um eine Balkendiagramm zu generieren:
trace = go.Bar(
x = hourly_visitor['Hour'],
y = hourly_visitor['Visit_Count'],
name = "Visitor Count"
)
layout = go.Layout(
title = 'Visit Count by Hour of Day',
width = 1200,
height = 600,
xaxis = dict(title = 'Hour of Day'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = [trace], layout = layout)
iplot(fig)
Stündliche Aktivitätenzahl hourly-activity-count
Die folgende Abfrage gibt die Anzahl der stündlichen Aktionen für ein bestimmtes Datum zurück:
Abfrage
%%read_sql hourly_actions -d -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(concat(enduserids._experience.aaid.id,
_experience.analytics.session.num,
_experience.analytics.session.depth)) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY Day, Hour
ORDER BY Hour;
Die Ausführung der oben genannten Abfrage speichert die Ergebnisse in hourly_actions
als Dataframe. Führen Sie die folgende Funktion in einer neuen Zelle aus, um eine Vorschau der Ergebnisse anzuzeigen:
hourly_actions.head()
Die obige Abfrage kann geändert werden, um die Anzahl der stündlichen Aktionen für einen bestimmten Datumsbereich zurückzugeben, indem logische Operatoren in der WHERE-Klausel verwendet werden:
Abfrage
%%read_sql hourly_actions_date_range -d -c QS_CONNECTION
SELECT Substring(timestamp, 1, 10) AS Day,
Substring(timestamp, 12, 2) AS Hour,
Count(concat(enduserids._experience.aaid.id,
_experience.analytics.session.num,
_experience.analytics.session.depth)) AS Count
FROM {target_table}
WHERE timestamp >= TO_TIMESTAMP('2019-06-01 00', 'YYYY-MM-DD HH')
AND timestamp <= TO_TIMESTAMP('2019-06-02 23', 'YYYY-MM-DD HH')
GROUP BY Day, Hour
ORDER BY Hour;
Die Ausführung der geänderten Abfrage speichert die Ergebnisse in hourly_actions_date_range
als Dataframe. Führen Sie die folgende Funktion in einer neuen Zelle aus, um eine Vorschau der Ergebnisse anzuzeigen:
hourly_actions_date_rage.head()
Anzahl der Ereignisse pro Besuchersitzung number-of-events-per-visitor-session
Die folgende Abfrage gibt die Anzahl der Ereignisse pro Besuchersitzung für ein bestimmtes Datum zurück:
Abfrage
%%read_sql events_per_session -c QS_CONNECTION
SELECT concat(enduserids._experience.aaid.id,
'-#',
_experience.analytics.session.num) AS aaid_sess_key,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY aaid_sess_key
ORDER BY Count DESC;
Führen Sie den folgenden Python -Code aus, um ein Histogramm für die Anzahl der Ereignisse pro Besuchssitzung zu generieren:
data = [go.Histogram(x = events_per_session['Count'])]
layout = go.Layout(
title = 'Histogram of Number of Events per Visit Session',
xaxis = dict(title = 'Number of Events'),
yaxis = dict(title = 'Count')
)
fig = go.Figure(data = data, layout = layout)
iplot(fig)
Beliebte Seiten an einem bestimmten Tag popular-pages-for-a-given-day
Die folgende Abfrage gibt die zehn beliebtesten Seiten an einem festgelegten Datum zurück:
Abfrage
%%read_sql popular_pages -c QS_CONNECTION
SELECT web.webpagedetails.name AS Page_Name,
Sum(web.webpagedetails.pageviews.value) AS Page_Views
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY web.webpagedetails.name
ORDER BY page_views DESC
LIMIT 10;
Aktive Benutzer an einem bestimmten Tag active-users-for-a-given-day
In der folgenden Abfrage werden die zehn aktivsten Benutzer an einem bestimmten Datum zurückgegeben:
Abfrage
%%read_sql active_users -c QS_CONNECTION
SELECT enduserids._experience.aaid.id AS aaid,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY aaid
ORDER BY Count DESC
LIMIT 10;
Aktive Städte nach Aktivität des Benutzers active-cities-by-user-activity
In der folgenden Abfrage werden die zehn Städte zurückgegeben, in denen die meisten Aktivitäten an einem bestimmten Datum generiert wurden:
Abfrage
%%read_sql active_cities -c QS_CONNECTION
SELECT concat(placeContext.geo.stateProvince, ' - ', placeContext.geo.city) AS state_city,
Count(timestamp) AS Count
FROM {target_table}
WHERE TIMESTAMP = to_timestamp('{target_year}-{target_month}-{target_day}')
GROUP BY state_city
ORDER BY Count DESC
LIMIT 10;
Nächste Schritte
In diesem Tutorial wurden einige Beispielverwendungsfälle für die Verwendung von Query Service in Jupyter Notebooks erläutert. Folgen Sie dem Tutorial Analysieren Ihrer Daten mit Jupyter Notebooks, um zu sehen, wie ähnliche Vorgänge mit dem Data Access SDK ausgeführt werden.