En esta sección: |
Los joins estáticos permiten relacionar segmentos de orígenes de datos FOCUS, diferentes, de forma permanente. Los joins estáticos se especifican en el archivo máster del origen de datos host.
Existen dos tipos de joins estáticos: de uno a uno (SEGTYPE KU) y de uno a varios (SEGTYPE KM).
Cómo: |
El segmento PAYINFO del origen de datos EMPLOYEE tiene un campo llamado JOBCODE. Este campo contiene un código que especifica el puesto del empleado.
La descripción completa del puesto y demás información relacionada, se almacena en un origen de datos diferente, llamado JOBFILE. Puede recuperar la descripción del puesto desde JOBFILE, localizando el registro cuyo JOBCODE coincida con el valor de JOBCODE en el origen de datos EMPLOYEE, como se aprecia en el siguiente diagrama:
El uso de un join en esta situación evita tener que introducir y revisar la descripción del puesto, en cada registro del origen de datos EMPLOYEE. Basta con sólo mantener una lista de descripciones válidas de los puestos, en el origen de datos JOBFILE. Sólo tiene que hacer los cambios una vez, en JOBFILE, y aparecerán reflejados en todos los registros de los orígenes de de datos unidos, correspondientes a EMPLOYEE.
Para obtener el mayor grado de eficiencia, implemente el join de forma estática, puesto que la relación entre los códigos y las descripciones de puesto no suele cambiar.
Aunque los segmentos Información de empleado y Descripción de puesto se encuentran almacenados en orígenes de datos diferentes, en términos de generación de informes, el origen de datos EMPLOYEE se trata como si también contuviera el segmento Descripción de puesto, del origen de datos JOBFILE. La estructura actual del origen de datos JOBFILE no se ve afectada.
Para consultar el origen de datos EMPLOYEE:
SEGNAME = segname, SEGTYPE = KU, PARENT = parent, CRFILE = db_name, CRKEY = field, [CRSEGNAME = crsegname,] [DATASET = physical_filename,] $
donde:
Es el nombre con que se conoce el segmento de referencia cruzada, en el origen de datos host. Puede asignar cualquier nombres de segmento que sea válido, incluido el nombre original del segmento, en el origen de datos de referencia cruzada.
Es el nombre del segmento host.
Es el nombre del origen de datos de referencia cruzada. Puede cambiar el nombre sin tener que reconstruir el origen de datos.
Es el nombre común (nombre de campo o alias) del campo host y del campo de referencia cruzada. El nombre o alias debe ser el mismo para el campo host y el campo de referencia cruzada. Puede cambiar el nombre del campo sin tener que reconstruir el origen de datos, siempre que SEGTYPE permanezca igual.
Ambos campos deben tener el mismo tipo de formato y longitud.
El campo de referencia cruzada debe estar indexado (FIELDTYPE=I or INDEX=I).
Es el nombre del segmento de referencia cruzada. Si no se especifica, se emplea el valor por defecto asignado a SEGNAME. Una vez introducidos los datos en el origen de datos de referencia cruzada, no se puede cambiar el crsegname sin reconstruir el origen.
Opcionalmente, es el nombre físico, dependiente de la plataforma, del origen de datos para CRFILE.
El valor KU de SEGTYPE indica que tiene claves y es único.
SEGNAME = JOBSEG, SEGTYPE = KU, PARENT = PAYINFO, CRFILE = JOBFILE, CRKEY = JOBCODE, $
A continuación le mostramos las secciones relevantes del archivo máster EMPLOYEE (los campos no esenciales y los segmentos no aparecen):
FILENAME = EMPLOYEE, SUFFIX = FOC, $ SEGNAME = EMPINFO, SEGTYPE = S1, $ . . . SEGNAME = PAYINFO, SEGTYPE = SH1, PARENT = EMPINFO, $ FIELDNAME = JOBCODE, ALIAS = JBC, FORMAT = A3, $ . . . SEGNAME = JOBSEG, SEGTYPE = KU, PARENT = PAYINFO, CRFILE = JOBFILE, CRKEY = JOBCODE, $
Observe que sólo tiene que proporcionar el nombre del segmento de referencia cruzada. Los campos del segmento ya son conocidos, a través del archivo máster del origen de datos de referencia cruzada (en este ejemplo, JOBFILE). Observe que el atributo CRSEGNAME se ha omitido, debido a que, en el ejemplo, su nombre es idéntico al asignado al atributo SEGNAME.
El archivo máster del origen de datos de referencia cruzada, además del propio origen, deben ser accesibles cuando se está usando el origen de datos host. El origen de datos de referencia cruzada no tiene por qué tener datos.
La descodificación se refiere al proceso de emparejar un código (como el código de trabajo en el ejemplo) con la información que está representando (como la descripción del puesto). Puesto que cada código sólo presenta un conjunto de información asociada, el join entre el código y la información debe ser de uno a uno, es decir, único. Puede descodificar utilizando un join, como en nuestro ejemplo, o emplear la función DECODE con el comando DEFINE, como se explica en el manual Cómo crear informes con el lenguaje WebFOCUS. . El método del join es el más indicado cuando el número de códigos sea alto.
Cómo: |
El join de uno a varios (un join que no es único) se utiliza cuando existen varias instancias de datos en el segmento de referencia cruzada, asociadas a una sola instancia en el segmento host. Utilizando el ejemplo de EMPLOYEE, supongamos que dispone de un origen de datos educativos, llamado EDUCFILE, con información sobre los cursos de los empleados. Uno de los segmentos del origen, ATTNDSEG, contiene las fechas en que cada empleado asistió a una determinada clase. La clave del segmento es la fecha de asistencia. El campo EMP_ID, que identifica a los asistentes, incluyen los mismos números de ID que el campo EMP_ID del segmento EMPINFO, en el origen de datos EMPLOYEE.
Si quiere consultar el historial educativo de un empleado, una el campo EMP_ID del segmento EMPINFO con el campo EMP_ID de ATTNDSEG. Este join debe ser de uno a varios, ya que quiere recuperar todas las instancias de asistencia a clase, asociadas a un determinado ID:
La sintaxis para describir los joins de uno a varios es similar a la de los joins de uno a uno, descrita en Cómo Especificar un join único estático, a excepción del valor del atributo SEGTYPE que debe introducir, en este caso, KM (múltiple, con claves):
SEGTYPE = KM
SEGNAME = ATTNDSEG, SEGTYPE = KM, PARENT = EMPINFO, CRFILE = EDUCFILE, CRKEY = EMP_ID, $
A continuación le mostramos las secciones relevantes del archivo máster EMPLOYEE (los campos no esenciales y los segmentos no aparecen):
FILENAME = EMPLOYEE, SUFFIX = FOC, $ SEGNAME = EMPINFO, SEGTYPE = S1, $ FIELDNAME = EMP_ID, ALIAS = EID, FORMAT = A9, $ . . . SEGNAME = PAYINFO, SEGTYPE = SH1, PARENT = EMPINFO, $ FIELDNAME = JOBCODE, ALIAS = JBC, FORMAT = A3, $ . . . SEGNAME = JOBSEG, SEGTYPE = KU, PARENT = PAYINFO, CRFILE = JOBFILE, CRKEY = JOBCODE, $ . . . SEGNAME = ATTNDSEG, SEGTYPE = KM, PARENT = EMPINFO, CRFILE = EDUCFILE, CRKEY = EMP_ID, $
Dentro de la solicitud de informe, los dos orígenes de referencia cruzada, JOBFILE y EDUCFILE, se consideran como parte del origen EMPLOYEE. La estructura de datos presenta un aspecto similar a éste:
WebFOCUS |