Ir para conteúdo principal Pular para conteúdo complementar

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.

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.

Esta página ajudou?

Se você encontrar algum problema com esta página ou seu conteúdo - um erro de digitação, uma etapa ausente ou um erro técnico - informe-nos como podemos melhorar!

Participe do Programa de Modernização do Analytics

Remove banner from view

Modernize sem comprometer seus valiosos aplicativos QlikView com o Programa de Modernização do Analytics. Clique aqui para mais informações ou entre em contato: ampquestions@qlik.com