Query Service SQL a été étendu pour offrir une prise en charge transparente des attributs dérivés. Vous bénéficiez ainsi d’une méthode alternative efficace pour créer des attributs dérivés pour vos cas d’utilisation professionnels de profil client en temps réel.
Ce document décrit diverses extensions SQL pratiques qui génèrent un attribut dérivé à utiliser avec Real-time Customer Profile. Le workflow simplifie le processus que vous devrez normalement exécuter par le biais de divers appels d’API ou interactions de l’interface utilisateur de Platform.
En règle générale, la génération et la publication d’un attribut pour Real-time Customer Profile implique les étapes suivantes :
Après avoir suivi les étapes mentionnées ci-dessus, vous êtes prêt à renseigner le jeu de données. Si vous avez activé le jeu de données pour profile, vous pouvez également créer des segments qui font référence au nouvel attribut et commencer à produire des informations.
Query Service vous permet d’effectuer toutes les actions répertoriées ci-dessus à l’aide de requêtes SQL. Cela implique d’apporter des modifications à vos jeux de données et à vos groupes de champs si nécessaire.
La requête SQL fournie ci-dessous suppose l’utilisation d’un espace de noms préexistant.
Utilisez une requête Create Table as Select (CTAS) pour créer un jeu de données, attribuer des types de données, définir une identité Principale, créer un schéma et le marquer comme profil activé. L’exemple d’instruction SQL ci-dessous crée des attributs et les rend disponibles pour Real-time Customer Data Profile (Real-Time CDP). Votre requête SQL suit le format indiqué dans l’exemple ci-dessous :
CREATE TABLE <your_table_name> [IF NOT EXISTS] (fieldname <your_data_type> primary identity namespace <your_namespace>, [field_name2 <your_data_type>]) [WITH(LABEL='PROFILE')];
Les types de données pris en charge sont les suivants : booléen, date, datetime, texte, float, bigint, entier, map, tableau et struct/row.
Le bloc de code SQl ci-dessous fournit des exemples pour définir les types de données struct/row, map et array . La ligne 1 présente la syntaxe des lignes. La ligne 2 présente la syntaxe du mappage, la ligne 3, la syntaxe du tableau.
ROW (Column_name <data_type> [, column name <data_type> ]*)
MAP <data_type, data_type>
ARRAY <data_type>
Vous pouvez également activer les jeux de données pour le profil via l’interface utilisateur de Platform. Pour plus d’informations sur le marquage d’un jeu de données comme activé pour un profil, voir la section Activation d’un jeu de données pour la documentation de Real-time Customer Profile.
Dans l’exemple de requête ci-dessous, la variable decile_table
le jeu de données est créé avec id
comme colonne d’identité Principale et contient l’espace de noms IDFA
. Il comporte également un champ nommé decile1Month
du type de données map . La table créée (decile_table
) est activé pour profile.
CREATE TABLE decile_table (id text PRIMARY KEY NAMESPACE 'IDFA',
decile1Month map<text, integer>) WITH (label='PROFILE');
Une fois la requête exécutée avec succès, l’identifiant du jeu de données est renvoyé à la console, comme illustré dans l’exemple ci-dessous.
Created Table DataSet Id
>
637fd84969ba291e62dba79f
(1 row)
Utilisation label='PROFILE'
sur un CREATE TABLE
pour créer un jeu de données activé par le profil. Le upsert
est activée par défaut. Le upsert
peut être remplacé à l’aide de la fonction ALTER
comme le montre l’exemple ci-dessous.
ALTER TABLE <your_table_name> DROP label upsert;
Pour plus d’informations sur l’utilisation de la fonction ALTER TABLE et libellé dans le cadre d’une requête CTAS.
Les fonctionnalités décrites ci-dessous sont très utiles pour la gestion des attributs dérivés via SQL.
La structure SQL ALTER TABLE peut être utilisée pour activer les jeux de données existants pour le profil. Pour ce faire, une balise activée pour le profil doit être ajoutée au schéma et au jeu de données correspondant.
ALTER TABLE your_decile_table ADD label 'PROFILE';
Une fois l’exécution de la variable ALTER TABLE
, la console renvoie ALTER SUCCESS
.
Marquez une colonne existante dans un jeu de données comme un jeu d’identités Principal, sinon, une erreur se produit. Pour définir une identité Principale à l'aide de SQL, utilisez le format de requête affiché ci-dessous.
ALTER TABLE <your_table_name> ADD CONSTRAINT primary identity NAMESPACE
Par exemple :
ALTER TABLE test1_dataset ADD CONSTRAINT PRIMARY KEY(id2) NAMESPACE 'IDFA';
Dans l'exemple fourni, id2
est une colonne existante dans test1_dataset
.
Si vous souhaitez désactiver votre table pour les utilisateurs de profils, vous devez utiliser la commande DROP . Exemple d’instruction SQL qui UTILISE DROP
est illustré ci-dessous.
ALTER TABLE table_name DROP LABEL 'PROFILE';
Par exemple :
ALTER TABLE decile_table DROP label 'PROFILE';
Cette instruction SQL fournit une méthode alternative efficace à l’utilisation d’un appel API. Pour plus d’informations, consultez la documentation sur la manière de Désactivation d’un jeu de données à utiliser avec Real-Time CDP à l’aide de l’API des jeux de données.
La commande UPSERT permet d'insérer un nouvel enregistrement ou de mettre à jour des données existantes dans un tableau. Plus précisément, il permet de mettre à jour une ligne existante si une valeur spécifiée existe déjà dans un tableau, ou d’insérer une nouvelle ligne si la valeur spécifiée n’existe pas déjà.
Vous trouverez ci-dessous un exemple d’instruction qui utilise le format correct.
ALTER TABLE table_name ADD LABEL 'UPSERT';
Par exemple :
ALTER TABLE table_with_a_decile ADD label 'UPSERT';
Cette instruction SQL fournit une méthode alternative efficace à l’utilisation d’un appel API. Pour plus d’informations, consultez la documentation sur la manière de activer un jeu de données à utiliser avec Real-Time CDP et UPSERT à l’aide de l’API des jeux de données ;.
Cette commande désactive la possibilité de mettre à jour et d’insérer des lignes dans votre jeu de données.
Vous trouverez ci-dessous un exemple d’instruction qui utilise le format correct.
ALTER TABLE table_name DROP LABEL 'UPSERT';
Par exemple :
ALTER TABLE table_with_a_decile DROP label 'UPSERT';
Des métadonnées supplémentaires sont conservées pour les jeux de données activés pour les profils. Utilisez la variable SHOW TABLES
pour afficher un labels
qui fournit des informations sur les libellés associés aux tableaux.
Vous trouverez ci-dessous un exemple de sortie de cette commande :
name | dataSetId | dataSet | description | labels
---------------------+--------------------------+----------------+-------------+----------
luma_midvalues | 5bac030c29bb8d12fa992e58 | Luma midValues | | false
luma_postvalues | 5c86b896b3c162151785b43c | Luma midValues | | false
table_with_a_decile | 5c86b896b3c162151785b43c | Luma midValues | | 'UPSERT', 'PROFILE'
(3 rows)
Vous pouvez voir dans l’exemple que table_with_a_decile
a été activé pour le profil et appliqué avec des étiquettes telles que 'UPSERT', 'PROFIL' comme décrit précédemment.
Il est désormais possible de créer des groupes de champs à l’aide de SQL. Il s’agit d’une alternative à l’utilisation de l’éditeur de schémas dans l’interface utilisateur de Platform ou à l’exécution d’un appel API au registre des schémas.
Vous trouverez ci-dessous un exemple d’instruction pour créer un groupe de champs.
CREATE FIELDGROUP <field_group_name> [IF NOT EXISTS] (field_name <data_type> primary identity namespace <namespace>, [field_name_2 >data_type>]) [ WITH(LABEL='PROFILE') ];
La création du groupe de champs via SQL échoue si la variable label
L’indicateur n’est pas fourni dans l’instruction ou si le groupe de champs existe déjà.
Assurez-vous que la requête comprend une IF NOT EXISTS
pour éviter l’échec de la requête, car le groupe de champs existe déjà.
Un exemple concret peut ressembler à celui illustré ci-dessous.
CREATE FIELDGROUP field_group_for_test123 (decile1Month map<text, integer>, decile3Month map<text, integer>, decile6Month map<text, integer>, decile9Month map<text, integer>, decile12Month map<text, integer>, decilelietime map<text, integer>) WITH (LABEL-'PROFILE');
L’exécution réussie de cette instruction renvoie l’identifiant de groupe de champs créé. Par exemple c731a1eafdfdecae1683c6dca197c66ed2c2b49ecd3a9525
.
Consultez la documentation sur la manière de créer un groupe de champs dans l’éditeur de schémas ; ou en utilisant la variable API Schema Registry pour plus d’informations sur les méthodes alternatives.
Il peut parfois être nécessaire de supprimer un groupe de champs du registre des schémas. Pour ce faire, exécutez le DROP FIELDGROUP
avec l’identifiant du groupe de champs.
DROP FIELDGROUP [IF EXISTS] <your_field_group_id>;
Par exemple :
DROP FIELDGROUP field_group_for_test123;
La suppression d’un groupe de champs via SQL échoue si le groupe de champs n’existe pas. Assurez-vous que l’instruction comprend une IF EXISTS
pour éviter l’échec de la requête.
Le SHOW FIELDGROUPS
La commande renvoie une table contenant le nom, fieldgroupId et le propriétaire des tables.
Vous trouverez ci-dessous un exemple de sortie de cette commande :
name | fieldgroupId | owner |
---------------------------------+-------------------------------------------------+-----------------
AEP Mobile Lifecycle Details | _experience.aep-mobile-lifecycle-details | Luma midValues |
AEP Web SDK ExperienceEvent | _experience.aep-web-sdk-experienceevent | Luma midValues |
AJO Classification Fields | _experience.journeyOrchestration.classification | Luma midValues |
AJO Entity Fields | _experience.customerJourneyManagement.entities | Luma midValues |
(4 rows)
Après avoir lu ce document, vous comprenez mieux comment utiliser SQL pour créer un profil et un jeu de données activé pour l’insertion en fonction d’attributs dérivés. Vous êtes maintenant prêt à utiliser ce jeu de données avec des workflows d’ingestion par lots pour mettre à jour vos données de profil. Pour en savoir plus sur l’ingestion de données dans Adobe Experience Platform, commencez par lire la présentation de l’ingestion des données.