メイン コンテンツをスキップする

SubField - スクリプトおよびチャート関数

Subfield() は、元のレコード項目が区切り文字で区切られた複数の部分で構成されている文字列項目からサブストリング部分を抽出するために使用されます。

Subfield() 関数は、フルネームで構成されるレコードのリストからファースト ネームと姓、パス名のコンポーネント パーツを抽出したり、コンマ区切りのテーブルからデータを抽出したりするために使用できます。

LOAD ステートメントで、オプションの field_no パラメータを省略して、Subfield() 関数を使用する場合、サブストリングごとに完全な 1 つのレコードが生成されます。Subfield() を使用してを複数の項目がロードされる場合、すべての組み合わせのデカルト積が生成されます。

構文:  

SubField(text, delimiter[, field_no ])

戻り値データ型: 文字列

引数:  

SubField 引数
引数 説明
text 元の文字列。これは、ハードコードされたテキスト、変数、ドル記号展開、またはその他の数式となります。
delimiter 文字列をコンポーネント パーツに分割する入力 text 内の文字。
field_no

オプションの 3 番目の引数は、親文字列 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)。これは変数 vMyPath の右端から 3 番目のサブストリングであるため「Qlik」となります。

この例では、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() 関数の複数のインスタンスを使用することにより、同じ LOAD ステートメント内から、それぞれの field_no パラメーターを除外し、すべての組み合わせの直積集合を作成する方法を示します。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 app を危険にさらすことなく最新化しましょう。 ここをクリック して詳細を表示するか、次にお問い合わせください。 ampquestions@qlik.com