Campos Virtuales
AdemƔs de las fuentes de datos de texto, SQL, XML y web services, es posible definir campos virtuales.
Los campos virtuales se definen en el Panel de propiedades cuando esta elegido el nodo Fuentes en el Ćrbol de DiseƱo.
Como su nombre lo indica los campos virtuales pueden ser utilizados en los modelos como cualquier otro campo, aunque no se corresponden con campos fĆsicos de ninguna de las fuentes de datos.
Ejemplos de utilizaciĆ³n de campos virtuales son:
- Obtener medidas que no se encuentran en las fuentes
- Incluir cƔlculos complejos
- Crear niveles para las jerarquĆas y etiquetas para los valores
Los campos virtuales se calculan para todos los registros provenientes de fuentes de datos durante la creaciĆ³n del datamart. Una vez que los cĆ”lculos estĆ”n completos, el campo virtual estĆ” disponible y no hay ninguna distinciĆ³n entre Ć©ste y un campo fĆsico.
Estos campos se definen con expresiones que pueden incluir:
- Campos de las fuentes de datos
- Campos de las tablas locales
- Operadores y funciones especificados
Es posible definir los campos virtuales con alguno de los siguientes tipos de datos:
- Integer
- Double
- String
- Date
Nota
Es importante tener en cuenta que no es posible usar un campo virtual en la expresiĆ³n de otro campo virtual.
Los campos virtuales no estĆ”n relacionados con una fuente de datos especĆfica, pero pueden usarse con todas las fuentes de datos. Esto permite la definiciĆ³n de campos virtuales disponibles para mĆ”s de una fuente.
Para determinar a cuĆ”les fuentes de datos del modelo se agregarĆ”n campos virtuales, la lista completa de campos virtuales se verifica en todas las fuentes durante el proceso de construcciĆ³n.
La expresiĆ³n que define cada campo se analiza y si todos los campos a los que se hace referencia estĆ”n disponibles en la fuente, el campo virtual se agrega a los registros obtenidos.
Si define un campo virtual con una expresiĆ³n constante, este se agrega a todas las fuentes del modelo.
Note
Si define un campo virtual,Campo_2 = Campo_1*0.10, luego el Campo_2 se agrega a los registros de todas las fuentes que incluyen un campo Campo_1. Si alguna de las fuentes con Campo_1 ya contiene un campo fĆsico llamado Campo_2, el campo virtual Campo_2 no lo sobrescribe ya que los campos fĆsicos tienen mayor prioridad.
Definiendo Campos Virtuales
Use el comando Agregar en el panel de propiedades de Fuentes para definir un campo virtual.
Para definir un campo virtual:
- Seleccionar la rama Fuentes en el Ćrbol de DiseƱo. El panel de propiedades se muestra con la pĆ”gina Campos Virtuales.
- Presionar el botĆ³n Nuevo Campo. Un nuevo campo se inserta al final de la lista de campos virtuales.
- Se puede editar el nombre del campo para cambiarlo con doble clic sobre el mismo.
- Hacer doble clic en el campo DefiniciĆ³n.
- Ingresar la expresiĆ³n que define el campo. Si se desea se puede invocar el dialogo de ayuda para ingresar la expresiĆ³n por medio del botĆ³n .
- Hacer clic en el campo Tipo. Aparece una lista de los tipos disponibles.
- Seleccionar un tipo de la lista.
Ejemplos de Uso de Campos Virtuales
Los siguientes son ejemplos de uso de campos virtuales. Representan sĆ³lo una muestra de las aplicaciones prĆ”cticas de esta funcionalidad.
Ejemplo I
Supongamos una fuente de datos contiene los siguientes campos fĆsicos:
- VentaBruta
- Descuento
Es posible definir un campo virtual como
VentaNeta = (VentaBruta - Descuento)
Luego, el campo virtual VentaNeta puede usarse en la definiciĆ³n de una nueva Medida en el modelo.
Ejemplo II
Supongamos que una fuente de datos contiene registros con la siguiente estructura:
(Fecha, Producto, TipoDeCliente, VentaBruta) |
donde el campo TipoDeCliente toma los siguientes valores:
- Cuentas grandes
- Cuentas medianas
- Cuentas pequeƱas
Es posible definir un campo virtual que permita al usuario definir una medida llamada ComisiĆ³n en el modelo:
Comision = (TipoDeCliente == "Cuentas Grandes") ? (VentaBruta * 0.05) : (VentaBruta * 0.10)
De esta forma creamos un campo que asigna una comisiĆ³n de 5% para los clientes catalogados como "Cuentas Grandes" y una comisiĆ³n de 10% para el resto de los clientes.
Ejemplo III
Los dos ejemplos previos estĆ”n orientados hacia los cĆ”lculos de campos virtuales para usar en la definiciĆ³n de Medidas en el modelo. TambiĆ©n se pueden definir campos virtuales que se usen posteriormente en la construcciĆ³n de dimensiones.
La dimensiĆ³n Fecha incluida en el O3 Designer permite la generaciĆ³n de jerarquĆas de tipo AƱo, Trimestre, Mes, Semana y DĆa. A continuaciĆ³n se describe la capacidad de definir jerarquĆas para las fechas que manejan otros tipos de jerarquĆas usando campos virtuales.
Supongamos que una fuente de datos contiene registros con la siguiente estructura:
(Fecha, Producto, TipoDeCliente, Cantidad) |
donde el campo TipoDeCliente toma los siguientes valores:
- Cuentas grandes
- Cuentas medianas
- Cuentas pequeƱas
Es posible definir los siguientes campos virtuales
AƱo = AƱo(Fecha) Mes = NombreDelMes(Fecha)
Luego se puede crear una dimensiĆ³n "Meses" con la siguiente jerarquĆa:
- Mes
- AƱo
Donde a cada uno de estos niveles se les definirĆa como clave los campos "Mes" y "AƱo" respectivamente.
Notar como el orden de los niveles es exactamente el opuesto al que se definirĆa para dimensiones de tipo Fecha.
De esta forma es posible comparar las cantidades vendidas por mes en los diferentes aƱos. Esto no es posible con las dimensiones de tipo Fecha.
Ejemplo IV
TambiƩn es posible usar los campos virtuales como un mecanismo para crear etiquetas de mƔs de un campo bƔsico para el usuario final del O3 Browser.
Supongamos que una fuente de datos contiene registros con la siguiente estructura:
(Fecha, CodProducto, EtiquetaProducto, Cliente, Cantidad) |
Es posible definir una descripciĆ³n para el producto que incluya su cĆ³digo y una etiqueta con un campo virtual como:
ProductoDesc = Concatenar(CodProducto, " - ", EtiquetaProducto)
Ejemplo V
Otro ejemplo tĆpico de uso de campos virtuales es para generar etiquetas que no estĆ”n almacenadas en ninguna fuente de datos.
Supongamos que existe una fuente que define el campo "GĆ©nero" que puede tomar los valores "F" o "M" para el caso femenino y masculino respectivamente.
Si se generara un datamart directamente sobre este campo, los elementos de la dimensiĆ³n "GĆ©nero" serĆan F y M. Para lograr un cubo mĆ”s amigable serĆa preferible mostrar las etiquetas "Femenino" y "Masculino" respectivamente.
Esto es posible creando el siguiente campo virtual
GeneroDesc = (Genero == "M") ? "Masculino" : "Femenino"