Las integraciones con data warehouses están disponibles como complemento premium para nuestros módulos Web Experimentation y Feature Experimentation. Para obtener más información, póngase en contacto con su Customer Success Manager.
Actualmente, admitimos integraciones con data warehouses de los siguientes proveedores:
- BigQuery
- Snowflake
- Redshift
- Databricks
Próximamente añadiremos soporte para el siguiente proveedor:
Para obtener más información y si quiere formar parte de nuestro programa early adopter, póngase en contacto con su Customer Success Manager.
Segmentar sus audiencias importadas en un experimento de Kameleoon
Este ejemplo estándar muestra el método más sencillo para segmentar sus audiencias importadas en un experimento de Kameleoon. Supongamos que tiene una tabla user en su warehouse, una muestra de la cual tiene este aspecto:
En este ejemplo, queremos segmentar a todos los usuarios nacidos en Londres. Esta audiencia requiere una Ingestion Task que puede configurar como se describe anteriormente. Llamaremos a esta Ingestion Task “The Londoners”. La consulta SQL para esta tarea será:
SELECT id FROM user WHERE place_of_birth="LONDON"
Para segmentar la audiencia consultada por esta (y todas las demás) Ingestion Tasks, debe pasar por la siguiente configuración.
- En el menú de la izquierda, haga clic en Configure > Custom data.
- Haga clic en New custom data.
- Proporcione un nombre para su dato personalizado.
- Seleccione el proyecto en el que configuró la Data Ingestion Task.
- Elija el método de adquisición Kameleoon SDK method o Custom JavaScript code.
- Consulte la siguiente sección dedicada a este parámetro aquí.
- Elija List para el tipo y String para el formato.
- Para el Scope, seleccione Visit.
- Haga clic en Next.
- Puede establecer los diferentes valores que aparecerán en la condición de segmentación que cree. Haga clic en 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 [];
}
- Haga clic en Create.
Adquisición del dato personalizado
El método de adquisición del dato personalizado especifica qué código rellena el valor del dato personalizado y dónde se ejecuta ese código. Existen varias posibilidades de adquisición según su configuración de Kameleoon.
Si está utilizando Feature Experimentation únicamente, puede seleccionar el Kameleoon SDK method. Cuando se utiliza este método, el código de adquisición se ejecutará en los puntos donde haya incluido métodos del SDK de Kameleoon. Estos métodos de Kameleoon recuperan las audiencias del warehouse a las que pertenece su visitante y almacenan esa información en la sección Custom Data. El fragmento de código preciso depende del SDK que esté utilizando. Aquí hay un ejemplo escrito con nuestro JavaScript SDK:
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();
Tenga en cuenta que la variable warehouseVisitorId debe rellenarse con el ID de visitante que su organización utiliza para este visitante en su warehouse. Esta línea de código depende del sistema de identificación de visitantes de su organización. Si no tiene uno, puede utilizar el Kameleoon Visitor Code, pero también debe utilizar el Kameleoon Visitor Code en su warehouse.
Sustituya el valor de customDataIndex por el índice de su dato personalizado. Puede encontrar el índice en el panel:
Si está utilizando Web Experimentation (o tanto Web Experimentation como Feature Experimentation), puede seleccionar Custom JavaScript code. En este caso, el fragmento de código se ejecutará por el archivo kameleoon.js. Puede añadir el siguiente fragmento al script global de su proyecto (en Admin > Configure > y luego editar el proyecto correspondiente):
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"]));
}
En este caso, necesitamos utilizar el nombre de su Custom Data y no el índice, como en el ejemplo anterior del SDK.
Alternativamente, puede introducir el siguiente fragmento en el campo apropiado al configurar el dato personalizado:
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};
Esta es una configuración única que funcionará para todas sus Ingestion Tasks.
Por ejemplo, supongamos que tiene una segunda Ingestion Task que consulta a los visitantes nacidos en marzo, y la llama “Born in March”. El valor del dato personalizado para un visitante nacido en marzo y en Londres contendrá ambas audiencias (“The Londoners”, “Born in March”).
Por tanto, puede utilizar este único dato personalizado para todos sus segmentos de Kameleoon que segmenten las audiencias de su warehouse. A continuación, puede utilizar este dato personalizado en sus campañas de Kameleoon (experimentos, experimentos de funcionalidades o personalizaciones) para segmentar a los usuarios en función de su pertenencia a una audiencia específica de su warehouse.
Para crear dicho segmento, siga estos pasos:
- Cree un segmento como se explica en la documentación específica.
- En su segmento, utilice una condición de dato personalizado.
- Al elegir el operador is among the values, debería ver la lista de audiencias asociadas a las Data Ingestion Tasks que creó: The Londoners, Born in March, etc.
Segmentar audiencias importadas por atributos
Esta sección explica un método alternativo para segmentar las audiencias que ha importado desde su warehouse. Este método es especialmente útil si quiere ejecutar experimentos separados que segmenten diferentes valores del mismo atributo de visitante. Mantendremos los mismos datos y caso de uso que en el ejemplo anterior, solo que esta vez queremos segmentar muchas ciudades de origen diferentes y no solo visitantes nacidos en Londres. Esta segmentación sería posible con la configuración descrita anteriormente: crearía una Ingestion Task para cada lugar de nacimiento que quiera segmentar. Sin embargo, esto podría resultar un poco tedioso si quiere segmentar 50 ciudades diferentes.
Kameleoon le permite importar atributos de los visitantes en las audiencias de su warehouse. La importación se logra añadiendo campos adicionales a la consulta SQL después del campo de ID de visitante, así:
SELECT id, place_of_birth FROM user
A continuación, puede crear un Custom Data que, esta vez, contendrá el valor del atributo place_of_birth. Para la implementación con el JavaScript SDK, el código tiene este aspecto:
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();
Alternativamente, este es el fragmento de código equivalente que puede utilizar al configurar el dato personalizado con el método de adquisición “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};
A continuación, puede crear un segmento de Kameleoon que segmente el nombre de la ciudad en el valor del dato personalizado. Si quiere segmentar varias ciudades en un solo segmento, puede añadir varias condiciones Or al mismo dato personalizado al crear el segmento.
Tenga en cuenta que aquí el taskId es el identificador numérico único de la Ingestion Task que se encuentra en la interfaz de usuario donde se definió la tarea.
Puede añadir tantos atributos de visitante como desee en la petición SQL y utilizar estos atributos de muchas maneras con nuestros SDKs.
Identificación del visitante
Las aplicaciones y sitios web modernos utilizan muchas herramientas externas y, a menudo, muchos identificadores de visitante. Para que esta funcionalidad funcione, el identificador de visitante que utilice en los ejemplos de código anteriores para recuperar el objeto JSON debe ser el mismo identificador extraído de su warehouse.
Cómo se genera este identificador de visitante depende de usted. Hay muchas posibilidades. Puede utilizar identificadores que solo se obtienen después de que el usuario inicie sesión en su solución, como una dirección de correo electrónico. Puede utilizar identificadores anónimos si su negocio no requiere o admite el inicio de sesión. Incluso puede utilizar una mezcla de ambos si tiene un caso de uso en el que quiera segmentar a los usuarios independientemente de si han iniciado sesión o no.
Usted está a cargo de su data warehouse y de gestionar la tabla desde la que Kameleoon consulta, por lo que no hay limitaciones, excepto que el identificador debe estar disponible para el seguimiento en algún momento.
El equipo de Customer Success de Kameleoon puede asesorarle sobre cómo elegir un identificador en función de su configuración específica, herramientas externas y requisitos de negocio.