Zu Hauptinhalt springen
Peek - Skriptfunktion

AUF DIESER SEITE

Peek - Skriptfunktion

Peek() liefert den Wert eines Feldes in einer Tabelle für eine Zeile, die bereits geladen wurde oder im internen Speicher vorhanden ist. Die Zeilennummer kann wie die Tabelle festgelegt werden.

Syntax:  

Peek(

field_name

[, row_no[, table_name ] ])

Return data type: dual

Arguments:  

Argumente
Argument Beschreibung
field_name Name für das Feld, für das der Rückgabewert erforderlich ist.Eingabewert muss als String angegeben werden (zum Beispiel in einfachen Anführungszeichen).
row_no

Die Zeile in der Tabelle, die das erforderliche Feld enthält. Kann eine Formel sein, die aber eine ganze Zahl ergeben muss. 0 steht für den ersten Datensatz, 1 für den zweiten usw. Mithilfe von negativen Zahlen können die Datensätze vom unteren Ende der Tabelle aus gezählt werden. -1 bezeichnet den letzten gelesenen Datensatz.

Fehlt row, wird -1 angenommen.

table_name Ein Tabellenname ohne abschließenden Doppelpunkt. Fehlt table_name, wird die aktuelle Tabelle verwendet. Wird die Funktion außerhalb des LOAD-Befehls verwendet oder bezieht sie sich auf eine andere Tabelle, muss table_nameexplizit angegeben werden.

Limitations:  

Im ersten Datensatz einer internen Tabelle liefert diese Funktion NULL.

Example:  

Fügen Sie Ihrer App ein Beispielskript hinzu und führen Sie dieses aus. Fügen Sie einem Arbeitsblatt in Ihrer App dann mindestens diejenigen Felder hinzu, die in der Ergebnisspalte aufgeführt sind, um das Ergebnis anzuzeigen.

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, weil Peek('EmployeeCode',0) den ersten Wert von EmployeeCode in der Tabelle EmployeeDates liefert.

Durch den Ersatz des Werts des Arguments row_no werden die Werte von anderen Zeilen in der Tabelle wie nachfolgend beschrieben ausgegeben:

Peek('EmployeeCode',2) liefert den dritten Wert in der Tabelle: 103.

Beachten Sie jedoch, dass ohne Festlegen der Tabelle als drittes Argument table_no die Funktion sich auf die aktuelle (in diesem Fall die interne) Tabelle bezieht. Peek('EmployeeCode',-2) ergibt mehrere Werte:

Ergebnistabelle
Mitarbeitercode 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:  

Die Funktion Peek() kann zum Verweisen auf noch nicht geladene Daten verwendet werden.

Fügen Sie Ihrer App ein Beispielskript hinzu und führen Sie dieses aus. Fügen Sie einem Arbeitsblatt in Ihrer App dann mindestens diejenigen Felder hinzu, die in der Ergebnisspalte aufgeführt sind, um das Ergebnis anzuzeigen.

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.

Ergebnistabelle
ID Liste Wert
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

Der Befehl IF() wird über die temporäre Tabelle T1 ausgeführt.
Peek('ID') bezieht sich auf das Feld ID in der vorhergehenden Zeile in der aktuellen Tabelle T2.
Peek('List') bezieht sich auf das Feld List in der vorhergehenden Zeile in der Tabelle T2, die derzeit erstellt wird, während die Formel überprüft wird.

Der Befehl liefert folgendes Ergebnis:
Wenn der aktuelle Wert von ID mit dem vorhergehenden Wert von ID übereinstimmt, wird der Wert von Peek('List') mit dem aktuellen Wert von Value zusammengefasst. Ansonsten wird nur der aktuelle Wert von Value geschrieben.

Enthält Peek('List') bereits ein zusammengefasstes Ergebnis, wird das neue Ergebnis von Peek('List') damit zusammengefasst.

InformationshinweisBeachten Sie die Bedingung Order by. Diese gibt an, wie die Tabelle sortiert wird (nach ID in aufsteigender Reihenfolge). Ohne diese Bedingung nutzt die Funktion Peek() die beliebige Sortierung der internen Tabelle, was zu unvorhersehbaren Ergebnissen führen kann.

Example:  

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

Erstellt eine Kumulierung von B in Bsum.