Przeskocz do zawartości głównej

Peek — funkcja skryptu

NA TEJ STRONIE

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.

Syntax:  

Peek(

field_name

[, row_no[, table_name ] ])

Return data type: dual

Arguments:  

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.

Limitations:  

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

Example:  

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:

Tabela wynikowa
Kod pracownika 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_name as 'EmployeeDates', the function returns the second-to-last value of EmployeeCode in the table EmployeeDates: 105.

Example:  

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.

Tabela wynikowa
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.

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

Example:  

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

Tworzy akumulację B w Bsum.