Przeskocz do zawartości głównej Przejdź do treści uzupełniającej

Peek — funkcja skryptu

Funkcja Peek() wyszukuje wartość pola w tabeli dotyczącą wiersza, który został załadowany lub który istnieje w pamięci wewnętrznej. Numer wiersza może być określony, podobnie jak tabela.

Składnia:  

Peek(field_name[, row_no[, table_name ] ] )

Typ zwracanych danych: podwójny

Argumenty:  

Argumenty Peek
Argument Opis
field_name Nazwa pola, dla którego wymagana jest wartość zwracana.Wartość wejściowa musi być podana jako ciąg znaków (np. jako literał w cudzysłowie).
row_no

Wiersz w tabeli określający wymagane pole. Może być wyrażeniem, ale musi dawać w wyniku liczbę całkowitą. 0 oznacza pierwszy rekord, 1 drugi rekord itd. Liczby ujemne określają kolejność od końca tabeli. –1 oznacza ostatni wczytany rekord.

Jeśli argument row nie zostanie podany, przyjmowana jest wartość –1.

table_name Etykieta tabeli bez końcowego dwukropka. Jeśli argument table_name nie zostanie podany, przyjmowana jest bieżąca tabela. Wartość table_name musi być podana w przypadku użycia poza instrukcją LOAD lub odnoszenia się do innej tabeli.

Ograniczenia:  

W przypadku pierwszego rekordu tabeli wewnętrznej funkcja zwraca wartość NULL.

Przykład 1:  

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

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, ponieważ Peek(EmployeeCode,0) zwraca pierwszą wartość EmployeeCode w tabeli EmployeeDates.

Podstawienie wartości argumentu row_no zwraca wartości innych wierszy w tabeli w następujący sposób:

Peek('EmployeeCode',2) zwraca trzecią wartość w tabeli: 103.

Należy jednak pamiętać, że bez określenia tabeli jako trzeciego argumentu table_no funkcja odwołuje się do bieżącej tabeli (w tym przypadku — wewnętrznej). Wynikiem Peek(EmployeeCode,-2) jest kilka wartości:

Wyniki przykładu 1
EmployeeCode EmpCode
101 -
102 -
103 101
104 102
105 103
106 104

Przykład 2:  

FirstEmployee:

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

Resident EmployeeDates;

 

Określając argument table_no jako 'EmployeeDates', funkcja zwraca przedostatnią wartość EmployeeCode w tabeli EmployeeDates: 105.

Przykład 3:  

Funkcja Peek() może służyć do odwoływania się do danych, które nie zostały jeszcze załadowane.

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

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;

 

Utwórz tabelę w arkuszu w dokumencie z parametrami ID, List i Value jako wymiarami.

Wyniki przykładu 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

Instrukcja IF() jest tworzona z tabeli tymczasowej T1.
Peek('ID') odwołuje się do pola ID w poprzednim wierszu w bieżącej tabeli T2.
Peek('List') odwołuje się do pola List w poprzednim wierszu w tabeli T2, która obecnie jest tworzona podczas oceny wyrażenia.

Instrukcja jest oceniana w następujący sposób:
Jeśli bieżąca wartość ID jest taka sama, jak poprzednia wartość ID, wówczas wartość Peek('List') należy zapisać skonkatenowaną z bieżącą wartością Value. W przeciwnym wypadku należy zapisać tylko bieżącą wartość Value.

Jeśli funkcja Peek('List') już zawiera skonkatenowany wynik, nowy wynik Peek('List)' będzie z nim skonkatenowany.

InformacjaWarto zwrócić uwagę na klauzulę Order by. Określa ona sposób porządkowania tabeli (rosnąco według ID). Bez niej funkcja Peek() użyje dowolnego porządkowania zawartego w tabeli wewnętrznej, co może prowadzić do nieprzewidywalnych wyników.

Czy ta strona była pomocna?

Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!

Dołącz do Programu Modernizacji Analityki

Remove banner from view

Przeprowadź modernizację bez szkody dla Twoich cennych aplikacji QlikView za pomocą programu Analytics Modernization Program. Kliknij tutaj aby uzyskać więcej informacji lub skontaktuj się z nami: ampquestions@qlik.com