跳到主要內容 跳至補充內容

Peek - 指令碼函數

Peek() 會針對已經載入的或存在於內部記憶體中的列,找出表格中的欄位值。列數跟表格數一樣可以指定。

語法:  

Peek(field_name[, row_no[, table_name ] ] )

傳回的資料類型: 雙值

引數:  

Peek 引數
引數 描述
field_name 傳回值需要的欄位名稱。輸入值必須指定為字串 (例如引號中的常值)。
row_no

指定所需欄位的表格中的列。可以是運算式,但是必須解析為整數。0 代表第一筆記錄,1 代表第二筆記錄,依此類推。負數表示從表格結尾算起的順序。-1 代表最後一筆記錄讀取。

如未指定 row,則會採用 -1。

table_name 沒有結束分號的表格標籤。如未指定 table_name,則會採用目前表格。若用於 LOAD 陳述式之外,或參考其他表格,則必須包括 table_name

限制:  

在內部表格的第一筆記錄中,此函數會傳回 NULL

範例 1:  

新增範例指令碼到您的文件中並加以執行。然後至少將結果資料行中所列的欄位新增至您文件中的工作表,以查看結果。

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) 傳回表格 EmployeeDatesEmployeeCode 的第一個值。

取代引數 row_no 的值會傳回表格中其他列的值,如下所示:

Peek('EmployeeCode',2) 傳回表格中的第三個值:103.

然而,請注意,如果未將表格指定為第三個引數 table_no,則函數會參考目前 (在此情況下,內部) 表格。 Peek(EmployeeCode,-2) 的結果是多個值:

範例 1 結果
EmployeeCode EmpCode
101 -
102 -
103 101
104 102
105 103
106 104

範例 2:  

FirstEmployee:

Load EmployeeCode, Peek('EmployeeCode',-2,'EmployeeDates') As EmpCode

Resident EmployeeDates;

 

透過將引數 table_no 指定為 'EmployeeDates',該函數會傳回表格 EmployeeDatesEmployeeCode 的第二個至最後一個值:105.

範例 3:  

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;

 

IDListValue 作為維度,在文件的工作表中建立一個表格。

範例 3 結果
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

IF() 陳述式從暫時表格 T1 建置。
Peek('ID') 會參考目前表格 T2 中先前列內的欄位 ID
Peek('List') 會參考表格 T2 中先前列內的欄位 List,目前建置為評估運算式。

評估陳述式,如下所示:
ID 的目前值與 ID 的先前值相同,則會寫入與 Value 的目前值串連的 Peek('List') 值。否則,僅撰寫 Value 的目前值。

如果 Peek('List') 已包含串連的結果,則 Peek('List)' 的新結果將串連至其中。

資訊備註請注意 Order by 子句。這會指定如何排序表格 (按照 ID 遞增順序)。沒有此項,Peek() 函數將使用內部表格具有的任意順序,這可能產生非預期的結果。

此頁面是否對您有幫助?

若您發現此頁面或其內容有任何問題——錯字、遺漏步驟或技術錯誤——請告知我們可以如何改善!

加入分析現代化計畫

Remove banner from view

透過分析現代化程式進行現代化而不犧牲寶貴的 QlikView 應用程式。 按一下這裡 取得更多資訊或聯繫: ampquestions@qlik.com