Ejemplo: campo derivado persistente
Podría tener un proceso Selección configurado para seleccionar los ID en función de una restricción sobre un campo derivado, y que estuviese conectado a un proceso Instantánea para generar los registros seleccionados que incluyan dicho campo derivado. Si se marca el campo derivado para que sea persistente, el valor calculado se pasará del proceso Selección al proceso Instantánea.
Los campos derivados persistentes también se utilizan con cualquier campo derivado de tipo agregado (por ejemplo, AVG o GROUPBY). Estos campos agregados se calculan en función de las diversas filas de datos dentro de la celda actual, de modo que el valor de estos campos agregados cambia cuando cambia el contenido de la celda. Con los campos derivados persistentes se puede optar por conservar el valor calculado original y luego llevarlo a otros procesos. Si, por el contrario, opta por volver a calcular el campo derivado, obtendrá un valor calculado en función de los registros restantes de la celda actual.
Cuando un proceso recibe varias entradas, como cuando un proceso Instantánea trabaja con la entrada procedente de dos procesos Selección, todos los campos derivados persistentes estarán disponibles al proceso situado en sentido descendente.
Si un campo derivado persistente no está disponible a todos los procesos Selección entrantes, y está incluido en la salida de un proceso Instantánea, entonces el proceso Instantánea mostrará un valor NULL en dicho campo derivado persistente en todas las filas de salida procedentes de los procesos Selección que no tengan dicho campo derivado persistente.
Si un campo derivado persistente no está disponible en todos los procesos Selección entrantes, y lo utiliza para definir un proceso Segmentación, entonces el proceso Segmentación tendrá segmentos vacíos para los procesos Selección que no tuvieran dicho campo derivado persistente.
El proceso Segmentación seguirá sin configurar si intenta definir un segmento con una expresión que utilice más de un campo derivado persistente que no esté disponible a todos los procesos Selección.
Se aplican las siguientes directrices a los campos derivados persistentes (PDF en sus siglas inglesas):
*
*
*
*
*
*
Sin embargo, cuando utilice un campo derivado basado en un campo de tabla, la salida incluirá un campo de tabla de manera indirecta. Por lo tanto, habrá un registro para cada instancia de un valor de ID. (Es decir, si el valor de ID aparece siete veces en los datos, habrá siete registros en la salida).
Los campos derivados persistentes solo almacenan un único valor para cada ID de audiencia, seleccionado al azar a partir de los valores disponibles. Esto significa que, cuando se trabaja con datos sin normalizar, deberá utilizarse una función de macro GROUPBY para lograr los resultados deseados.
Por ejemplo, suponga que quiere buscar en la tabla de transacciones de compra el importe más elevado en dólares gastado por un cliente en una única transacción, y guardarlo como campo derivado persistente para que sea procesado en sentido descendente. Podría escribir un campo derivado (y luego persistirlo como un campo derivado persistente) de la siguiente manera:
importe_compra_mas_alto = groupby(CID, maxof, Purch_Amt)
Realizado contra datos de transacciones de compra sin normalizar, el cálculo sería el siguiente:
Cuando se persiste el campo derivado, selecciona (al azar) un valor cualquiera (todos son 300 $) y persiste el valor 300 $ para el cliente A.
Un segundo ejemplo, menos evidente, consistiría en seleccionar una puntuación de modelo predictivo de una tabla de puntuación para un modelo X determinado. Aquí el campo derivado sería algo similar a esto:
Puntuacion_ModeloX = groupby(CID, maxof, if(Model = 'X', 1, 0), Score)
Y los datos podrían ser similares a:
La persistencia del campo derivado, Puntuacion_ModeloX, arroja el resultado deseado de un valor de puntuación 80. Es incorrecto crear un campo derivado:
Puntuacion_ModeloX_Malo = if(Model = 'X', Score, NULL)
Esto daría el siguiente resultado:
Después, cuando se persiste el campo derivado Puntuacion_ModeloX_Malo, el valor persistido podría ser NULL o 80. value could be NULL or 80. Si está trabajando con datos sin normalizar, y los valores del campo derivado no son todos iguales, la persistencia de dicho campo derivado podría suponer que se devolviera cualquiera de los valores devueltos. Por ejemplo, si se define Puntuacion_Campo_Derivado = SCORE y se persiste, podría resultar en el valor 57, 72, ó 80 para el cliente A. Para asegurar el comportamiento deseado, deberá utilizar la macro GROUPBY sobre el ID de cliente y garantizar que el valor del campo derivado es el mismo para todos los datos de ese cliente.