Перейти к основному содержимому
Peek — функция скрипта

НА ЭТОЙ СТРАНИЦЕ

Peek — функция скрипта

Функция Peek() находит значение поля в таблице для строки, которая уже загружена или существует во встроенной памяти. Можно указать номер строки или таблицу.

Syntax:  

Peek(

field_name

[, row_no[, table_name ] ])

Return data type: двойное значение

Arguments:  

Аргументы
Аргумент Описание
field_name Имя поля, для которого требуется возвращаемое значение.Вводимое значение необходимо задать в виде строки (например литералы ссылочного типа).
row_no

Необходима строка в таблице, которая указывает поле. Может быть выражением, но оно должно определяться по целому числу. 0 обозначает первую запись, 1 обозначает вторую и т. д. Отрицательные числа указывают порядок с конца таблицы. -1 обозначает последнюю прочитанную запись.

Если элемент row не задан, используется -1.

table_name Метка таблицы без двоеточия на конце. Если элемент table_name не указан, принимается текущая таблица. При использовании вне оператора LOAD или относительно другой таблицы должен быть включен элемент table_name.

Limitations:  

В первой записи внутренней таблицы функция возвращает значение NULL.

Example:  

Добавьте образец скрипта в свое приложение и запустите. Затем добавьте на лист приложения как минимум поля, указанные в столбце с результатами, чтобы увидеть результаты.

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, поскольку Peek('EmployeeCode',0) возвращает первое значение элемента EmployeeCode в таблице EmployeeDates.

Замена значения аргумента row_no возвращает значения других строк в таблице следующим образом:

Peek('EmployeeCode',2) возвращает третье значение в таблице: 103.

Тем не менее, обратите внимание, что без указания таблицы в качестве третьего аргумента table_no функция ссылается на текущую (в данном случае внутреннюю) таблицу. Результатом Peek('EmployeeCode',-2) будет множество значений:

Результирующая таблица
Код сотрудника 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_no as 'EmployeeDates', the function returns the second-to-last value of EmployeeCode in the table EmployeeDates: 105.

Example:  

Функцию Peek() можно использовать для указания ссылки на данные, которые еще не загружены.

Добавьте образец скрипта в свое приложение и запустите. Затем добавьте на лист приложения как минимум поля, указанные в столбце с результатами, чтобы увидеть результаты.

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.

Результирующая таблица
ID Список Значение
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

Оператор IF() строится на основе временной таблицы T1.
Peek('ID') ссылается на поле ID в предыдущей строке в текущей таблице T2.
Peek('List') ссылается на поле List в предыдущей строке в таблице T2, которая строится в настоящее время как оценивающееся выражение.

Оператор оценивается следующим образом:
если текущее значение элемента ID такое же, как предыдущее значение элемента ID, то значение элемента Peek('List') записывается как объединенное с текущим значением элемента Value. В противном случае записывается только текущее значение элемента Value.

Если функция Peek('List') уже содержит объединенный результат, новый результат элемента Peek('List') будет объединен с ним.

Примечание об информацииОбратите внимание на предложение Order by. Оно указывает порядок организации таблицы (по ID по возрастанию). Без этого функция Peek() будет использовать тот обязательный порядок, который указан во внутренней таблице, что может привести к непредсказуемым результатам.

Example:  

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

Создает общее значение B в Bsum.