SubField - スクリプトおよびチャート関数
SubField()は、元のレコード項目が区切り文字で区切られた複数の部分で構成されている文字列項目からサブストリング部分を抽出するために使用されます。
Subfield() 関数は、フルネームで構成されるレコードのリストからファースト ネームと姓、パス名のコンポーネント パーツを抽出したり、コンマ区切りのテーブルからデータを抽出したりするために使用できます。
LOAD ステートメントで、オプションの field_no パラメータを省略して、Subfield() 関数を使用する場合、サブストリングごとに完全な 1 つのレコードが生成されます。Subfield()を使用してを複数の項目がロードされる場合、すべての組み合わせのデカルト積が作成されます。
構文:
SubField(text,
delimiter[, field_no ])
戻り値データ型: 文字列
引数:
引数
text
|
元の文字列。これは、ハードコードされたテキスト、変数、ドル記号展開、またはその他の数式となります。 |
delimiter
|
文字列をコンポーネント パーツに分割する入力 text 内の文字。 |
field_no
|
オプションの 3 番目の引数は、親文字列 text のサブストリングのどれが返されるかを指定する整数です。値 1 を使用すると最初のサブストリングが返され、値 2 を使用すると 2 番目のサブストリングが返されます。値 3 以降も同様です。
- field_no が正の値の場合、サブストリングは左から右に抽出されます。
- field_no が負の値の場合、サブストリングは右から左に抽出されます。
|
ヒント メモ
SubField() は、Len()、Right()、Left()、Mid()、およびその他の文字列関数など、複雑な関数の組み合わせの代わりに使用することができます。
例: チャートの数式
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) などを追加できます。これは、変数 vMyPath の右端から 3 番目のサブ文字列であるため、「Qlik」を返します。 |
例: 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) などを追加できます。これは、変数 vMyPath の右端から 3 番目のサブ文字列であるため、「Qlik」を返します。 |
スクリプト例 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] の値は正なので、左から右の順にサブ文字列が抽出されます。2 番目の関数呼び出しでは、[field_no] 引数を -1 にすることで、右から左の順に 2 番目のサブ文字列を抽出します。
スクリプト例 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 |
説明
この例では、Subfield() 関数の複数のインスタンスを、すべての組み合わせのデカルト積を作成する同じ LOAD ステートメント内から field_no パラメータを除外して使用する方法を示しています。DISTINCT オプションを使用すると、レコードの複製が作成されるのを避けることができます。