Dodaj skrypt przykładowy do aplikacji i uruchom ją. Następnie dodaj do arkusza w swojej aplikacji 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 101 102 103 104 105 106
|
EmpCode - - 101 102 103 104
|
|
|
FirstEmployee:
Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode
Resident EmployeeDates;
|
Gdy argument table_no zostanie określony jako 'EmployeeDates', funkcja zwróci przedostatnią wartość EmployeeCode z tabeli EmployeeDates: 105. |
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 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 aplikacji 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.
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.
|
|