Cómo crear filas a partir de datos

En esta sección:

Cómo:

Una solicitud TABLE normal clasifica las filas de un informe de acuerdo con la frase BY que utilice. Los datos recuperados se clasifican en orden ascendente o descendente, según lo indique la solicitud. Las filas pueden limitarse a un subconjunto específico mediante una frase de filtrado, pero:

Por el contrario, la frase FML FOR crea una matriz en que puede estructurar su informe fila por fila. Esta organización le da mayor control de los datos que se incorporan en un informe y de su presentación. Puede:


Principio de página

x
Sintaxis: Cómo Recuperar valores de campo FOR desde un origen de datos

La sintaxis para especificar las filas es:

FOR fieldname [AS 'coltitle'] value [OR value OR...] [AS 'text'] 
[LABEL label] OVER
.
.
.
[value [OR value ...]] [AS 'text'] [LABEL label]
END

donde:

fieldname

Es el campo FOR del informe FML.

coltitle

Es el título de columna del campo FOR, en la salida del informe.

value

Es el valor (también conocido como valor de etiqueta) que describe los datos que se recuperan para esta fila en el informe.

AS 'text'

Le permite asignar un nombre a un valor de etiqueta para reemplazar dicho valor de etiqueta en la salida. El texto debe ir entre comillas simples.

label

Asigna una etiqueta a la fila para que sirva como referencia en una expresión RECAP. La etiqueta puede tener hasta 66 caracteres y no puede tener espacios en blanco o caracteres especiales. Cada etiqueta explícita que asigne debe ser única.

Aunque asigne una etiqueta explícita, la etiqueta posicional (R1, R2, etc.) se retiene de forma interna.

De forma predeterminada, un valor de etiqueta de un campo FOR (como 1010) sólo puede agregarse una vez a la matriz FML. Sin embargo, si desea agregar el mismo valor de un campo FOR a la matriz más de una vez, puede activar el parámetro FORMULTIPLE (OFF es la opción predeterminada). Para más información, consulte Cómo Usar el mismo valor de campo FOR en múltiples filas.

Para más información acerca de las funciones FMLFOR, FMLLIST y FMLINFO que devuelven los valores de etiqueta usados en una solicitud FML, consulte Cómo usar las funciones.



Ejemplo: Cómo crear filas a partir de valores en un origen de datos

Supongamos que tiene un origen de datos simples con datos financieros para cada cuenta corporativa, tal como se muestra a continuación:

CHART OF ACCOUNTS
 
ACCOUNT          DESCRIPTION
 
1010             CASH ON HAND
1020             DEMAND DEPOSITS
1030             TIME DEPOSITS
1100             ACCOUNTS RECEIVABLE
1200             INVENTORY
.                     .
.                     .
.                     .

Mediante la frase FOR en FML, puede emitir la siguiente solicitud TABLE, donde cada valor de ACCOUNT queda representado por una etiqueta (1010, 1020, etc.) y aparece como una fila independiente:

TABLE FILE LEDGER
SUM AMOUNT
FOR ACCOUNT
1010 OVER
1020 OVER
1030 OVER
1100 OVER
1200
END

La salida aparece en la imagen siguiente.

      AMOUNT
      ------
1010   8,784
1020   4,494
1030   7,961
1100  18,829
1200  27,307

Principio de página

x
Cómo crear filas a partir de múltiples registros

Cómo:

Existen varias maneras de combinar múltiples valores a partir de sus orígenes de datos en una fila de informe FML. Puede utilizar:

Por defecto, sólo se puede añadir un campo FOR a una línea individual de una matriz FML. Sin embargo, si desea añadir el mismo valor de datos a varias filas de la matriz FML, active el parámetro FORMULTIPLE. Por ejemplo, el mismo valor puede existir como valor solitario en una fila, pertenecer a un rango de otra fila o usarse en un cálculo de una tercera fila. Para más información, consulte Cómo Usar el mismo valor de campo FOR en múltiples filas.

Además de estos métodos, puede extraer múltiples etiquetas para una fila desde un archivo externo.



x
Sintaxis: Cómo Sumar valores en filas con la frase OR

Para sumar los valores de dos o más etiquetas en una sola fila de informe, use la frase OR en la frase FOR. La sintaxis es:

FOR fieldname 
value1 OR value2 [OR valuen...] [AS 'text'] [LABEL label] [OVER]
.
.
.

donde:

fieldname

Es un nombre de campo en el origen de datos.

value1, value2, valuen

Son los valores de etiqueta que se deben recuperar y sumar.

AS 'text'

