Agregue el script de ejemplo en su app y ejecútelo. A continuación, agregue como mínimo los campos de la columna de resultados en 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: 102.
No obstante, tenga en cuenta que sin especificar la tabla como tercer argumento table_no, la función hace referencia a la tabla actual (en este caso, interna). El resultado de Peek('EmployeeCode',-2) son múltiples valores:
|
EmployeeCode 101 102 103 104 105 106
|
EmpCode - - 101 102 103 104
|
|
|
FirstEmployee:
Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode
Resident EmployeeDates;
|
Especificando el argumento table_no como 'EmployeeDates', la función devuelve el penúltimo valor de EmployeeCode en la tabla EmployeeDates: 105. |
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. A continuación, agregue como mínimo los campos de la columna de resultados en 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;
|
Cree una tabla en una hoja de su app con ID, List y Valor como dimensiones. |
ID |
List |
Value |
1 |
6 |
6 |
1 |
6,3 |
3 |
1 |
6,3,4 |
4 |
2 |
11 |
11 |
2 |
11,10 |
10 |
2 |
11,10,1 |
1 |
3 |
8 |
8 |
3 |
8,7 |
7 |
5 |
13 |
13 |
5 |
13,2 |
2 |
5 |
13,2,78 |
78 |
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: Observe 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.
|
|