Destino de valor de clave personalizada
Como editor, es posible que tenga datos personalizados sobre los usuarios (edad, género, ingresos, intereses, ubicación, etc.) o contenido (palabras clave de búsqueda, etiquetas contextuales, posiciones de anuncios, etc.) que le gustaría usar para generar ofertas que puedan ser de valor para los anunciantes. Hay varias maneras de dirigirse a los datos del cliente para lograr esto, incluidas las cadenas de consulta y la segmentación de destino. Otra manera es a través de la selección de destino de clave/valor personalizada.
Con la segmentación de clave/valor personalizada, puede definir sus propias claves y sus valores correspondientes para hacer un uso completo de los datos y ayudar a los anunciantes a llegar a su audiencia prevista. Como parte de nuestro servidor de anuncios, proporcionamos servicios de API que puede usar para crear sus propios conjuntos de valores de clave personalizados.
Definición previa de conjuntos de valores clave
La selección de destino con conjuntos de claves y valores personalizados implica la creación de claves y valores y, a continuación, el uso de esas claves y valores para crear expresiones de destino. En la API se usan los servicios targeting-key y targeting-value para crear claves y sus valores asociados. A continuación, use el servicio de perfil para crear la segmentación.
Definición de claves y valores para
Al definir claves mediante el servicio de clave de destino , esas claves estarán disponibles para el destino en nuestra plataforma. Solo estarán disponibles las claves que haya predefinido mediante el servicio de clave de destino . Sin embargo, no es necesario definir valores predefinidos. El uso del servicio targeting-value para definir previamente los valores mostrará esos valores en . Si no predefinidos valores, puede escribirlos directamente en o importarlos desde un archivo CSV (valores separados por comas) al crear el destino. Tenga en cuenta que, aunque es posible definir claves en la interfaz de usuario heredada, debe usar la API para definir nuevas claves para la disponibilidad en .
Definición de claves y valores para el servicio de perfil
No es necesario definir previamente claves o valores para crear el destino en el servicio de perfil . La inclusión de claves y valores en una expresión de destino del servicio de perfil sin definirlas primero con los servicios targeting-key y targeting-value tendrá como destino correctamente. Sin embargo, al consultar claves y valores mediante los servicios targeting-key y targeting-value , las claves y los valores definidos en la expresión no se incluirán en la salida de esa consulta. Esas claves tampoco estarán disponibles para la generación de informes.
Creación de conjuntos de valores clave
El primer paso para usar la API para crear un destino de valor de clave personalizado es crear una clave. La clave es una categoría que contiene valores, los elementos de esa categoría. Por ejemplo, si define una clave denominada "fruit"
, puede crear valores asociados a esa clave denominada "apple"
y "orange"
. Este es un ejemplo de cómo crear una "fruit"
clave:
$ cat create_targeting_key.json
{
"targeting-key": {
"name": "fruit",
"type": "string"
}
}
$ curl -b cookies -X POST -d '@create_targeting_key.json' 'https://api.appnexus.com/targeting-key'
"targeting-key": {
"id": 4,
"type": "string",
"name": "fruit",
"label": null,
"state": "active",
"created_on": "2016-08-26 11:30:55",
"last_modified": "2016-08-26 11:30:55"
},
En este ejemplo, hemos dado a la clave el nombre "fruit"
y hemos especificado un tipo de "cadena". También puede crear claves que tendrán valores numéricos. Por ejemplo, podría definir una clave denominada "age"
con los valores 21
, 30
y 45
.
Después de crear la clave, puede asociar valores a esa clave. En nuestro ejemplo, vamos a asociar los valores "apple"
y "orange"
con nuestra "fruit"
clave.
$ cat create_targeting_value.json
{
"targeting-value": {
"name": "apple"
}
}
$ curl -b cookies -X POST -d @create_targeting_value.json 'https://api.appnexus.com/targeting-value?targeting_key_id=4'
En este ejemplo se crea un valor con el nombre "apple"
. Se especificó en la targeting_key_id
cadena de consulta para asociar este valor a la "fruit"
clave, que tiene un identificador de 4
. Ejecute el mismo comando, pero con "orange"
como el nombre en lugar de "apple"
. Los valores de la "fruit"
clave (targeting_key_id = 4
) ahora tienen este aspecto:
"targeting-values": [
{
"id": 15,
"targeting_key_id": 4,
"name": "apple",
"label": null,
"created_on": "2016-08-26 11:59:26",
"last_modified": "2016-08-26 11:59:26"
},
{
"id": 16,
"targeting_key_id": 4,
"name": "orange",
"label": null,
"created_on": "2016-08-26 11:55:12",
"last_modified": "2016-08-26 11:55:12"
}
]
También puede realizar agregaciones masivas de valores de destino. En lugar de agregar los valores de uno en uno, como hicimos en estos ejemplos, podríamos haber agregado varios valores a la vez, como este:
$ cat create_targeting_value.json
{
"targeting-values": [
{
"name": "apple"
},
{
"name": "orange"
}
]
}
$ curl -b cookies -X POST -d @create_targeting_value.json 'https://api.appnexus.com/targeting-value?targeting_key_id=4'
Tenga en cuenta que en lugar de usar targeting-value en nuestro archivo JSON, usamos targeting-values (plural) como una matriz.
Actualización del perfil
Ahora que tiene las claves y los valores asociados definidos, es el momento de agregarlas a un perfil. Las combinaciones de claves y valores que querrá asociar con un perfil pueden resultar complicadas. Comenzaremos con el ejemplo más sencillo y, a continuación, le mostraremos algunas soluciones más complejas.
Creación de expresiones
Primero tendrá que decidir qué claves y valores desea establecer como destino. Podemos usar el ejemplo anterior para simplificar esto y decir que queremos dirigirnos a todas las frutas que son manzanas o naranjas:
(fruit == apple) OR (fruta == naranja)
Bastante simple, ¿verdad? ¿Pero qué pasa si quieres complicarnos más? ¿Qué ocurre si quieres dirigirte a la fruta y a la ciudad en la que se come? Algo parecido a esto:
(fruit == apple AND city == NY) OR (fruit == naranja AND (city == Seattle OR city == LA))
Ahora está apuntando a manzanas en NY, o naranjas en Seattle o LA.
Una vez que sepas la combinación de claves y valores a los que quieres dirigirte, ¿cómo lo consigues en tu perfil? Mediante la creación de una expresión de destino (y subexpresión).
Uso de operadores de expresión
Para crear la expresión de destino, usará el exp
objeto (expresión) en el servicio Profile . Estos son los elementos del exp
objeto :
Campo | Tipo | Descripción |
---|---|---|
typ |
string | Operadores usados en la expresión . Los valores posibles son: - y - o - no - en - eq (igual a) - gt (mayor que) - lt (menor que) - gte (mayor o igual que) - lte (menor o igual que) - neq (no es igual a) Los operadores y, o, y no se pueden usar solo con subexpresión. El operador in se usa para las matrices. Los operadores gt, lt, gte e lte solo se pueden usar con valores numéricos. |
sbe |
exp (objeto) | Objeto que contiene la subexpresión (los elementos de la expresión). |
key |
string | Nombre de la clave de destino |
vtp |
type | Este campo identifica el tipo de datos del valor de expresión. El valor especificado en este campo debe coincidir con el campo y el tipo del campo de valor correspondiente. Los valores siguientes son válidos: - num - numeric; se debe proporcionar un valor en el vnm campo- str - string; se debe proporcionar un valor en el vst campo- nma - matriz numérica; se debe proporcionar un valor en el vna campo- sta - matriz de cadenas; se debe proporcionar un valor en el vsa campo |
vnm |
valor numérico | Valor como un float con signo de 32 bits (por ejemplo, 25,3). Los números pueden ser de hasta 13 dígitos (con un máximo de seis dígitos a la derecha del separador decimal). |
vst |
string | Valor como una cadena. |
vna |
matriz de valores numéricos | Conjunto de valores como una matriz de floats. |
vsa |
matriz de cadenas | Conjunto de valores como una matriz de cadenas. |
Los tipos de valor deben coincidir con los nombres de campo de valor. Por ejemplo, recibirá un error si coloca un valor definido como una cadena en el vnm
campo (valor numérico). Además, el tipo que especifique en el campo debe coincidir con el vtp
tipo de valor. Si el vtp
valor es str
, el valor debe asignarse al vst
campo .
Nota:
En el exp
objeto , los valores se identifican como cadenas mediante la asignación de str al vtp
campo . Tenga en cuenta que esto es diferente de la forma en que se definen los valores de cadena en el servicio de clave de destino . En el servicio de clave de destino se asigna una cadena al campo de tipo.
Análisis y creación de expresiones
Usará los elementos del exp
objeto para reunir las expresiones de destino. Volvamos a nuestro ejemplo original:
(fruit == apple) OR (fruta == naranja)
A continuación se muestra cómo podríamos combinar esta expresión con el exp
objeto :
{
"key_value_targets": {
"kv_expression": {
"header": {
"an_version": "1.0",
"client_version": "1.0"
},
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
}
]
}
}
}
}
Comenzamos con el key_value_targets
objeto , seguido del kv_expression
campo . Dentro de ese campo está toda la expresión. Dado que tenemos como destino manzanas o naranjas, hemos establecido el valor del campo de expresión typ
en "or"
.
Nota:
Todos los operadores de mayúsculas y minúsculas deben estar en minúsculas.
Válido: "typ": "or"
No válido: "typ": "OR"
Las claves y los valores no distinguen mayúsculas de minúsculas.
A continuación, agregamos un encabezado. El header
objeto contiene información de control de versiones sobre la expresión. Como verá en el siguiente ejemplo, estas expresiones pueden tardar una cierta cantidad de trabajo en planear e implementar, por lo que no quiere preocuparse de que se rompa más adelante debido a las actualizaciones de API. Para evitar problemas, deberá agregar un encabezado al key_value_targets
campo con la información de control de versiones. El header
objeto tiene dos campos:
Campo | Tipo | Valor | Descripción |
---|---|---|---|
an_version |
string | 1.0 |
Versión del motor de back-end que evalúa la expresión. La versión actual es 1.0. |
client_version |
string | 1.0 |
La versión de la implementación orientada al cliente de la expresión (el formato que le guiaremos en este documento). La versión actual es 1.0. |
Estos campos son necesarios tanto en como POST
en PUT
las llamadas. Debe escribir los valores como se muestra aquí para que la expresión se evalúe correctamente. Escriba la información del encabezado exactamente como se muestra en el ejemplo, incluidos los valores.
Por último, definimos nuestras subexpresión (sbe
) a las "or"
que se aplica . Nuestra primera subexpresión es fruit == apple. Tenemos una typ
de "eq"
(igual a), una clave de "fruit"
, nuestro vtp
(tipo de valor) es una cadena "str"
y nuestro vst
(valor de cadena) es "apple"
. A continuación, hacemos lo mismo con la subexpresión fruit == orange. Dicho de otra manera:
Ahora vamos a probar nuestro ejemplo más complicado:
(fruit == apple AND city == NY) OR (fruit == naranja AND (city == Seattle OR city == LA))
Esto puede parecer un poco desalentador si intenta empezar a encadenar expresiones juntas. Un método que se recomienda es empezar creando una estructura de las expresiones, similar a la siguiente:
Una vez que hayamos dibujado nuestra expresión, podemos empezar a compilarla en nuestro perfil de destino. Empezaremos desde la parte inferior derecha y trabajaremos hacia arriba.
Estas son las expresiones de city == Seattle y city == LA:
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "Seattle"
},
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "LA"
}
A continuación, subiremos un nivel a la instrucción OR, donde crearemos city == Seattle OR city == LA.
Para ello, colocamos ambas expresiones en una sola subexpresión (sbe
). Esa subexpresión está dentro de otra expresión que define la relación de las dos expresiones dentro de la subexpresión como una "or"
relación ("typ": "or"
). En otras palabras, hay una "or"
relación entre city == Seattle y city == LA:
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "Seattle"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "LA"
}
}
]
}
La expresión anterior también se puede crear como una matriz. Hemos compilado los ejemplos aquí para guiarle a través del proceso de creación de expresiones y subexpresión, pero el uso de matrices puede a menudo simplemente sus ecuaciones, así como reducir los niveles de expresión. Consulte Uso de matrices a continuación para obtener ejemplos de cómo serían las expresiones aquí como matrices.
Tenga en cuenta que, dado que se trata de una instrucción OR, también se puede construir mediante una matriz. Esta misma expresión se puede crear mediante matrices. Hasta este momento le hemos recorrido por la creación de varios exp
. Tenga en cuenta que la expresión anterior también se puede construir como una matriz. El uso de una matriz es el método preferido porque aplanará la estructura, lo que puede ser importante si empieza a quedarse sin niveles. (Vea los niveles de expresión a continuación para obtener más información). Para crear esta misma expresión que una matriz, use lo siguiente:
Ahora hemos completado la esquina inferior derecha del diagrama (city == Seattle OR city == LA).
Ahora vamos a definir nuestra expresión fruit == orange:
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
Eso fue bastante simple. Ahora podemos combinarlo todo con una "and"
expresión para crear fruit = orange AND (city == Seattle OR city == LA):
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
},
{
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "Seattle"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "LA"
}
}
]
}
}
]
}
Esto completa todo el lado derecho de nuestro diagrama.
Ahora vamos al lado izquierdo: fruit == apple AND city == NY:
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "NY"
}
}
]
}
Ahora que hemos tenido alguna práctica, esa expresión fue bastante rápida, ¿verdad? Hemos creado un exp
con un typ
"and"
que combina las subexposiciones fruit == apple y city == NY.
Ahora hemos pasado por ambos lados de nuestro diagrama; hemos creado (fruit == apple AND city == NY) y hemos creado fruit == orange AND (city == Seattle OR city == LA). Es el momento de agregar el nivel "or"
superior :
Vinculamos toda la expresión en el nivel superior colocándola todo en el key_value_targets
campo:
"key_value_targets": {
"kv_expression": {
"header": {
"an_version": "1.0",
"client_version": "1.0"
},
"exp": {
"typ": "or",
"sbe": [
{
Como puede ver, colocamos la expresión dentro del key_value_targets
objeto y el kv_expression
objeto y agregamos nuestro header
objeto (descrito anteriormente). No olvide agregar todas las llaves de cierre.
Por último, este es el aspecto de la expresión de destino completa:
{
"key_value_targets": {
"kv_expression": {
"header": {
"an_version": "1.0",
"client_version": "1.0"
},
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "NY"
}
}
]
}
},
{
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
},
{
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "Seattle"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "LA"
}
}
]
}
}
]
}
}
]
}
}
}
}
Uso de matrices
El ejemplo anterior se creó con valores de cadena. También puede usar valores numéricos para la selección de destino de clave/valor, y puede usar matrices. Las matrices pueden simplificar la expresión y aplanar la estructura si la expresión se está volviendo demasiado larga. (Vea niveles de expresión a continuación). En el primer ejemplo, teníamos una expresión similar a la siguiente:
{
"key_value_targets": {
"kv_expression": {
"header": {
"an_version": "1.0",
"client_version": "1.0"
},
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
}
]
}
}
}
}
Dado que se trata de una expresión OR, podemos simplificarla fácilmente hasta una sola expresión de matriz:
{
"key_value_targets": {
"kv_expression": {
"header": {
"an_version": "1.0",
"client_version": "1.0"
},
"exp": {
"typ": "in",
"key": "fruit",
"vtp": "sta",
"vsa": ["apple","orange"]
}
}
}
}
Tenga en cuenta algunas diferencias clave:
- Se quitó el exterior
exp
con el"or"
tipo ."Or"
está implícito con la matriz. - Sin expresión externa, ya no necesitamos una subexpresión (
sbe
) que contenga los dos conjuntos de cadenas clave/valor (fruit = manzana, fruta = naranja) - en
typ
la expresión se ha cambiado de"eq"
a"in"
. Estamos diciendo "cualquier valor para la fruta que se encuentra en la matriz de manzana, naranja". -
vtp
es ahorasta
(matriz de cadenas) en lugar destr
(cadena). - El valor se especifica como
vsa
(valor de matriz de cadenas) en lugar devst
(valor de cadena).
Esta es nuestra expresión completa simplificada para usar matrices en lugar de valores de cadena independientes. Observe que las "and"
expresiones han permanecido, solo se ha cambiado la "or"
expresión para usar una matriz.
{
"key_value_targets": {
"kv_expression": {
"header": {
"an_version": "1.0",
"client_version": "1.0"
},
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "NY"
}
}
]
}
},
{
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
},
{
"exp": {
"typ": "in",
"key": "city",
"vtp": "sta",
"vsa": ["Seattle","LA"]
}
}
]
}
}
]
}
}
}
}
Restricciones de expresiones
Hay restricciones en cuanto a la forma en que puede ser detallada la expresión.
Niveles de expresión
La profundidad lógica (el número de niveles de expresiones lógicas) de la expresión puede ser un máximo de 5. Un nivel lógico es cualquier expresión con un tipo de y o, o no. O bien, en términos del exp
objeto , es cualquier expresión (exp
) con una subexpresión (sbe
). En el ejemplo que acabamos de recorrer, nuestra profundidad lógica es 3, como se muestra en el diagrama siguiente:
A menudo, una sola expresión se puede escribir de varias maneras diferentes (diferentes combinaciones de y, o, igual, no igual, etc. a menudo pueden producir resultados idénticos). Si observa que las expresiones van más allá de cinco niveles lógicos, deberá buscar formas de simplificar la expresión o intentar reescribirla de forma que "aplane" la estructura.
Caracteres máximos
Una expresión puede contener hasta 500 000 caracteres (sin incluir espacio en blanco). Si la expresión supera los 500 000 caracteres, no funcionará según lo esperado. Puede intentar volver a configurar la expresión si necesita acortarla.
Para obtener más información sobre las limitaciones y los requisitos de clave/valor individuales, consulte las secciones "Requisitos" en Servicio de clave de destino y Servicio de valor de destino.
Valores máximos por clave
Cada clave puede tener un máximo de 999 valores. Es posible aumentar el número de valores mediante la creación de varias expresiones de clave/valor para la misma clave y el uso de OR para vincularlos. Por ejemplo, si key1 tiene 999 valores, puede agregar otra clave1 a la expresión con hasta 999 valores más. Este es un ejemplo sencillo que muestra cómo combinar varios conjuntos de valores para la misma clave:
"kv_expression": {
"exp": {
"sbe": [
{
"exp": {
"key": "key1",
"typ": "in",
"vsa": [
"1",
"2",
"3"
],
"vtp": "sta"
}
},
{
"exp": {
"key": "key1",
"typ": "in",
"vsa": [
"4",
"5",
"6"
],
"vtp": "sta"
}
},
{
"exp": {
"key": "key1",
"typ": "in",
"vsa": [
"7",
"8",
"9"
],
"vtp": "sta"
}
}
],
"typ": "or"
},
Uso de caracteres comodín
Puede usar el símbolo comodín * para tener como destino varios valores en una sola expresión. Por ejemplo, supongamos que, en lugar de dirigirse a las manzanas, quería la opción de dirigirse a tipos específicos de manzanas. Podrías tener una clave de fruta con valores que incluyen manzana herrería abuela, manzana deliciosa roja, manzana honeycrisp. Para dirigirse a un tipo específico de manzana, usaría la expresión fruit == honeycrisp apple. Si decide que quiere dirigirse a todas las manzanas, usaría un carácter comodín: fruit == *apple. En nuestro exp
objeto que tendría este aspecto:
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "*apple"
}
Puede usar hasta dos caracteres comodín en un valor. Por lo tanto, si por alguna razón sus valores habían sido introducidos como deliciosa manzana roja y deliciosa manzana dorada, usted podría encontrar todas las manzanas deliciosas con la expresión fruit == deliciosa manzana*, y todas las manzanas de cualquier tipo con la expresión fruit == *apple*.
Solución de problemas
Probablemente ya haya descubierto que es bastante fácil que algo salga mal al crear una ecuación. Hay algunos pasos que puede realizar que pueden ayudarle a resolver problemas en las ecuaciones.
Expresión JSON no válida
El servicio de perfil proporciona un control de errores que le ayudará a determinar la causa de los problemas que pueda tener con la expresión JSON. Sin embargo, no recibirá un informe completo de todos los problemas a la vez. El servicio recorre la ecuación de la misma manera que la hemos recorrido en este documento. Comienza en la ecuación más interna (la parte inferior del árbol de ecuaciones) y comprueba esa ecuación. Si hay errores en esa parte de la ecuación, se notificarán esos errores. Después de corregir esos errores y volver a ejecutar el servicio, continuará al siguiente nivel en el árbol y comprobará de nuevo si hay errores.
Expresión no editable en
Es posible crear una expresión en la API que no se puede mostrar ni editar en . Si desea poder modificar expresiones después de crearlas con la API, debe seguir estas directrices:
No crear una expresión con más de dos niveles de profundidad
Aunque puede crear una expresión de hasta cinco niveles en profundidad a través de la API, solo puede trabajar con hasta dos niveles. Debe simplificar las expresiones y mantenerlas en un máximo de dos niveles para poder modificarlas. Consulte Restricciones de expresiones para obtener una descripción de los niveles de profundidad.
Niveles AND y OR alternativos
En nuestros ejemplos anteriores, alternamos los niveles AND y OR:
"exp": {
"typ": "or",
"sbe": [
{
"exp": {
"typ": "and",
"sbe": [
Puede crear expresiones donde repita operadores en niveles posteriores. Por ejemplo, en esta expresión puede ver que comenzamos con un Y, seguido inmediatamente de otro AND:
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "NY"
}
}
]
}
},
{
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "LA"
}
}
]
}
}
}
}
Sin embargo, esas expresiones no serán editables en . Intente simplificar las expresiones: si va a anidar expresiones AND posteriores, es posible que no necesite anidarlas. La expresión anterior, escrita, tiene este aspecto:
(fruit == apple AND city == NY) AND (fruit = orange AND city == LA)
Se podría simplificar - y hacer editable en - escribiendo de esta manera:
"exp": {
"typ": "and",
"sbe": [
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "apple"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "NY"
}
}
{
"exp": {
"typ": "eq",
"key": "fruit",
"vtp": "str",
"vst": "orange"
}
},
{
"exp": {
"typ": "eq",
"key": "city",
"vtp": "str",
"vst": "LA"
}
}
]
}
Destino incorrecto
Ha seguido los pasos anteriores y el servicio de perfil se ejecuta sin errores, pero la segmentación no proporciona los resultados esperados. Estos son algunos pasos que puede seguir para determinar el problema:
- Comprobación doble de la ecuación: ¿Está ANDing donde debe estar ORing? ¿Tiene dobles negativos (no (x neq y)) que podrían devolver los resultados opuestos de lo que había pensado?
- Dibuja el árbol de ecuaciones: si realmente no dibujaste un árbol de ecuaciones, te sugerimos que lo pruebes. Este formato puede ser muy útil para recorrer cada paso de la ecuación.
- Compare el árbol de ecuaciones con la ecuación: recorra un nodo a la vez y asegúrese de que tiene todos los eq y neq y y y o todos los lugares a los que pertenecen.