En esta sección: |
Los orígenes de datos de FOCUS pueden incluir hasta 1022 archivos físicos. La división horizontal es una parte de uno o varios segmentos de la totalidad de la estructura del origen de datos. Observe, sin embargo, que el número de archivos físicos, asociado a un origen de datos de FOCUS, es la suma de sus divisiones y archivos LOCATION. La suma debe ser inferior o igual a 1022. A lo largo del tiempo, según va aumentando el tamaño de los orígenes de datos de FOCUS, puede introducir nuevas divisiones de acorde a los requisitos de la aplicación.
El origen de datos de FOCUS es compatible con la división inteligente, donde cada división vertical contiene la totalidad de la estructura del origen de datos para valores de datos específicos o para un rango de valores. La división inteligente no sólo permite separar los datos en 1022 archivos diferentes, sino que también permite crear un archivo de acceso, con descripciones de los valores de datos reales basadas en criterios WHERE. Al procesar una solicitud de informe, los criterios de selección de la solicitud se comparan con los criterios de WHERE, en el archivo de acceso, para determinar las divisiones necesarias para la recuperación.
Para seleccionar las aplicaciones que mejor puedan aprovechar la división, busque las que empleen los comandos USE para concatenar orígenes de datos, o busque datos que se presten a la separación en base a valores o rangos de valores, como los datos almacenados por mes o departamento. La división inteligente funciona a modo de un comando USE inteligente. Examina el archivo de acceso al procesar una solicitud de informe, para determinar las divisiones que va a leer, mientras que el comando USE lee todos los archivos de la lista. Esta inteligencia reduce el I/O y mejora el rendimiento.
Para aprovechar la característica de división, debe:
La concatenación de múltiples divisiones sólo funciona para la generación de informes. Debe cargar o reconstruir cada división física por separado. Puede crear un archivo máster independiente para hacer referencia a cada división en el procedimiento de carga, o puede utilizar el archivo máster individual, creado para la generación de informes, en base al origen de datos dividido, si:
Nota: Las solicitudes de informes leen automáticamente todas las divisiones necesarias, sin la intervención del usuario.
Cómo: Referencia: |
Para aprovechar la característica de división, modifique el archivo máster y añada el atributo ACCESSFILE:
El nombre del archivo de acceso debe coincidir con el del archivo máster y debe especificarse con el ACCESS=attribute en el archivo máster.
FILENAME=filename, SUFFIX=FOC, ACCESS[FILE]=accessfile, . . .
donde:
Es el nombre del archivo del origen de datos dividido.
Es el nombre del archivo de acceso. Debe ser el mismo que el del archivo máster.
FILENAME=VIDEOTR2, SUFFIX=FOC, ACCESS=VIDEOACX, $ SEGNAME=CUST, SEGTYPE=S1 FIELDNAME=CUSTID, ALIAS=CIN, FORMAT=A4, $ FIELDNAME=LASTNAME, ALIAS=LN, FORMAT=A15, $ FIELDNAME=FIRSTNAME, ALIAS=FN, FORMAT=A10, $ FIELDNAME=EXPDATE, ALIAS=EXDAT, FORMAT=YMD, $ FIELDNAME=PHONE, ALIAS=TEL, FORMAT=A10, $ FIELDNAME=STREET, ALIAS=STR, FORMAT=A20, $ FIELDNAME=CITY, ALIAS=CITY, FORMAT=A20, $ FIELDNAME=STATE, ALIAS=PROV, FORMAT=A4, $ FIELDNAME=ZIP, ALIAS=POSTAL_CODE, FORMAT=A9, $ SEGNAME=TRANSDAT, SEGTYPE=SH1, PARENT=CUST FIELDNAME=TRANSDATE, ALIAS=OUTDATE, FORMAT=HYYMDI, $ SEGNAME=SALES, SEGTYPE=S2, PARENT=TRANSDAT FIELDNAME=TRANSCODE, ALIAS=TCOD, FORMAT=I3, $ FIELDNAME=QUANTITY, ALIAS=NO, FORMAT=I3S, $ FIELDNAME=TRANSTOT, ALIAS=TTOT, FORMAT=F7.2S, $ SEGNAME=RENTALS, SEGTYPE=S2, PARENT=TRANSDAT FIELDNAME=MOVIECODE, ALIAS=MCOD, FORMAT=A6, INDEX=I, $ FIELDNAME=COPY, ALIAS=COPY, FORMAT=I2, $ FIELDNAME=RETURNDATE, ALIAS=INDATE, FORMAT=YMD, $ FIELDNAME=FEE, ALIAS=FEE, FORMAT=F5.2S, $ DEFINE DATE/I4 = HPART(TRANSDATE, 'YEAR', 'I4');
El siguiente ejemplo explica cómo usar un origen de datos dividido de forma inteligente. El archivo de acceso del origen de datos VIDEOTR2 describe tres divisiones, en base a DATE:
TABLE FILE VIDEOTR2 PRINT LASTNAME FIRSTNAME DATE WHERE DATE FROM 1996 TO 1997 END
La salida es:
LASTNAME FIRSTNAME DATE -------- --------- ---- HANDLER EVAN 1996 JOSEPH JAMES 1997 HARRIS JESSICA 1997 HARRIS JESSICA 1996 MCMAHON JOHN 1996 WU MARTHA 1997 CHANG ROBERT 1996
No hay nada en la solicitud ni en la salida que indique que se está usando un origen de datos dividido. Aunque sólo se recupera la segunda división, lo que ayuda a reducir el I/O y mejorar el rendimiento.
(FOC1968)ACCESS FILE INFORMATION IN MASTER %1 WILL NOT BE CONSIDERED
Puede que este mensaje aparezca en Ver código fuente, no en la página HTML.
Cómo: Referencia: |
Cada solicitud incluye el nombre del archivo máster. Se lee el archivo máster y sus declaraciones se utilizan para acceder al origen de datos. Si el archivo máster contiene un atributo ACCESS=, se lee el archivo de acceso, que se usa para localizar los orígenes de datos correctos. El archivo de acceso debe tener el mismo nombre que el archivo máster. Si no existe un archivo de acceso con el mismo nombre que el atributo ACCESS=, en el archivo máster, la solicitud se procesa con el archivo máster, únicamente.
Cada archivo de acceso de FOCUS describe los archivos y MDIs de un archivo máster, que debe tener el mismo nombre que el archivo de acceso.
Todos los emparejamientos de atributos y valores están separados por un signo de igualdad (=), mientras que los de las declaraciones se separan mediante comas (,). Cada declaración termina con una coma y el símbolo de dólar (,$).
Si el archivo se ha dividido de forma inteligente para que la expresión indique qué valores de datos residen en cada partición, la declaración de DATA incluirá una frase WHERE, que especifica su expresión.
Declaración del archivo máster:
MASTER=mastername,$
donde:
Indica el nombre del archivo máster al que está asociado este archivo de acceso. Es el mismo valor incluido en el atributo ACCESS=filename del archivo máster, que se usa para indicar la existencia y el nombre del archivo de acceso.
DATA=file_specification, [WHERE= expression; ,]$ [DATA=file_specification, [WHERE= expression; ,]$ ...]
donde:
Apunta a la ubicación del archivo. Es la especificación completa de un archivo. Puede haber un máximo de 1022 declaraciones (divisiones) de DATA en un solo archivo de acceso. La cláusula WHERE es la base de la característica de división inteligente. La expresión termina con un punto y coma, mientras que la declaración completa lo hace con el signo coma/dólar. Se admite el uso de las siguientes expresiones WHERE:
WHERE = field operator value1 [ OR value2...]; ,$
WHERE = field FROM value1 TO value2 [AND FROM value3 TO value4];,$
Puede combinar las expresiones con el operador AND.
Declaraciones de ubicación de archivo:
LOCATION=location_segment_name, DATA=location_segment_file_specification,$
donde:
Es el nombre del segmento almacenado en el archivo de ubicación.
Es la especificación completa del archivo físico en que se encuentra situado el segmento.
Declaraciones de MDI:
MDI=mdiname, TARGET_OF = segname,$ DIM = [filename.]fieldname [, MAXVALUES = n] [, WITHIN = dimname1],$ [DIM = [filename.]fieldname [, MAXVALUES = n] [, WITHIN = dimname1] ,$ ...] MDIDATA=mdi_file_specification,$ [MDIDATA=mdi_file_specification,$ ...]
donde:
Es el nombre del MDI.
Es el nombre del segmento de destino.
Es el nombre del archivo en que reside una dimensión de MDI.
Es el nombre de un campo dimensional del MDI.
Es el número de valores distintos en la dimensión. Al crearse el MDI el valor real de la dimensión queda convertido en un número entero, con una longitud de 1, 2 o 4 bytes, que se almacena en la hoja del índice.
Es la especificación completamente cualificada del archivo MDI físico. Si el MDI está dividido, se trata de la especificación de una división del MDI. Un MDI puede tener hasta 250 declaraciones de MDIDATA (divisiones). Un archivo de acceso puede tener un número ilimitado de MDIs.
Define una jerarquía de dimensiones. Esta dimensión está definida dentro de dimname la dimensión. Por ejemplo, CITY WITHIN STATE.
VIDEOTR2 es un origen de datos de FOCUS dividido de forma inteligente. El archivo máster tiene un atributo ACCESS=VIDEOTR2:
FILENAME=VIDEOTR2, SUFFIX=FOC, ACCESS=VIDEOTR2 SEGNAME=CUST, SEGTYPE=S1 FIELDNAME=CUSTID, ALIAS=CIN, FORMAT=A4, $ FIELDNAME=LASTNAME, ALIAS=LN, FORMAT=A15, $ FIELDNAME=FIRSTNAME, ALIAS=FN, FORMAT=A10, $ FIELDNAME=EXPDATE, ALIAS=EXDAT, FORMAT=YMD, $ FIELDNAME=PHONE, ALIAS=TEL, FORMAT=A10, $ FIELDNAME=STREET, ALIAS=STR, FORMAT=A20, $ FIELDNAME=CITY, ALIAS=CITY, FORMAT=A20, $ FIELDNAME=STATE, ALIAS=PROV, FORMAT=A4, $ FIELDNAME=ZIP, ALIAS=POSTAL_CODE, FORMAT=A9, $ FIELDNAME=EMAIL, ALIAS=EMAIL, FORMAT=A18, $ SEGNAME=TRANSDAT, SEGTYPE=SH1, PARENT=CUST FIELDNAME=TRANSDATE, ALIAS=OUTDATE, FORMAT=HYYMDI, MISSING=ON, $ SEGNAME=SALES, SEGTYPE=S2, PARENT=TRANSDAT FIELDNAME=TRANSCODE, ALIAS=TCOD, FORMAT=I3, $ FIELDNAME=QUANTITY, ALIAS=NO, FORMAT=I3S, $ FIELDNAME=TRANSTOT, ALIAS=TTOT, FORMAT=F7.2S, $ SEGNAME=RENTALS, SEGTYPE=S2, PARENT=TRANSDAT FIELDNAME=MOVIECODE, ALIAS=MCOD, FORMAT=A6, INDEX=I, $ FIELDNAME=COPY, ALIAS=COPY, FORMAT=I2, $ FIELDNAME=RETURNDATE, ALIAS=INDATE, FORMAT=YMD, $ FIELDNAME=FEE, ALIAS=FEE, FORMAT=F5.2S, $ DEFINE DATE/I4 = HPART(TRANSDATE, 'YEAR', 'I4');
El siguiente ejemplo muestra el archivo de acceso, llamado VIDEOTR2, en z/OS:
MASTER=VIDEOTR2 ,$ DATA=USER1.VIDPART1.FOCUS, WHERE=DATE EQ 1991;,$ DATA=USER1.VIDPART2.FOCUS, WHERE=DATE FROM 1996 TO 1998; ,$ DATA=USER1.VIDPART3.FOCUS, WHERE=DATE FROM 1999 TO 2000;,$
El siguiente ejemplo muestra el archivo de acceso, llamado VIDEOTR2, en UNIX:
MASTER=VIDEOTR2 ,$ DATA=/user1/vidpart1.foc, WHERE=DATE EQ 1991;,$ DATA=/user1/vidpart2.foc, WHERE=DATE FROM 1996 TO 1998; ,$ DATA=/user1/vidpart3.foc, WHERE=DATE FROM 1999 TO 2000;,$
El siguiente ejemplo muestra el archivo de acceso, llamado VIDEOTR2, en Windows:
MASTER=VIDEOTR2 ,$ DATA=c:\user1\vidpart1.foc, WHERE=DATE EQ 1991;,$ DATA=c:\user1\vidpart2.foc, WHERE=DATE FROM 1996 TO 1998; ,$ DATA=c:\user1\vidpart3.foc, WHERE=DATE FROM 1999 TO 2000;,$
WebFOCUS |