Directives générales pour l'exécution des requêtes dans Query Service

Ce document détaille les informations importantes à connaître pour la rédaction de requêtes dans Adobe Experience Platform Query Service.

Pour plus d'informations sur la syntaxe SQL utilisée dans Query Service, consultez la documentation de la syntaxe SQL.

Modèles d’exécution de requêtes

Adobe Experience Platform Query Service a deux modèles d'exécution de requête : interactif et non interactif. L’exécution interactive est utilisée pour le développement de requêtes et la génération de rapports dans les outils de Business Intelligence, tandis que l’exécution non interactive est utilisée pour les tâches plus importantes et les requêtes opérationnelles dans le cadre d’un workflow de traitement des données.

Exécution de requête interactive

Les requêtes peuvent être exécutées de manière interactive en les envoyant via l'interface utilisateur Query Service ou via un client connecté. Lors de l'exécution de Query Service sur un client connecté, une session principale s'exécute entre le client et Query Service jusqu'à ce que la requête envoyée soit renvoyée ou expire.

L’exécution de requête interactive présente les limites suivantes :

Paramètre Limite
Délai d’expiration de la requête 10 minutes
Nombre maximal de lignes renvoyées 50 000
Nombre maximal de requêtes simultanées 5
REMARQUE

Pour contourner la limite de lignes maximale, incluez LIMIT 0 dans votre requête. Le délai d’expiration de 10 minutes s’applique toujours.

Par défaut, les résultats des requêtes interactives sont renvoyés au client et ne sont pas conservés. Pour conserver les résultats sous la forme d'un jeu de données dans Experience Platform, la requête doit utiliser la syntaxe CREATE TABLE AS SELECT.

Exécution de requête non interactive

Les requêtes envoyées via l'API Query Service sont exécutées de manière non interactive. L’exécution non interactive signifie que Query Service reçoit l’appel d’API et exécute la requête dans l’ordre dans lequel elle est reçue. Les requêtes non interactives entraînent toujours la génération d'un nouveau jeu de données dans Experience Platform pour recevoir les résultats ou l'insertion de nouvelles lignes dans un jeu de données existant.

Accès à un champ spécifique dans un objet

Pour accéder à un champ dans un objet de votre requête, vous pouvez utiliser soit la notation par points (.), soit la notation par crochets ([]). L’instruction SQL suivante utilise la notation par points pour parcourir l’objet endUserIds jusqu’à l’objet mcid.

SELECT endUserIds._experience.mcid
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
LIMIT 1
Propriété Description
{ANALYTICS_TABLE_NAME} Nom de votre tableau d’analyse.

L’instruction SQL suivante utilise la notation par crochets pour parcourir l’objet endUserIds jusqu’à l’objet mcid.

SELECT endUserIds['_experience']['mcid']
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
LIMIT 1
Propriété Description
{ANALYTICS_TABLE_NAME} Nom de votre tableau d’analyse.
REMARQUE

Puisque chaque type de notation renvoie les mêmes résultats, celui que vous choisissez d’utiliser est à votre convenance.

Les deux exemples de requête ci-dessus renvoient un objet aplati, plutôt qu’une seule valeur :

              endUserIds._experience.mcid   
-----------------------------------------------------
---
 (48168239533518554367684086979667672499,"(ECID)",true)
(1 row)

L’objet endUserIds._experience.mcid renvoyé contient les valeurs correspondantes pour les paramètres suivants :

  • id
  • namespace
  • primary

Lorsque la colonne est déclarée uniquement à l’objet, elle renvoie l’objet entier sous forme de chaîne. Pour afficher uniquement l’identifiant, utilisez :

SELECT endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE endUserIds._experience.mcid IS NOT NULL
LIMIT 1
     endUserIds._experience.mcid.id 
-------------------------------------
---
 48168239533518554367684086979667672499
(1 row)

Devis

Les guillemets simples, les guillemets de doublon et les guillemets arrière ont des usages différents dans les requêtes de Requête Service.

