Passer au contenu principal
Les intégrations d’entrepôt de données sont disponibles en tant que module complémentaire premium pour nos modules Web Experimentation et Feature Experimentation. Pour plus d’informations, veuillez contacter votre Customer Success Manager.
Nous prenons actuellement en charge les intégrations d’entrepôt de données des fournisseurs suivants :
  • BigQuery
  • Snowflake
  • Redshift
  • Databricks
La prise en charge du fournisseur suivant est prévue prochainement :
  • Microsoft Azure
Pour plus d’informations, et si vous souhaitez participer à notre programme d’adopteurs précoces, veuillez contacter votre Customer Success Manager.

Cibler vos audiences importées dans une expérience Kameleoon

Cet exemple standard illustre la méthode la plus simple pour cibler vos audiences importées dans une expérience Kameleoon. Supposons que vous ayez une table user dans votre entrepôt, dont un échantillon ressemble à ceci :
Dans cet exemple, nous souhaitons cibler tous les utilisateurs nés à Londres. Cette audience nécessite une tâche d’ingestion que vous pouvez configurer comme décrit ci-dessus. Nous nommerons cette tâche d’ingestion « The Londoners ». La requête SQL pour cette tâche sera : SELECT id FROM user WHERE place_of_birth="LONDON" Pour cibler l’audience récupérée par cette tâche d’ingestion (et toutes les autres), vous devez procéder à la configuration suivante.

Configurer une entrée Custom Data Kameleoon

  1. Dans le menu de gauche, cliquez sur Configure > Custom data.
  1. Cliquez sur New custom data.
  2. Fournissez un nom pour votre donnée personnalisée.
  3. Sélectionnez le projet sur lequel vous avez configuré la tâche d’ingestion de données.
  4. Choisissez la méthode d’acquisition Kameleoon SDK method ou Custom JavaScript code.
    • Veuillez consulter la section suivante dédiée à ce paramètre ici.
  5. Choisissez List pour le type et String pour le format.
  6. Pour le Scope, sélectionnez Visit.
  7. Cliquez sur Next.
  1. Vous pouvez définir les différentes valeurs qui apparaîtront dans la condition de ciblage du segment que vous créez. Cliquez sur Save the values for the targeting condition associated with the custom data point.
const sitecode= "YOUR_SITE_CODE"; //replace this value with your project's sitecode.
const xhr = new XMLHttpRequest();
 xhr.open('GET', `https://data.kameleoon.io/map/maps?siteCode=${sitecode}&keys=%5B%22warehouse%5Faudience%5Fconfig%22%5D`, false);
 xhr.send(null);
 if (xhr.status === 200) {
    const data = JSON.parse(xhr.responseText)
    if ("warehouse_audience_config" in data) {
       if ("audience_labels" in data["warehouse_audience_config"]) {
          return data["warehouse_audience_config"]["audience_labels"];
       }
    }
    return [];
 } else {
    console.error("Error calling for existing custom data values");
    return [];
 }
  1. Cliquez sur Create.

Acquisition des données personnalisées

La méthode d’acquisition de données personnalisées spécifie quel code remplit la valeur de la donnée personnalisée et où ce code est exécuté. Plusieurs possibilités d’acquisition existent selon votre configuration Kameleoon. Si vous utilisez uniquement Feature Experimentation, vous pouvez sélectionner Kameleoon SDK method. Avec cette méthode, le code d’acquisition s’exécute aux endroits où vous avez inclus des méthodes du SDK Kameleoon. Ces méthodes Kameleoon récupèrent les audiences d’entrepôt auxquelles appartient votre visiteur, puis stockent ces informations dans la section Custom Data. L’extrait de code précis dépend du SDK que vous utilisez. Voici un exemple écrit avec notre SDK JavaScript :
import { KameleoonClient, KameleoonUtils } from '@kameleoon/javascript-sdk';
 const client = new KameleoonClient('my_site_code');
 async function init() {
 await client.initialize();
 // -- Get visitor code
 const visitorCode = KameleoonUtils.getVisitorCode('www.example.com');
 // -- Get the warehouse visitor id
 warehouseVisitorId = anyClient.getThisVisitorId();
 // -- Index of your custom data
 const customDataIndex = 10;
 // -- Get visitor warehouse audience data using `warehouseKey`
 // and add it to storage
 const customData: CustomData = await getVisitorWarehouseAudience({
 visitorCode: 'my_visitor',
 customDataIndex: customDataIndex,
 warehouseKey: warehouseVisitorId,
 });
 }
 init();