Asigna un título a los valores de etiqueta combinados. El texto debe ir entre comillas simples (').

label

Asigna una etiqueta a la fila para que sirva como referencia en una expresión RECAP. La etiqueta puede tener hasta 66 caracteres y no puede tener espacios en blanco o caracteres especiales. Cada etiqueta explícita que asigne debe ser única.

Aunque asigne una etiqueta explícita, la etiqueta posicional (R1, R2, etc.) se retiene de forma interna.



Ejemplo: Cómo sumar valores en filas

El siguiente modelo suma los valores de tres etiquetas (1010, 1020, 1030) como CASH.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
1010 OR 1020 OR 1030  AS 'CASH'                   OVER 
1100                  AS 'ACCOUNTS RECEIVABLE'    OVER
1200                  AS 'INVENTORY'
END

La salida aparece en la imagen siguiente.

                     AMOUNT
                     ------
CASH                 21,239
ACCOUNTS RECEIVABLE  18,829
INVENTORY            27,307


x
Sintaxis: Cómo Identificar un intervalo de valores con la frase TO

Para sumar los valores de un rango de etiquetas en una sola fila de informe, use la frase TO en la frase FOR. La sintaxis es:

FOR fieldname 
value1 TO value2 [AS 'text'] [LABEL label] [OVER]

donde:

fieldname

Es un nombre de campo en el origen de datos.

value1

Es el valor de etiqueta situado en el límite inferior del rango.

TO

Es la frase obligatoria.

value2

Es el valor de etiqueta situado en el límite superior del rango.

AS 'text'

Asigna un título a los valores de etiqueta combinados. El texto debe ir entre comillas simples (').

label

Asigna una etiqueta a la fila para que sirva como referencia en una expresión RECAP. La etiqueta puede tener hasta 66 caracteres y no puede tener espacios en blanco o caracteres especiales. Cada etiqueta explícita que asigne debe ser única.

Aunque asigne una etiqueta explícita, la etiqueta posicional (R1, R2, etc.) se retiene de forma interna.



Ejemplo: Cómo identificar un rango de valores

Como las cuentas CASH del sistema LEDGER están identificadas mediante las etiquetas 1010, 1020 y 1030, puede especificar un rango entre 1010 y 1030:

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
1010 TO 1030 AS 'CASH' 
END


x
Sintaxis: Cómo Usar caracteres de enmascaramiento para recuperar valores de etiqueta

Si la etiqueta tiene un formato de carácter (alfanumérico), puede realizar una join por enmascaramiento. Use el signo de dólar ($) como máscara. Por ejemplo,

A$$D

coincide con cualquier valor de cuatro caracteres que empiece con A y termine con D. Los dos lugares intermedios pueden corresponder a cualquier carácter. Esto es útil para especificar un grupo completo de valores de etiqueta sin tener que identificar a cada uno.



Ejemplo: Cómo usar caracteres de enmascaramiento para coincidir con un grupo de etiquetas

En este ejemplo, las cantidades asociadas a todas las cuentas de cuatro caracteres que empiezan por 10, expresadas con una máscara como 10$$, se usan para producir la fila CASH del informe.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT 
10$$ AS 'CASH'                 OVER 
1100 AS 'ACCOUNTS RECEIVABLE'  OVER
1200 AS 'INVENTORY'
END

La salida aparece en la imagen siguiente.

                     AMOUNT
                     ------
CASH                 21,239
ACCOUNTS RECEIVABLE  18,829
INVENTORY            27,307


x
Sintaxis: Cómo Usar el mismo valor de campo FOR en múltiples filas

Puede utilizar el mismo valor de un campo FOR en muchas filas independientes (por separado, como parte de un intervalo o en un cálculo) incluyendo la siguiente sintaxis antes o dentro de una solicitud FML.

SET FORMULTIPLE={ON|OFF}

o

ON TABLE SET FORMULTIPLE {ON|OFF}

donde:

ON

Le permite mencionar el mismo valor de un campo FOR en más de una fila en la solicitud FML.

Con FORMULTIPLE en posición ON, un valor recuperado desde el origen de datos se incluye en cada línea en la salida de informe con la cual hace coincidir las referencias de etiquetas.

OFF

No le permite incluir el mismo valor en múltiples filas. OFF es el valor predeterminado.

Cuando FORMULTIPLE está desactivado, se evalúan múltiples etiquetas referenciadas de uno de estos modos, primero como referencia exacta o extremo de un rango, después, como máscara, y finalmente como parte de un rango. Por ejemplo, si se especifica un valor como referencia exacta y luego como parte de un rango, lo que se muestra es la referencia exacta. Tenga en cuenta que el resultado es impredecible cuando existe un valor que encaja en varias filas cuyas etiquetas tienen la misma prioridad (por ejemplo, una referencia exacta y el extremo de un rango).

Para más información, consulte Cómo generar informes dinámicos desde una jerarquía.



Ejemplo: Cómo hacer referencia al mismo valor en más de una fila

Esta solicitud recupera los valores de etiqueta para cuentas 1010, 1020 y 1030, y lista los valores correspondientes de forma individual. A continuación, agrega los mismo valores y muestra la suma como TOTAL CASH. De forma parecida, los valores de etiquetas de las cuentas 1100 y 1200 aparecen como elementos detallados y quedan resumidos como TOTAL NON-CASH ASSETS.

SET FORMULTIPLE=ON 
TABLE FILE LEDGER
SUM AMOUNT
FOR ACCOUNT 
1010 AS 'CASH ON HAND'                OVER 
1020 AS 'DEMAND DEPOSITS'             OVER 
1030 AS 'TIME DEPOSITS'               OVER
BAR                                   OVER 
1010 OR 1020 OR 1030 AS 'TOTAL CASH'  OVER 
" "                                   OVER 
1100 AS 'ACCOUNTS RECEIVABLE'         OVER 
1200 AS 'INVENTORY'                   OVER
BAR                                   OVER 
1100 TO 1200 AS 'TOTAL NON-CASH ASSETS'
END

La salida aparece en la imagen siguiente.

                       AMOUNT
                       ------
CASH ON HAND            8,784
DEMAND DEPOSITS         4,494
TIME DEPOSITS           7,961
                       ------
TOTAL CASH             21,239
                             
ACCOUNTS RECEIVABLE    18,829
INVENTORY              27,307
                       ------
TOTAL NON-CASH ASSETS  46,136


Ejemplo: Cómo usar etiquetas para archivos externos

En este ejemplo, los valores de una fila del informe FML proceden de un archivo externo llamado CASHSTUF, con las siguientes etiquetas.

1010
1020
1030

La siguiente solicitud TABLE usa los valores de etiqueta del archivo externo y suma los montos de las cuentas 1010, 1020 y 1030 en la fila CASH del informe FML.

TABLE FILE LEDGER
SUM AMOUNT FOR ACCOUNT
(CASHSTUF)  AS 'CASH'                 OVER
1100        AS 'ACCOUNTS RECEIVABLE'
END

Fíjese que el nombre del archivo debe estar entre paréntesis.


Principio de página

x
Cómo usar la frase BY en solicitudes FML

Sólo se permite una frase FOR en una solicitud TABLE. Sustituye en parte a la frase BY, que controla la secuencia de clasificación. Sin embargo, la solicitud también podría incluir hasta 32 frases BY. Por lo general, las frases BY especifican los campos de clasificación más importantes (exteriores) de un informe FML y la frase FOR especifica el campo de clasificación menos importantes (exterior). Tenga en cuenta que la frase BY ROWS OVER no se admiten en una solicitud que usa la frase FOR.


Principio de página

x
Cómo combinar frases BY y FOR en una solicitud FML

Es este ejemplo los resultados del informe para ACCOUNT (el campo de clasificación más interno) se clasifican por REGION (el campo de clasificación más externo).

DEFINE FILE REGION
CUR_YR=E_ACTUAL;
LAST_YR=.831*CUR_YR;
REGION/A4=IF E_ACTUAL NE 0 OR E_BUDGET NE 0 THEN 'EAST' ELSE 'WEST';
END
 
TABLE FILE REGION
HEADING CENTER
"CURRENT ASSETS FOR REGION <REGION"
" "
SUM CUR_YR LAST_YR 
BY REGION NOPRINT 
FOR ACCOUNT 
10$$ AS 'CASH'                      OVER
1100 AS 'ACCOUNTS RECEIVABLE'       OVER
1200 AS 'INVENTORY'                 OVER
BAR                                 OVER
RECAP CUR_ASSET/I5C = R1 + R2 + R3;
END

La salida aparece en la imagen siguiente.

          CURRENT ASSETS FOR REGION EAST           
                                                   
                             CUR_YR         LAST_YR
                             ------         -------
CASH                       9,511.00        7,903.64
ACCOUNTS RECEIVABLE               .               .
INVENTORY                         .               .
                     --------------  --------------
CUR_ASSET                     9,511           7,903

Se puede usar un valor de campo de clasificación en un comando RECAP para que el modelo realice diferentes acciones en cada salto de clasificación importante. Por ejemplo, el siguiente cálculo computa un valor que no es cero en la región EAST.

RECAP X=IF REGION EQ 'EAST' THEN .25*CASH ELSE 0; 
AS 'AVAILABLE FOR DIVIDENDS'

Para más información, consulte Cómo realizar cálculos entre filas.


WebFOCUS