跳到主要內容

SubField - 指令碼與圖表函數

Subfield() 用於從上層字串欄位中擷取子字串元件,其中原始記錄欄位包含兩個或多個由分隔符號分隔的部分。

可以使用 Subfield() 函數,例如,為了從包含完整名稱的記錄清單中擷取名字和暱稱、路徑名稱的元件部分,或者從逗點分隔的表格中擷取資料。

如果您在 LOAD 陳述式中使用 Subfield() 函數,並且省略選用 field_no 參數,將針對每一個子字串產生一筆完整記錄。如果使用 Subfield() 載入數個欄位,則會建立所有組合的 Cartesian 產品。

語法:  

SubField(text, delimiter[, field_no ])

傳回的資料類型: 字串

引數:  

SubField 引數
引數 描述
text 原始字串。這可以是硬式編碼文字、變數、貨幣符號展開或其他運算式。
delimiter 輸入 text 內將字串分為元件部分的字元。
field_no

選用第三引數是一個整數,指定要傳回上層字串 text 中的哪個子字串。

  • field_no 為正值,會由左至右擷取子字串。
  • field_no 為負值,會由右至左擷取子字串。
提示備註可以使用 SubField(),來取代函數的複雜組合 (例如 Len()Right()Left()Mid() 及其他字串函數)。

範例與結果:  

範例 1-3
範例 結果
SubField('abc;cde;efg', ';', 2) 傳回 'cde'
SubField('', ';', 1) 傳回 NULL
SubField(';', ';', 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;

範例 4
Name FirstName Surname
Dave Owen Dave Owen
Joe Tem Joe Tem

假設您有一個保留路徑名稱 vMyPath 的變數,

Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.

在文字 & 影像圖表中,您可以新增量值,例如:
SubField(vMyPath, '\',-3),這會產生「Qlik」,因為這是從變數 vMyPath 最右邊數來的第三個子字串。

此範例顯示如何從單個執行個體 Subfield() 中建立多列。

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

LOAD DISTINCT

Player,

SubField(Project,',') as Project;

 

Load * inline [

Player|Project

Neil|Music,OST

Jo|Music

Mike|Music,OST,Video

] (delimiter is '|');

範例 5
Player Project
Neil Music
Neil OST
Jo Music
Mike Music
Mike OST
Mike Video

此範例顯示如何使用 Subfield() 函數的多個執行個體,每個除去 field_no 參數,其中相同的 LOAD 陳述式建立所有組合的 Cartesian 產品。DISTINCT 選項用來避免建立重複記錄。

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

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 '|');

範例 6
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

此頁面是否對您有幫助?

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

加入分析現代化計畫

Remove banner from view

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