Notez que la variable warehouseVisitorId doit être remplie avec l’identifiant de visiteur que votre organisation utilise pour ce visiteur dans son entrepôt. Cette ligne de code dépend du système d’identification des visiteurs de votre organisation. Si vous n’en avez pas, vous pouvez utiliser le Kameleoon Visitor Code, mais vous devez alors également utiliser le Kameleoon Visitor Code dans votre entrepôt. Remplacez la valeur de customDataIndex par l’index de votre donnée personnalisée. Vous trouverez l’index sur le dashboard :
Si vous utilisez Web Experimentation (ou à la fois Web Experimentation et Feature Experimentation), vous pouvez sélectionner Custom JavaScript code. Dans ce cas, l’extrait de code sera exécuté par le fichier kameleoon.js. Vous pouvez soit ajouter l’extrait suivant au script global de votre projet (dans Admin > Configure > puis modifier le projet approprié) :
const warehouseVisitorId = anyClient.getThisVisitorId();
Kameleoon.API.Data.retrieveDataFromRemoteSource(warehouseVisitorId, function(data) {
     if("warehouseAudiences" in data){
         Kameleoon.API.Data.setCustomData("My Warehouse Audiences", Object.keys(data["warehouseAudiences"]));
 }
Dans ce cas, nous devons utiliser le nom de votre donnée personnalisée et non l’index, comme dans l’exemple précédent du SDK. Vous pouvez aussi saisir l’extrait ci-dessous dans le champ approprié lors de la configuration de la donnée personnalisée :
const warehouseVisitorId = anyClient.getThisVisitorId();
 if (typeof window.kameleoon_configured_warehouse_audiences === 'undefined') {
    window.kameleoon_configured_warehouse_audiences = null;
    Kameleoon.API.Data.retrieveDataFromRemoteSource(warehouseVisitorId, function(data) {
      if ("warehouseAudiences" in data) {
        window.kameleoon_configured_warehouse_audiences = Object.keys(data["warehouseAudiences"]);
      }
    });
 }
 if (window.kameleoon_configured_warehouse_audiences === null) {
    return null;
 }
 return {"value": window.kameleoon_configured_warehouse_audiences};
Il s’agit d’une configuration unique qui fonctionnera pour toutes vos tâches d’ingestion.
Par exemple, supposons que vous ayez une deuxième tâche d’ingestion qui récupère les visiteurs nés en mars, et que vous la nommiez « Born in March ». La valeur de la donnée personnalisée pour un visiteur né en mars et à Londres contiendra les deux audiences (« The Londoners », « Born in March »). Ainsi, vous pouvez utiliser cette unique donnée personnalisée pour tous vos segments Kameleoon qui ciblent vos audiences d’entrepôt. Vous pouvez ensuite utiliser cette donnée personnalisée dans vos campagnes Kameleoon (expériences, expériences de fonctionnalité ou personnalisations) pour cibler les utilisateurs en fonction de leur appartenance à une audience spécifique dans votre entrepôt. Pour créer un tel segment, suivez ces étapes :
  1. Créez un segment comme expliqué dans la documentation dédiée.
  2. Dans votre segment, utilisez une condition de donnée personnalisée.
  3. Lorsque vous choisissez l’opérateur is among the values, vous devriez voir la liste des audiences associées aux tâches d’ingestion de données que vous avez créées : The Londoners, Born in March, etc.

Cibler les audiences importées par attributs

Cette section explique une méthode alternative pour cibler les audiences que vous avez importées depuis votre entrepôt. Cette méthode est particulièrement utile si vous souhaitez exécuter des expériences distinctes ciblant différentes valeurs du même attribut de visiteur. Nous conserverons les mêmes données et le même cas d’utilisation que dans l’exemple précédent, sauf qu’ici nous voulons cibler de nombreuses villes d’origine différentes et pas seulement les visiteurs nés à Londres. Ce ciblage serait possible avec la configuration décrite précédemment : il faudrait créer une tâche d’ingestion pour chaque lieu de naissance à cibler. Cependant, cela pourrait s’avérer fastidieux si vous souhaitez cibler 50 villes différentes. Kameleoon vous permet d’importer les attributs des visiteurs dans vos audiences d’entrepôt. L’importation est réalisée en ajoutant des champs supplémentaires à la requête SQL après le champ identifiant du visiteur, comme ceci : SELECT id, place_of_birth FROM user Vous pouvez ensuite créer une donnée personnalisée qui contiendra, cette fois, la valeur de l’attribut place_of_birth. Pour une implémentation avec le SDK JavaScript, le code ressemble à ceci :
import { KameleoonClient } from '@kameleoon/javascript-sdk';
const client = new KameleoonClient('my_site_code');
async function init() {
    await client.initialize();
    // -- Get the warehouse visitor id
    warehouseVisitorId = anyClient.getThisVisitorId();
    // -- Id of the ingestion task
    const taskId = your_task_id;
    // -- Name of the attribute
    const attributeName = "place_of_birth";
    // -- Get remote data
    const jsonData = await getRemoteData(warehouseVisitorId);
    const data = JSON.parse(jsonData);
    if ("warehouseAudiences" in data){
        if (taskId in data["warehouseAudiences"]){
            const city = data["warehouseAudiences"][taskId][attributeName];
             `// -- The index of the custom data you have created`
             const customDataIndex = your_index;
             const customData = new CustomData(customDataIndex, city);
             // -- Add custom data
             client.addData(warehouseVisitorId, customData); 
         }
     }
}
init();
Alternativement, voici l’extrait de code équivalent que vous pouvez utiliser lors de la configuration de la donnée personnalisée avec la méthode d’acquisition « Custom JavaScript code » :
const warehouseVisitorId = anyClient.getThisVisitorId();
const taskId = "your_task_id";
const attributeName = "place_of_birth";

 if (typeof window.kameleoon_configured_warehouse_attribute === 'undefined') {
     window.kameleoon_configured_warehouse_attribute = null;
     Kameleoon.API.Data.retrieveDataFromRemoteSource(warehouseVisitorId, function(data) {
         if ("warehouseAudiences" in data) {
             if (taskId in data["warehouseAudiences"]){
                  const city = data["warehouseAudiences"][taskId][attributeName];
                  window.kameleoon_configured_warehouse_attribute = city;
             }
         }
     });
 }
 if (window.kameleoon_configured_warehouse_attribute === null) {
     return null;
 }
 return {"value": window.kameleoon_configured_warehouse_attribute};
Vous pouvez ensuite créer un segment Kameleoon qui cible le nom de la ville dans la valeur de la donnée personnalisée. Si vous souhaitez cibler plusieurs villes dans un même segment, vous pouvez ajouter plusieurs conditions Or à la même donnée personnalisée lors de la création du segment. Notez qu’ici, taskId est l’identifiant numérique unique de la tâche d’ingestion qui se trouve dans l’interface utilisateur où la tâche a été définie. Vous pouvez ajouter autant d’attributs de visiteur que vous le souhaitez dans la requête SQL et utiliser ces attributs de nombreuses manières avec nos SDKs.

Identification des visiteurs

Les applications et sites web modernes utilisent de nombreux outils externes et souvent de nombreux identifiants de visiteur. Pour que cette fonctionnalité fonctionne, l’identifiant de visiteur que vous utilisez dans les exemples de code ci-dessus pour récupérer l’objet JSON doit être le même identifiant extrait de votre entrepôt. La façon dont cet identifiant de visiteur est généré dépend de vous. Il existe de nombreuses possibilités. Vous pouvez utiliser des identifiants qui ne sont obtenus qu’après que l’utilisateur se soit connecté à votre solution, tels qu’une adresse e-mail. Vous pouvez utiliser des identifiants anonymes si votre activité ne nécessite ou ne prend pas en charge la connexion. Vous pouvez même utiliser un mélange des deux si vous avez un cas d’utilisation où vous souhaitez cibler les utilisateurs, qu’ils soient connectés ou non. Vous êtes responsable de votre entrepôt de données et de la gestion de la table que Kameleoon interroge, il n’y a donc aucune limitation, sauf que l’identifiant doit être disponible pour le suivi à un moment donné. L’équipe Kameleoon Customer Success peut vous conseiller dans le choix d’un identifiant en fonction de votre configuration spécifique, de vos outils externes et de vos besoins métiers.