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:
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:
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.
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.