SubField - 指令碼與圖表函數在此頁面
SubField() 用來從上層字串欄位中擷取子字串元件,其中原始記錄欄位包含兩個或多個部分,以分隔符號分隔。
可以使用 Subfield() 函數,例如,為了從包含完整名稱的記錄清單中擷取名字和暱稱、路徑名稱的元件部分,或者從逗點分隔的表格中擷取資料。
如果您在 LOAD 陳述式中使用 Subfield() 函數,並且省略選用 field_no 參數,將針對每一個子字串產生一筆完整記錄。如果使用 Subfield() 載入數個欄位,則會建立所有組合的 Cartesian 產品。
語法:
SubField( text,
delimiter[, field_no ])
傳回的資料類型: 字串
引數:
引數
text
原始字串。這可以是硬式編碼文字、變數、貨幣符號展開或其他運算式。
delimiter
輸入 text 內將字串分為元件部分的字元。
field_no
選用第三引數是一個整數,指定要傳回上層字串 text 中的哪個子字串。使用值 1 可傳回第一個子字串,使用值 2 可傳回第二個子字串,以此類推。
若 field_no 為正值,會從左至右擷取子字串。
若 field_no 為負值,會從右至左擷取子字串。
提示備註 可以使用 SubField() ,來取代函數的複雜組合 (例如 Len() 、Right() 、Left() 、Mid() 及其他字串函數)。
範例:使用 SubField 的指令碼和圖表運算式
範例 - 指令碼和圖表運算式
基本範例
SubField(S, ';' ,2)
如果 S 為 'abc;cde;efg' ,則傳回 'cde' 。
SubField(S, ';' ,1)
如果 S 為空字串,則會傳回空字串 。
SubField(S, ';' ,1)
如果 S 為 ';' ,則傳回空字串。
假定您有一個包含路徑名稱 vMyPath ,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps; 。
在文字與影像圖表中,您可以新增量值,例如:SubField(vMyPath, '\',-3 ) ,這將產生 'Qlik ’,因為它是從變數 vMyPath 右端起的第三個子字串。
指令碼範例 1
載入指令碼
在資料載入編輯器中載入下列指令碼運算式和資料。
FullName:
LOAD * inline [
Name
'Dave Owen'
'Joe Tem'
];
SepNames:
Load Name,
SubField(Name, ' ',1) as FirstName,
SubField(Name, ' ',-1) as Surname
Resident FullName;
Drop Table FullName;
建立視覺化
在 Qlik Sense 工作表中建立具有 Name 、FirstName 和 SurName 作為維度的表格視覺化。
結果
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
解釋
SubField() 函數將 field_no 引數設定為 1,以擷取 Name 的第一個子字串。由於 field_no 的值為正值,擷取字串時會按照由左至右的順序。第二個函數呼叫將 field _no 引數設定為 -1,以擷取第二個子字串,這按照由右至左的順序擷取子字串。
指令碼範例 2
載入指令碼
在資料載入編輯器中載入下列指令碼運算式和資料。
LOAD DISTINCT
Instrument,
SubField(Player,',') as Player,
SubField(Project,',') as Project;
Load * inline [
Instrument|Player|Project
Guitar|Neil,Mike|Music,Video
Guitar|Neil|Music,OST
Synth|Neil,Jen|Music,Video,OST
Synth|Jo|Music
Guitar|Neil,Mike|Music,OST
] (delimiter is '|');
建立視覺化
在 Qlik Sense 工作表中建立具有 Instrument 、Player 和 Project 作為維度的表格視覺化。
結果
Instrument
Player
Project
Guitar
Mike
Music
Guitar
Mike
Video
Guitar
Mike
OST
Guitar
Neil
Music
Guitar
Neil
Video
Guitar
Neil
OST
Synth
Jen
Music
Synth
Jen
Video
Synth
Jen
OST
Synth
Jo
Music
Synth
Neil
Music
Synth
Neil
Video
Synth
Neil
OST
解釋
此範例展示如何從相同的 LOAD 陳述式中使用 Subfield() 函數的多個執行個體 (每個執行個體均忽略 field_no 參數) 建立所有組合的笛卡兒乘積。將使用 DISTINCT 選項,以免產生重複記錄。