Vai al contenuto principale

Peek - funzione di script

IN QUESTA PAGINA

Peek - funzione di script

Peek() individua il valore di un campo in una tabella per una riga che è già stata caricata o che esiste nella memoria interna. È possibile specificare il numero di riga così come la tabella.

Syntax:  

Peek(

field_name

[, row_no[, table_name ] ])

Return data type: duale

Arguments:  

Argomenti
Argomento Descrizione
field_name Nome del campo per cui è richiesto il valore restituito.Il valore di input deve essere specificato come stringa (ad esempio, un valore letterale tra virgolette).
row_no

La riga nella tabella che specifica il campo richiesto. Può essere un'espressione, tuttavia deve restituire un numero intero. 0 indica il primo record, 1 indica il secondo e così via. I numeri negativi indicano l'ordine dalla fine della tabella. -1 indica l'ultimo record letto.

Se non viene dichiarato alcun valore row verrà utilizzato il valore -1.

table_name Un'etichetta di tabella senza due punti finali. Se non è dichiarato table_name, viene utilizzata la tabella attuale. Se utilizzato al di fuori dell'istruzione LOAD o se fa riferimento a un'altra tabella, è necessario includere table_name.

Limitations:  

Nel primo record di una tabella interna, la funzione restituisce NULL.

Example:  

Aggiungere lo script di esempio all'app ed eseguirlo. Aggiungere quindi a un foglio nell'app almeno i campi elencati nella colonna dei risultati per visualizzare il risultato.

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, poiché Peek('EmployeeCode',0) restituisce il primo valore di EmployeeCode nella tabella EmployeeDates.

La sostituzione del valore dell'argomento row_no restituisce i valori delle altre righe nella tabella, nel modo seguente:

Peek('EmployeeCode',2) restituisce il terzo valore nella tabella: 103.

Tuttavia, tenere presente che se non si specifica la tabella come il terzo argomento table_no, la funzione farà riferimento alla tabella attuale (in questo caso, interna). Peek('EmployeeCode',-2) restituisce valori multipli:

Tabella risultante
Codice dipendente 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_no as 'EmployeeDates', the function returns the second-to-last value of EmployeeCode in the table EmployeeDates: 105.

Example:  

La funzione Peek() può essere utilizzata per fare riferimento ai dati che non sono stati ancora caricati.

Aggiungere lo script di esempio all'app ed eseguirlo. Aggiungere quindi a un foglio nell'app almeno i campi elencati nella colonna dei risultati per visualizzare il risultato.

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.

Tabella risultante
ID Elenco Valore
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

L'istruzione IF() viene creata a partire dalla tabella temporanea T1.
Peek('ID') fa riferimento al campo ID nella riga precedente nella tabella corrente T2.
Peek('List') fa riferimento al campo List nella riga precedente nella tabella T2, attualmente in fase di creazione mentre l'espressione viene valutata.

L'istruzione viene valutata nel seguente modo:
Se il valore attuale di ID è identico al valore precedente di ID, scrivere il valore di Peek('List') concatenandolo con il valore corrente di Value. In alternativa, scrivere solo il valore attuale di Value.

Se Peek('List') contiene già un risultato concatenato, il nuovo risultato di Peek('List') verrà concatenato a tale risultato.

Nota: Prendere nota della clausola Order by. Questa clausola specifica il metodo di ordinamento della tabella (in base all'ID in ordine crescente). Senza questa clausola, la funzione Peek() utilizzerebbe qualsiasi ordinamento arbitrario presente nella tabella interna, portando a risultati potenzialmente imprevedibili.

Example:  

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

Crea un accumulo di B in Bsum.