Gå till huvudinnehåll
Peek - skriptfunktion

PÅ DEN HÄR SIDAN

Peek - skriptfunktion

Peek() hittar värdet av ett fält i en tabell för en rad som redan har laddats eller som finns i internminnet. Radnumret kan anges, liksom tabellen.

Syntax:  

Peek(

field_name

[, row_no[, table_name ] ])

Return data type: dual

Arguments:  

Argument
Argument Beskrivning
field_name Namnet på det fält för vilket returvärdet krävs.Inmatat värde måste anges som en sträng (t ex en litteral inom citationstecken).
row_no

Den rad i tabellen som anger det fält som krävs. Kan vara ett uttryck, men måste lösas till ett heltal. 0 anger första posten, 1 andra posten o.s.v. Negativa tal markerar ordningen från slutet av tabellen. -1 anger den senaste lästa posten.

Om ingen row angivits, antas -1.

table_name En tabelletikett utan avslutande kolon. Om inget table_name har angetts antas den aktuella tabellen. Om det används utanför LOAD-satsen, eller refererar till en annan tabell, måste tabellnamnet table_name anges.

Limitations:  

För den första posten i en intern tabell kommer funktionen att returnera NULL.

Example:  

Lägg till exempelskriptet i appen och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen till ett ark i din app för att se resultatet.

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, eftersom Peek('EmployeeCode',0) returnerar det första värdet för EmployeeCode i tabellen EmployeeDates.

Att ersätta värdet på argumentet row_no returnerar värdena för andra rader i tabellen, enligt följande:

Peek('EmployeeCode',2) returnerar det tredje värdet i tabellen: 103.

Observera dock att utan att ange tabellen som det tredje argumentet table_no, refererar funktionen till den aktuella tabellen (i detta fall, internt). Resultatet för Peek('EmployeeCode',-2) är flera värden:

Resultattabell
Employee code 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:  

Funktionen Peek() kan användas för att hänvisa till data som inte har laddats än.

Lägg till exempelskriptet i appen och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen till ett ark i din app för att se resultatet.

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.

Resultattabell
ID Lista Värde
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

Satsen IF() byggs från den tillfälliga tabellen T1.
Peek('ID') hänvisar till fältet ID i föregående rad i aktuell tabell T2.
Peek('List') hänvisar till fältet List i föregående rad i tabellen T2, som byggs då uttrycket utvärderas.

Satsen utvärderas enligt följande:
Om det aktuella värdet för ID är samma som det tidigare värdet för ID, då ska värdet för Peek('List') skrivas sammanlänkat med det aktuella värdet för Value. Annars skriver du det aktuella värdet av Value endast.

Om Peek('List') redan innehåller ett sammanlänkat resultat, kommer det nya resultatet Peek('List') sammanlänkas till det.

Anteckning om informationObservera satsen Order by. Detta anger hur tabellen ordnas (genom ID i stigande ordning). Utan detta använder funktionen Peek() godtycklig ordning som den interna tabellen har, vilket kan leda till oförutsägbara resultat.

Example:  

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

Skapar en ackumulering av B i Bsum