質問
HULFT Integrateにおいて、ストレージ内などに配置されたテキストファイル内に対して任意の文字列で検索をかけたい場合の実装法について伺いたいです。
実現したい処理は以下となります。
・任意の文字列の件数が確認出来る
・テキスト中の文字列が存在している位置が分かる
回答
可変長ファイル読み取りのコンポーネントと、複数の Mapper ロジックを組み合わせる事で実現が可能です。
以下に実装案の一例を紹介します。
こちらを参考の上、お客さまの要件に合わせて適宜調整を行ってください。
1.可変長ファイル読み取りでテキストファイルを取得
テキストファイルを読み取る場合は列一覧の設定は一つのみとし、
一行分のテキストを一つのデータとして取得する事をお勧めします。
可変長ファイル読み取りコンポーネントの詳細につきましては、以下のマニュアルをご参照ください。
・2.6.1 コネクターオペレーションガイド > 2.6.1.4 ファイル > 2.6.1.4.6 可変長 > 2.6.1.4.6.1 可変長ファイル読み取り処理
2.マッピングにて正規表現置換ロジックを配置し、抽出元のデータに対して以下のように設定する
以下のように記載する事で、データから特定の文字列のみを残して置換することが出来ます。
本実装案では特定の文字列を「word」としています。
置換前文字列:[^word]*word[^word]
置換後文字列:word
正規表現置換ロジックの詳細につきましては、以下のマニュアルをご参照ください。
・2.7.3 Mapperロジックガイド > 2.7.3.6 文字列 > 2.7.3.6.30 正規表現置換
3.「word」のみにしたデータを文字数ロジックで文字数に変換して、割り算ロジックで文字数4で割る
手順2で抽出したデータに対して検索した文字列「word」の文字数4で割る事で、
データ内に存在する「word」文字列の個数を抽出することが出来ます。
文字数ロジック、割り算ロジックの詳細につきましては、以下のマニュアルをご参照ください。
・2.7.3 Mapperロジックガイド > 2.7.3.5 数値 > 2.7.3.5.18 文字数
・2.7.3 Mapperロジックガイド > 2.7.3.5 数値 > 2.7.3.5.8 割り算
4.含むロジックで「word」を含むかどうか抽出元のデータに対して真偽判定
5.条件判定による出力の切り替えロジックで、真偽判定の結果によって出力データを切り替える。
上記手順2,手順3では、特定の文字列「word」を含まないデータについては想定する結果が得られないため、
含むロジックの結果によって出力データを切り替えます。
真偽判定の結果がtrueなら手順3で確認した「word」の個数を、falseなら0を出力するよう設定して下さい。
条件判定による出力の切り替えロジックの詳細につきましては、以下のマニュアルをご参照ください。
・2.7.3 Mapperロジックガイド > 2.7.3.3 分岐 > 2.7.3.3.1 条件判定による出力の切り替え
6.データを出力する。
手順5で設定したデータを出力先に出力します。
手順1の可変長ファイル読み取り時に1行を一つのデータとして取得するよう設定している場合、
どの行に対していくつの検索文字列が存在するか確認する事が出来ます。
コメント
0件のコメント
記事コメントは受け付けていません。