Ir para conteúdo principal

Peek - função de script

NESTA PÁGINA

Peek - função de script

Peek() retorna o valor de um campo em uma tabela para uma linha que já foi carregada ou que existe na memória interna. O número da linha pode ser especificado, assim como a tabela.

Syntax:  

Peek(

field_name

[, row_no[, table_name ] ])

Return data type: dual

Arguments:  

Argumentos
Argumento Descrição
field_name Nome do campo para o qual o valor de retorno é exigido. O valor de entrada deve ser fornecido como uma string (por exemplo, literais entre aspas).
row_no

A linha na tabela que especifica o campo obrigatório. Pode ser uma expressão, mas deve solucionar-se em um número inteiro. 0 indica o primeiro registro; 1, o segundo; e assim por diante. Números negativos indicam a ordem no final da tabela. -1 representa o último registro lido.

Se nenhuma row_no for definida, assume-se -1.

table_name Um rótulo de tabela sem os dois-pontos finais. Se nenhum table_namefor definido, a tabela atual será assumida. Se usado fora do comando LOAD ou em referência a outra tabela, o table_name deve ser incluído.

Limitations:  

No primeiro registro de uma tabela interna, a função retorna NULL.

Example:  

Adicione o script de exemplo ao seu aplicativo e execute-o. Em seguida, adicione 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_name do terceiro argumento, a função faz referência à tabela atual (neste caso, interna). O resultado de Peek('EmployeeCode',-2) são valores múltiplos:

Tabela resultante
Código do funcionário EmpCode

101

-
102 -
103 101
104 102
105 103
106 104

Example:  

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.

Example:  

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 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;

 

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

Tabela 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

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.

Example:  

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

Cria um acúmulo de B em Bsum.