# Peek - função de script

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

Sintaxe:

Peek(field\_name[, row\_no[, table\_name ] ] )

Tipo de dados de retorno: dual

Argumentos:

Argumentos Peek

| 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.<br><br>Se nenhuma row 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. |

Limitações:

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

Exemplo 1:

Adicione o script de exemplo ao seu documento e execute-o. Em seguida, adicione pelo menos os campos listados na coluna de resultados a um documento 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:

Resultados do exemplo 1

| EmployeeCode | EmpCode |
| --- | --- |
| 101 | - |
| 102 | - |
| 103 | 101 |
| 104 | 102 |
| 105 | 103 |
| 106 | 104 |

Exemplo 2:

`FirstEmployee:` `Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode` `Resident EmployeeDates;` ` `

Ao especificar table\_no do argumento como `'EmployeeDates'`, a função retorna o segundo ao último valor de EmployeeCode na tabela EmployeeDates: 105.

Exemplo 3:

A função Peek() pode ser usada para fazer referência a dados que ainda não foram carregados.

Adicione o script de exemplo ao seu documento e execute-o. Em seguida, adicione pelo menos os campos listados na coluna de resultados a um documento 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 documento com ID, List e Valor como dimensões.

Resultados do exemplo 3

| 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')` faz referência ao campo ID na linha anterior da tabela atual T2.  
`Peek('List')` faz referência ao campo List na linha anterior da tabela T2, que está sendo construída à medida que a expressão é avaliada.

O comando é avaliado conforme a seguir  
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. Caso contrário, 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 informativaObserve 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.

## Saiba mais

* [Rótulos da tabela](https://help.qlik.com/pt-BR/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/table-labels.htm)
* [Previous - função de script](https://help.qlik.com/pt-BR/qlikview/May2024/Subsystems/Client/Content/QV_QlikView/Scripting/InterRecordFunctions/Previous.htm)