Cómo unir un segmento de referencia cruzada desde varios segmentos host

En esta sección:

En determinadas ocasiones, puede que necesite establecer una unión con un segmento de referencia cruzada desde varios segmentos diferentes, del origen de datos host. Además, es posible que tenga que establecer una unión un segmento de referencia cruzada desde dos orígenes de datos host, diferentes, a la vez. Para manipular estas estructuras de datos, emplee los joins definidos en el archivo máster.


Principio de página

x
Cómo unir desde varios segmentos en un origen de datos host

Al trabajar con una aplicación, puede que quiera unir el mismo segmento de referencia cruzada en distintos puntos del mismo origen de datos. Supongamos, por ejemplo, que dispone de un origen de datos llamado COMPFILE, que mantiene datos sobre las empresas de su propiedad:

El segmento DIVSEG contiene una instancia por cada división e incluye los campos de nombre de división y gerente. De forma parecida, el segmento PRODSEG contiene una instancia por cada producto y el nombre de su correspondiente director.

Recupere la información personal de los directores de producto y gerentes de división desde un solo origen de datos de empleados:

No se puede recuperar esta información con un join estándar, definido en el archivo máster, ya que existen dos claves de referencia cruzada en el origen de datos host (PRODMGR y DIVMGR) y, en sus informes, quiere que se distingan las direcciones y las fechas de nac. del segmento PRODSEG, de las recuperadas en DIVSEG.

Hemos incluido un método para que pueda implementar un join al mismo segmento de referencia cruzada desde varios segmentos de un mismo origen de datos host. Puede emparejar los campos de referencia cruzada y de host, desde alias a nombre de campo y cambiar el nombre de estos campos por uno único.

El archivo máster de PERSFILE podría tener este aspecto:

FILENAME = PERSFILE, SUFFIX = FOC, $
SEGNAME = IDSEG, SEGTYPE = S1, $
   FIELD = NAME,     ALIAS = FNAME, FORMAT = A12,     INDEX=I, $
   FIELD = ADDRESS,  ALIAS = DAS,   FORMAT = A24,              $
   FIELD = DOB,      ALIAS = IDOB,  FORMAT = YMD,              $

Puede usar el siguiente archivo máster para unir PERSFILE a COMPFILE. Tenga en cuenta que no hay ningún terminador de registros ($) después de la declaración de segmento de referencia cruzada (anterior a las declaraciones de campos de referencia cruzada).

FILENAME = COMPFILE, SUFFIX = FOC, $
 SEGNAME = COMPSEG, SEGTYPE = S1, $
   FIELD = COMPANY,   ALIAS = CPY,     FORMAT = A40,           $
 SEGNAME = DIVSEG,  PARENT = COMPSEG, SEGTYPE = S1, $
   FIELD = DIVISION,  ALIAS = DV,      FORMAT = A20,           $
   FIELD = DIVMGR,    ALIAS = NAME,    FORMAT = A12,           $
 SEGNAME = ADSEG,   PARENT = DIVSEG,  SEGTYPE = KU,
  CRSEGNAME = IDSEG, CRKEY = DIVMGR, CRFILE = PERSFILE,
   FIELD = NAME,      ALIAS = FNAME,   FORMAT = A12, INDEX = I,$
   FIELD = DADDRESS,  ALIAS = ADDRESS, FORMAT = A24,           $
   FIELD = DDOB,      ALIAS = DOB,     FORMAT = YMD,           $
 SEGNAME = PRODSEG, PARENT = COMPSEG, SEGTYPE = S1, $
   FIELD = PRODUCT,   ALIAS = PDT,     FORMAT = A8,            $
   FIELD = PRODMGR,   ALIAS = NAME,    FORMAT = A12,           $
 SEGNAME = BDSEG,   PARENT = PRODSEG, SEGTYPE = KU,
  CRSEGNAME = IDSEG, CRKEY = PRODMGR, CRFILE = PERSFILE,
   FIELD = NAME,      ALIAS = FNAME,   FORMAT = A12, INDEX = I,$
   FIELD = PADDRESS,  ALIAS = ADDRESS, FORMAT = A24,           $
   FIELD = PDOB,      ALIAS = DOB,     FORMAT = YMD,           $

DIVMGR y PRODMGR se describen como CRKEYs. El alias común, NAME, queda automáticamente emparejado con el nombre NAME, en el origen de datos PERSFILE. Además, las declaraciones de campo, posteriores a la información del join, cambian el nombre de los campos ADRESS y DOB para que aparezcan citados por separado en los informes. El nombre real de estos campos se proporcionan como alias en PERSFILE.

Tenga en cuenta que no se puede modificar el nombre del campo NAME, ya que se trata del campo común del join. Debe estar incluido en la declaración, junto con los campos cuyos nombres está cambiando, como se ha descrito en el origen de datos de referencia cruzada. No es un problema que no se pueda cambiar su nombre, puesto que ALIAS sí lo permite y el campo no tiene por qué usarse en los informes. Debido a que es el campo del join, contiene exactamente la misma información que los campos DIVMGR y PRODMGR.

Debe respetar las siguientes convenciones:


Principio de página

x
Cómo unir desde varios segmentos en varios orígenes de datos host, diferentes: Múltiples principales

En algún momento, tendrá que establecer una unión con un segmento de referencia cruzada desde dos orígenes de datos host, diferentes, a la vez. Si describiera una estructura parecida a ésta como un origen de datos individual, dispondría de dos elementos principales para el mismo segmento, lo que no está permitido. Sin embargo, puede describir la información en orígenes de datos diferentes, utilizando joins para obtener un resultado similar.

Suponga que tiene una aplicación que sigue el número de pedidos de piezas de los clientes, el inventario de piezas en el almacén e información general sobre las piezas. Si esto se describiera como un solo origen de datos, tendría la siguiente estructura:

Puede unir varios orígenes de datos para crear esta estructura. Por ejemplo:

Los segmentos CUSTOMER y ORDER se encuentra situados en el origen de datos ORDER, WAREHOUSE y STOCK, en INVENTRY, y PRODINFO en PRODUCTS. Los orígenes de datos INVENTRY y ORDERS tienen joins de uno a uno con el origen PRODUCTS. En el origen de datos INVENTRY, STOCK es el segmento host. En el origen de datos ORDERS, ORDER es el segmento host.

Además, existe una relación de uno a varios entre el segmento STOCK, en el origen de datos INVENTRY, con el segmento ORDER, en ORDERS, y un join de uno a varios, recíproco, entre el segmento ORDER, de ORDERS, y el segmento STOCK, de INVENTRY.

Puede consultar los joins entre estos tres orígenes de datos desde las perspectivas de ambos orígenes de datos, lo que supone una aproximación a la estructura multi-principal, descrita anteriormente.


Principio de página

x
Reutilización recursiva de un segmento

En raras ocasiones, el origen de datos puede hacer referencia cruzada a sí mismo. Suponga que tiene un origen de datos de productos, cada uno con una lista de las piezas que lo componen, mientras que la pieza puede constituir un producto por sí misma y tener subpiezas. De modo esquemático, esto tendría el siguiente aspecto:

La descripción, en este caso, de dos niveles de subpiezas, sería:

Consulte el manual Cómo crear informes con el lenguaje WebFOCUS para más información sobre los joins recursivos.


WebFOCUS