Zu Hauptinhalt springen Zu ergänzendem Inhalt springen

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 ] ] )

Rückgabe Datentyp: dual

Argumente:  

Peek-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 steht für den letzten geladenen 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 eines LOAD-Befehls verwendet oder bezieht sie sich auf eine andere Tabelle, musstable_name explizit angegeben werden.

Beschränkungen:  

Im ersten Datensatz einer internen Tabelle liefert diese Funktion NULL.

Beispiel 1:  

Fügen Sie Ihrem Dokument das Beispielskript hinzu und führen Sie sie aus. Fügen Sie einem Arbeitsblatt in Ihrem Dokument 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:

Beispiel 1 – Ergebnisse
EmployeeCode EmpCode
101 -
102 -
103 101
104 102
105 103
106 104

Beispiel 2:  

FirstEmployee:

Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode

Resident EmployeeDates;

 

Durch die Angabe des Arguments table_no als 'EmployeeDates' liefert die Funktion den vorletzten Wert von EmployeeCode in der Tabelle EmployeeDates: 105.

Beispiel 3:  

Die Funktion Peek() kann zum Referenzieren von Daten verwendet werden, die noch nicht geladen wurden.

Fügen Sie Ihrem Dokument das Beispielskript hinzu und führen Sie sie aus. Fügen Sie einem Arbeitsblatt in Ihrem Dokument 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;

 

Erstellt eine Tabelle in einem Arbeitsblatt in Ihrem Dokument mit ID, List und Wert als Dimensionen.

Beispiel 3 – Ergebnisse
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

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 wird wie folgt überprüft:
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.

Hat diese Seite Ihnen geholfen?

Wenn Sie Probleme mit dieser Seite oder ihren Inhalten feststellen – einen Tippfehler, einen fehlenden Schritt oder einen technischen Fehler –, teilen Sie uns bitte mit, wie wir uns verbessern können!

Nehmen Sie am Analyse-Modernisierungsprogramm teil

Remove banner from view

Modernisieren Sie mit dem Analyse-Modernisierungsprogramm, ohne Ihre wertvollen QlikView-Apps zu gefährden. Klicken Sie hier für weitere Informationen oder kontaktieren Sie uns: ampquestions@qlik.com