Guillemets simples

Le guillemet simple (') est utilisé pour créer des chaînes de texte. Par exemple, il peut être utilisé dans l’instruction SELECT pour renvoyer une valeur de texte statique dans le résultat, et dans la clause WHERE pour évaluer le contenu d’une colonne.

La requête suivante déclare une valeur de texte statique ('datasetA') pour une colonne :

SELECT 
  'datasetA',
  timestamp,
  web.webPageDetails.name
FROM {ANALYTICS_TABLE_NAME}
LIMIT 10

La requête suivante utilise une chaîne entre guillemets simples ('homepage') dans sa clause WHERE pour renvoyer des événements pour une page spécifique.

SELECT 
  timestamp,
  endUserIds._experience.mcid.id
FROM {ANALYTICS_TABLE_NAME}
WHERE web.webPageDetails.name = 'homepage'
LIMIT 10

Guillemets doubles

Le guillemet double (") est utilisé pour déclarer un identifiant avec des espaces.

La requête suivante utilise des guillemets doubles pour renvoyer des valeurs de colonnes spécifiées lorsqu’une colonne contient une espace dans son identifiant :

SELECT
  no_space_column,
  "space column"
FROM
( SELECT 
    'column1' as no_space_column,
    'column2' as "space column"
)
REMARQUE

Les guillemets doubles ne peuvent pas être utilisés avec l’accès au champ avec notation par points.

Accents graves

L’accent grave ` permet d’ignorer les noms de colonne réservés uniquement avec l’utilisation de la syntaxe de notation par points. Par exemple, comme order est un mot réservé dans SQL, vous devez utiliser des accents graves pour accéder au champ commerce.order :

SELECT 
  commerce.`order`
FROM {ANALYTICS_TABLE_NAME}
LIMIT 10

Les accents graves sont également utilisés pour accéder à un champ qui commence avec un nombre. Par exemple, pour accéder au champ 30_day_value, vous devez utiliser la notation avec accents graves.

SELECT
    commerce.`30_day_value`
FROM {ANALYTICS_TABLE_NAME}
LIMIT 10

Les accents graves ne sont pas nécessaires si vous utilisez la notation par crochets.

 SELECT
  commerce['order']
 FROM {ANALYTICS_TABLE_NAME}
 LIMIT 10

Affichage des informations d’un tableau

Après vous être connecté à Requête Service, vous pouvez afficher toutes les tables disponibles sur la plate-forme à l'aide des commandes \d ou SHOW TABLES.

Vue de tableau standard

La commande \d affiche la vue PostgreSQL standard pour répertorier les tables. Vous trouverez ci-dessous un exemple de la sortie de cette commande :

             List of relations
 Schema |       Name      | Type  |  Owner   
--------+-----------------+-------+-------
---
 public | luma_midvalues  | table | postgres
 public | luma_postvalues | table | postgres
(2 rows)

Vue détaillée du tableau

SHOW TABLES est une commande personnalisée qui fournit des informations plus détaillées sur les tables. Vous trouverez ci-dessous un exemple de la sortie de cette commande :

       name      |        dataSetId         |     dataSet    | description | resolved 
-----------------+--------------------------+----------------+-------------+-------
---
 luma_midvalues  | 5bac030c29bb8d12fa992e58 | Luma midValues |             | false
 luma_postvalues | 5c86b896b3c162151785b43c | Luma midValues |             | false
(2 rows)

Informations sur le schéma

Pour vue des informations plus détaillées sur les schémas du tableau, vous pouvez utiliser la commande \d {TABLE_NAME}, où {TABLE_NAME} est le nom de la table dont vous voulez vue les informations de schéma.

L'exemple suivant montre les informations de schéma de la table luma_midvalues, qui s'afficheraient à l'aide de \d luma_midvalues :

                         Table "public.luma_midvalues"
      Column       |             Type            | Collation | Nullable | Default 
-------------------+-----------------------------+-----------+----------+------
---
 timestamp         | timestamp                   |           |          | 
 _id               | text                        |           |          | 
 productlistitems  | anyarray                    |           |          | 
 commerce          | luma_midvalues_commerce     |           |          | 
 receivedtimestamp | timestamp                   |           |          | 
 enduserids        | luma_midvalues_enduserids   |           |          | 
 datasource        | datasource                  |           |          | 
 web               | luma_midvalues_web          |           |          | 
 placecontext      | luma_midvalues_placecontext |           |          | 
 identitymap       | anymap                      |           |          | 
 marketing         | marketing                   |           |          | 
 environment       | luma_midvalues_environment  |           |          | 
 _experience       | luma_midvalues__experience  |           |          | 
 device            | device                      |           |          | 
 search            | search                      |           |          | 

De plus, vous pouvez obtenir des informations supplémentaires sur une colonne particulière en ajoutant le nom de la colonne au nom de la table. Il serait écrit au format \d {TABLE_NAME}_{COLUMN}.

L'exemple suivant présente des informations supplémentaires pour la colonne web et sera appelé à l'aide de la commande suivante : \d luma_midvalues_web :

                 Composite type "public.luma_midvalues_web"
     Column     |               Type                | Collation | Nullable | Default 
----------------+-----------------------------------+-----------+----------+------
---
 webpagedetails | luma_midvalues_web_webpagedetails |           |          | 
 webreferrer    | web_webreferrer                   |           |          | 

Association de jeux de données

Vous pouvez associer plusieurs jeux de données afin d’inclure des données provenant d’autres jeux de données dans votre requête.

L'exemple suivant joint les deux jeux de données suivants (your_analytics_table et custom_operating_system_lookup) et crée une instruction SELECT pour les 50 premiers systèmes d'exploitation par nombre de vues de page.

Requête

SELECT 
  b.operatingsystem AS OperatingSystem,
  SUM(a.web.webPageDetails.pageviews.value) AS PageViews
FROM your_analytics_table a 
     JOIN custom_operating_system_lookup b 
      ON a._experience.analytics.environment.operatingsystemID = b.operatingsystemid 
WHERE TIMESTAMP >= ('2018-01-01') AND TIMESTAMP <= ('2018-12-31')
GROUP BY OperatingSystem 
ORDER BY PageViews DESC
LIMIT 50;

Résultats

OperatingSystem Pages vues
Windows 7 2781979,0
Windows XP 1669824,0
Windows 8 420024,0
Adobe AIR 315032,0
Windows Vista 173566,0
Mobile iOS 6.1.3 11 9069,0
Linux 56516,0
OSX 10.6.8 53 652,0
Android 4.0.4 46 167,0
Android 4.0.3 3 1852,0
Windows Server 2003 et XP Édition x64 2 8883,0
Android 4.1.1 24 336,0
Android 2.3.6 1 5735,0
OSX 10.6 13 357,0
Windows Phone 7.5 11054,0
Android 4.3 9221,0

Déduplication

Requête Service prend en charge la déduplication de données ou la suppression de lignes de duplicata des données. Pour plus d'informations sur la déduplication, consultez le Guide de déduplication du service de Requête.

Étapes suivantes

La lecture de ce document vous a permis de vous initier à certaines considérations importantes lors de la rédaction d’une requête avec Query Service. Pour plus d’informations sur l’utilisation de la syntaxe SQL pour la rédaction de vos propres requêtes, veuillez lire la documentation sur la syntaxe SQL.

Pour plus d'exemples de requêtes pouvant être utilisées dans Requête Service, consultez les guides sur les requêtes d'exemple Adobe Analytics, requêtes d'exemple Adobe Target ou requêtes d'exemple ExperienceEvent.

Sur cette page

Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now
Adobe Maker Awards Banner

Time to shine!

Apply now for the 2021 Adobe Experience Maker Awards.

Apply now