Query Service in Jupyter Notebook

Adobe Experience Platform ermöglicht die Verwendung von SQL (Structured Query Language) in Data Science Workspace durch Integration Query Service in JupyterLab als Standardfunktion.

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 in Experience Platform keinen Zugriff auf eine IMS-Organisation 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

  1. Navigieren Sie in Experience Platform in der linken Navigationsspalte zu Notebooks . Warten Sie einen Moment, bis JupyterLab geladen ist.

    HINWEIS

    Wenn keine neue Registerkarte "Launcher"angezeigt wird, öffnen Sie eine neue Registerkarte "Launcher", indem Sie auf Datei klicken und dann Neuer Launcher auswählen.

  2. Klicken Sie auf der Registerkarte „Launcher“ auf das Symbol Leer in einer Python 3-Umgebung, um ein leeres Notebook zu öffnen.

    HINWEIS

    Python 3 ist derzeit die einzige unterstützte Umgebung für Query Service in Notebooks.

  3. Klicken Sie in der linken Auswahlleiste auf das Symbol Daten und doppelklicken Sie auf das Verzeichnis Datensätze, um alle Datensätze aufzulisten.

  4. 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.

  5. 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 erstellt eine Verbindung zwischen Ihrer Notebook-Instanz und Query Service.

  6. Kopieren Sie den Adobe Analytics-Datensatznamen aus der zweiten generierten SQL-Abfrage. Dieser Wert ist der Wert nach FROM.

  7. Fügen Sie eine neue Notebook-Zelle ein, indem Sie auf die Schaltfläche + klicken.

  8. 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:

    import plotly.plotly as py
    import plotly.graph_objs as go
    from plotly.offline import iplot
    
  9. 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.

    target_table = "your Adobe Analytics dataset name"
    target_year = "2019"
    target_month = "04"
    target_day = "01"
    
    • target_table : Name Ihres Adobe Analytics Datensatzes.
    • target_year : Bestimmtes Jahr, aus dem die Daten der Zielgruppe stammen.
    • target_month : Bestimmter Monat, aus dem die Zielgruppe stammt.
    • target_day : Bestimmter Tag, von dem die Daten der Zielgruppe stammen.
    HINWEIS

    Sie können diese Werte jederzeit ändern. Führen Sie dabei die Variablenzelle aus, damit die Änderungen angewendet werden.

Abfragen der Daten

Geben Sie die folgenden SQL-Abfragen in die einzelnen Notebook-Zellen ein. Führen Sie eine Abfrage aus, indem Sie sie auf ihre Zelle und danach auf die Schaltfläche play klicken. 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 Neu starten in der oberen rechten Ecke 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

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;

In der obigen Abfrage wird der Zeitstempel in der WHERE-Klausel auf den Wert von target_year gesetzt. 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. Die Speicherung der Ergebnisse in einem Dataframe ermöglicht es Ihnen, die Abfrageergebnisse später mithilfe eines gewünschten Python-Pakets zu visualisieren. Führen Sie den folgenden Python-Code in einer neuen Zelle aus, um ein 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

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

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)

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

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

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.

Auf dieser Seite