Peek — funkcja skryptu
Funkcja Peek() wyszukuje wartość pola w tabeli z 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: dual
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_no 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:
Dodaj skrypt przykładowy do aplikacji i uruchom ją. Następnie dodaj do arkusza w swojej aplikacji 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_name funkcja odwołuje się do bieżącej tabeli (w tym przypadku — wewnętrznej). Wynikiem Peek('EmployeeCode',-2) jest kilka wartości:
Kod pracownika | EmpCode |
---|---|
101 |
- |
102 | - |
103 | 101 |
104 | 102 |
105 | 103 |
106 | 104 |
Przykład:
FirstEmployee:
Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode
Resident EmployeeDates;
By specifying the argument table_name as 'EmployeeDates', the function returns the second-to-last value of EmployeeCode in the table EmployeeDates: 105.
Przykład:
Funkcja Peek() może być używana w celu utworzenia odniesienia do danych, które nie zostały jeszcze załadowane.
Dodaj skrypt przykładowy do aplikacji i uruchom ją. Następnie dodaj do arkusza w swojej aplikacji 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;
Create a table in a sheet in your app with ID, List, and Value as the dimensions.
Identyfikator | Lista | Wartość |
---|---|---|
1 | 3,4 | 4 |
1 | 3,4,6 | 6 |
1 | 3 | 3 |
2 | 1,11 | 11 |
2 | 1 | 1 |
3 | 7,8 | 8 |
3 | 7 | 7 |
5 | 2,78 | 78 |
5 | 2,78,13 | 13 |
5 | 2 | 2 |
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.
Wartość instrukcji jest wyznaczana w następujący sposób:
Jeśli bieżąca wartość ID jest taka sama jak poprzednia wartość ID, należy zapisać wartość Peek('List') 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.
Przykład:
LOAD A, B, numsum( B, Peek( 'Bsum' ) ) as Bsum...;
Tworzy akumulację B w Bsum.