Adicione o script de exemplo ao seu aplicativo e execute-o. Em seguida, adicione pelo menos os campos listados na coluna de resultados a uma pasta para ver o 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, pois Peek('EmployeeCode',0) retorna o primeiro valor de EmployeeCode na tabela EmployeeDates.
Substituindo o valor do argumento, row_no retorna os valores de outras linhas na tabela, conforme a seguir:
Peek('EmployeeCode',2) retorna o terceiro valor na tabela: 103.
No entanto, observe que sem especificar a tabela como table_no do terceiro argumento, a função referencia a tabela atual (neste caso, interna). O resultado de Peek('EmployeeCode',-2) são valores múltiplos:
|
EmployeeCode 101 102 103 104 105 106
|
EmpCode - - 101 102 103 104
|
|
|
FirstEmployee:
Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode
Resident EmployeeDates;
|
Ao especificar o argumento table_no como 'EmployeeDates', a função retorna o penúltimo valor de EmployeeCode na tabela EmployeeDates: 105. |
A função Peek() pode ser usada para dados de referência que ainda não foram carregados.
Adicione o script de exemplo ao seu aplicativo e execute-o. Em seguida, adicione pelo menos os campos listados na coluna de resultados a uma pasta para ver o 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;
|
Crie uma tabela em uma pasta no seu aplicativo com ID, List e Valor como dimensões. |
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 |
O comando IF() é formado a partir da tabela temporária T1. Peek('ID') referencia o campo ID na linha anterior da tabela atual T2. Peek('List') referencia o campo List na linha prévia da tabela T2, atualmente sendo criada enquanto a expressão é avaliada.
A instrução é avaliada da seguinte maneira: Se o valor atual de ID for o mesmo que o valor anterior de ID, escreva o valor de Peek('List') concatenado com o valor atual de Value. Senão, escreva somente o valor atual de Value.
Se Peek('List') já contém um resultado relacionado, o novo resultado de Peek('List') será relacionado a ele.
Nota: Observe a cláusula Order by. Ela especifica como a tabela é organizada (por ID em ordem crescente). Sem ela, a função Peek() usará qualquer ordenação arbitrária que a tabela interna possua, que pode acarretar em resultados imprevisíveis.
|
|