Show Menu
SUJETS×

Service de Requête sur ordinateur portable Jupyter

Adobe Experience Platform vous permet d’utiliser le langage de Requête structurée (SQL) dans Data Science Workspace en intégrant Requête Service dans JupyterLab en tant que fonctionnalité standard.
Ce didacticiel présente des exemples de requêtes SQL pour des cas d’utilisation courants afin d’explorer, de transformer et d’analyser des données Adobe Analytics.

Prise en main

Avant de commencer ce didacticiel, vous devez disposer des conditions préalables suivantes :

Accès à JupyterLab et au service de Requête

  1. Dans Experience Platform , accédez à Notebooks à partir de la colonne de navigation de gauche. Il faut un moment pour que JupyterLab se charge.
    Si un nouvel onglet Lanceur n’apparaissait pas automatiquement, ouvrez un nouvel onglet Lanceur en cliquant sur Fichier , puis sélectionnez Nouveau lanceur .
  2. Dans l'onglet Lanceur, cliquez sur l'icône vierge dans un environnement Python 3 pour ouvrir un bloc-notes vide.
    Python 3 est actuellement le seul environnement pris en charge pour Requête Service dans les portables.
  3. Dans le rail de sélection de gauche, cliquez sur l’icône Données et doublon cliquez sur le répertoire Data Set pour liste à tous les jeux de données.
  4. Recherchez un jeu de données Adobe Analytics pour explorer et cliquez avec le bouton droit sur la liste, cliquez sur Données de Requête dans le bloc-notes pour générer des requêtes SQL dans le bloc-notes vide.
  5. Cliquez sur la première cellule générée contenant la fonction qs_connect() et exécutez-la en cliquant sur le bouton de lecture. Cette fonction crée une connexion entre votre instance de bloc-notes et le service de Requête.
  6. Copiez le nom du jeu de données Adobe Analytics à partir de la seconde requête SQL générée. Il s’agira de la valeur située après FROM .
  7. Insérez une nouvelle cellule de bloc-notes en cliquant sur le bouton + .
  8. Copiez, collez et exécutez les instructions d'importation suivantes dans une nouvelle cellule. Les instructions suivantes seront utilisées pour visualiser vos données :
    import plotly.plotly as py
    import plotly.graph_objs as go
    from plotly.offline import iplot
    
    
  9. Ensuite, copiez et collez les variables suivantes dans une nouvelle cellule. Modifiez leurs valeurs selon vos besoins, puis exécutez-les.
    target_table = "your Adobe Analytics dataset name"
    target_year = "2019"
    target_month = "04"
    target_day = "01"
    
    
    • target_table : Nom de votre jeu de données Adobe Analytics.
    • target_year : Année spécifique à partir de laquelle proviennent les données de cible.
    • target_month : Mois spécifique d’où provient la cible.
    • target_day : Jour spécifique à partir duquel proviennent les données de la cible.
    Vous pouvez modifier ces valeurs à tout moment. Dans ce cas, veillez à exécuter la cellule de variables pour que les modifications soient appliquées.

Requête de vos données

Entrez les requêtes SQL suivantes dans des cellules de bloc-notes individuelles. Exécutez une requête en cliquant sur sa cellule, puis en cliquant sur le bouton Lecture . Les résultats de la requête ou les journaux d’erreurs sont affichés sous la cellule exécutée.
Lorsqu'un bloc-notes est inactif pendant une longue période, la connexion entre le bloc-notes et Requête Service peut se rompre. Dans ce cas, redémarrez JupyterLab en cliquant sur le bouton Power situé dans le coin supérieur droit.
Le noyau du bloc-notes sera réinitialisé mais les cellules resteront, réexécutez toutes les cellules pour continuer là où vous l'aviez laissé.

Nombre de visiteurs horaires

La requête suivante renvoie le nombre de visiteurs horaires pour une date spécifiée :

Requête

%%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 _acp_year = {target_year} 
      AND _acp_month = {target_month}  
      AND _acp_day = {target_day}
GROUP  BY Day, Hour
ORDER  BY Hour;

Dans la requête ci-dessus, la cible _acp_year de la WHERE clause est définie sur la valeur de target_year . Incluez des variables dans les requêtes SQL en les contenant entre accolades ( {} ).
La première ligne de la requête contient la variable facultative hourly_visitor . Les résultats de la Requête seront stockés dans cette variable sous la forme d'une base de données Pandas. Le stockage des résultats dans un cadre de données vous permet de visualiser ultérieurement les résultats de la requête à l'aide d'un paquet Python souhaité. Exécutez le code Python suivant dans une nouvelle cellule pour générer un graphique à barres :
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)

Nombre d'activités horaires

La requête suivante renvoie le nombre d'actions horaires pour une date spécifiée :

Requête

%%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  _acp_year = {target_year} 
       AND _acp_month = {target_month}  
       AND _acp_day = {target_day}
GROUP  BY Day, Hour
ORDER  BY Hour;

L'exécution de la requête ci-dessus stockera les résultats dans hourly_actions un cadre de données. Exécutez la fonction suivante dans une nouvelle cellule pour prévisualisation des résultats :
hourly_actions.head()

La requête ci-dessus peut être modifiée afin de renvoyer le nombre d’actions horaires pour une plage de dates spécifiée à l’aide d’opérateurs logiques dans la clause WHERE :

Requête

%%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;

L'exécution de la requête modifiée stockera les résultats dans hourly_actions_date_range un cadre de données. Exécutez la fonction suivante dans une nouvelle cellule pour prévisualisation des résultats :
hourly_actions_date_rage.head()

Nombre de événements par session de visiteur

La requête suivante renvoie le nombre de événements par session de visiteur pour une date spécifiée :

Requête

%%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  _acp_year = {target_year} 
       AND _acp_month = {target_month}  
       AND _acp_day = {target_day}
GROUP BY aaid_sess_key
ORDER BY Count DESC;

Exécutez le code Python suivant pour générer un histogramme pour le nombre de événements par session de visite :
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)

Utilisateurs actifs pour une journée donnée

La requête suivante renvoie les dix utilisateurs les plus actifs pour une date spécifiée :

Requête

%%read_sql active_users -c QS_CONNECTION
SELECT enduserids._experience.aaid.id AS aaid, 
       Count(timestamp)               AS Count
FROM   {target_table}
WHERE  _acp_year = {target_year}
       AND _acp_month = {target_month}
       AND _acp_day = {target_day}
GROUP  BY aaid
ORDER  BY Count DESC
LIMIT  10;

Villes actives par activité utilisateur

La requête suivante renvoie les dix villes qui génèrent la majorité des activités utilisateur pour une date spécifiée :

Requête

%%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  _acp_year = {target_year}
       AND _acp_month = {target_month}
       AND _acp_day = {target_day}
GROUP  BY state_city
ORDER  BY Count DESC
LIMIT  10;

Étapes suivantes

Ce didacticiel a montré quelques exemples d’utilisation de Requête Service dans des cahiers Jupyter. Suivez le didacticiel Analyser vos données à l’aide de Jupyter Notebooks pour voir comment des opérations similaires sont effectuées à l’aide du SDK d’accès aux données.