Saltar al contenido principal
Peek - función de script

EN ESTA PÁGINA

Peek - función de script

Peek() devuelve el valor de un campo en una tabla para una fila que ya se ha cargado o que existe en la memoria interna. El número de fila se puede especificar, así como la tabla.

Sintaxis:  

Peek(

field_name

[, row_no[, table_name ] ])

Tipo de datos que devuelve: dual

Argumentos:  

Argumentos
Argumento Descripción
nombre_campo Nombre del campo para el que se requiere el valor devuelto. El valor de entrada debe suministrarse como una cadena (por ejemplo, literales entrecomillados).
row_no

La fila de la tabla que especifica el campo requerido. Puede ser una expresión, pero debe resolverse en un entero. 0 denota el primer registro, 1 el segundo, y así sucesivamente. Los números negativos indican el orden desde el final de la tabla. -1 denota el último registro leído.

Si no se especifica row_no, se presupone -1.

table_name Una etiqueta de tabla que no finaliza en dos puntos. Si no se especifica table_name, se presupone la tabla actual. Si se usa fuera de la sentencia LOAD o se refiere a otra tabla, debe incluirse table_name.

Limitaciones:  

En el primer registro de una tabla interna, la función devuelve NULL.

Ejemplo:  

Agregue el script de ejemplo en su app y ejecútelo. Luego, agregue los campos enumerados en la columna de resultados a una hoja de su app para ver el resultado.

EmployeeDates:

Load * Inline [

EmployeeCode|StartDate|EndDate

101|02/11/2010|23/06/2012

102|01/11/2011|30/11/2013

103|02/01/2012|

104|02/01/2012|31/03/2012

105|01/04/2012|31/01/2013

106|02/11/2013|

] (delimiter is '|');

 

FirstEmployee:

Load EmployeeCode, Peek('EmployeeCode',0) As EmpCode

Resident EmployeeDates;

 

EmpCode = 101, porque Peek('EmployeeCode',0) devuelve el primer valor de EmployeeCode en la tabla EmployeeDates.

Al sustituir el valor del argumento row_no, devuelve los valores de otras filas de la tabla, del siguiente modo:

Peek('EmployeeCode',2) devuelve el tercer valor de la tabla: 103.

No obstante, tenga en cuenta que sin especificar la tabla como tercer argumento table_name, la función hace referencia a la tabla actual (en este caso, interna). El resultado de Peek('EmployeeCode',-2) son múltiples valores:

Tabla resultante
Código de empleado CodEmp

101

-
102 -
103 101
104 102
105 103
106 104

Ejemplo:  

FirstEmployee:

Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode

Resident EmployeeDates;

 

By specifying the argument table_name as 'EmployeeDates', the function returns the second-to-last value of EmployeeCode in the table EmployeeDates: 105.

Ejemplo:  

La función Peek() se puede utilizar para hace referencia a datos que aún no se han cargado.

Agregue el script de ejemplo en su app y ejecútelo. Luego, agregue los campos enumerados en la columna de resultados a una hoja de su app para ver el resultado.

T1:

LOAD * inline [

ID|Value

1|3

1|4

1|6

3|7

3|8

2|1

2|11

5|2

5|78

5|13

] (delimiter is '|');

T2:

LOAD

*,

IF(ID=Peek('ID'), Peek('List')&','&Value,Value) AS List

RESIDENT T1

ORDER BY ID ASC;

DROP TABLE T1;

 

Create a table in a sheet in your app with ID, List, and Value as the dimensions.

Tabla resultante
ID Lista Valor
1 3,4 4
1 3,4,6 6
1 3 3
2 1,11 11
2 1 1
3 7,8 8
3 7 7
5 2,78 78
5 2,78,13 13
5 2 2

La sentencia IF() se crea desde la tabla temporal T1.
Peek('ID') hace referencia al campo ID en la fila anterior en la tabla actual T2.
Peek('List') hace referencia al campo List en la fila anterior de la tabla T2, que se está construyendo a medida que se evalúa la expresión.

La sentencia se evalúa de la siguiente manera:
Si el valor actual de ID es el mismo que el valor anterior de ID, entonces escriba el valor de Peek('List') concatenado con el valor actual de Value. Si no, escriba el valor actual de Value solo.

Si Peek('List') ya contiene un resultado concatenado, el nuevo resultado de Peek('List') se le concatenará.

Nota informativaObserve la cláusula Order by. Esto especifica cómo se ordena la tabla (por ID en orden ascendente). Sin esto, la función Peek() utilizará cualquier orden arbitrario que tenga la tabla interna, lo que puede llevar a resultados impredecibles.

Ejemplo:  

LOAD A, B, numsum( B, Peek( 'Bsum' ) ) as Bsum...;

Crea una acumulación de B en Bsum.