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

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

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

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

構文:

SubField(text, delimiter[, field\_no ])

戻り値データ型： 文字列

引数：

SubField 引数

| 引数 | 説明 |
| --- | --- |
| text | 元の文字列。これは、ハードコードされたテキスト、変数、ドル記号展開、またはその他の数式となります。 |
| delimiter | 文字列をコンポーネント パーツに分割する入力 text 内の文字。 |
| field\_no | オプションの 3 番目の引数は、親文字列 text のサブストリングのどれが返されるかを指定する整数です。<br><br><ul> <li><span>field_no</span> が正の値の場合、サブストリングは左から右に向かって抽出されます。</li> <li><span>field_no</span> が負の値の場合、サブストリングは右から左に向かって抽出されます。</li> </ul> |

ヒント メモ 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 |