フィルターでの条件付項目置換え

ASTERIA Warpでこんなことできる?…と思うことなど、ご遠慮なく...(^_-)

フィルターでの条件付項目置換え

投稿記事by yamaguchi » 2013年7月10日(水) 15:16

ASTERIA WARP を 利用しはじめて 間もない者です。

パイプラインのフィルターについての質問です。
CSVデータの項目が10個(A,B,C,・・・)あり その中のCの項目がA123 と A122 と A125の場合 
Bの項目を強制的に ”KOTEI”に変更したいのですが 可能ですか?

ちなみに A123 と A122 と A125 の値は、他の項目で発生しないので レコード自体のどこかにあれば。。
の判断かと思い フィルターで 以下のように正規表現変換をしてみました。

正規表現   A123|A122|A125
置換文字列  KOTEI
処理方法   B(項目) を B(項目)に変換としました。。。 が 変化なしでした。
yamaguchi
 
記事: 17
登録日時: 2013年7月10日(水) 14:51

Re: フィルターでの条件付項目置換え

投稿記事by itete » 2013年7月10日(水) 19:16

無理かと思いましたができました。
----------
(1)レコード変数「recorditem1」(文字型)を作成し、作業用に使います。

(2)アクション「変換表を使って変換」
  テーブルの内容:
    A122,KOTEI
    A123,KOTEI
    A125,KOTEI
  キーがない場合: 固定値を出力
  固定値:  (※空のままにします)
  処理方法: $<Record.item3>を$<Record.recorditem1>に変換

(3)アクション「文字列埋め込み」
  埋め込みデータ:  ${input1}${input2}
  出力: $<Record.item2>
  入力:
    $<Record.recorditem1>
    $<Record.item2>

(4)アクション「正規表現変換」
  正規表現: ^(KOTEI)(.*)$
  置換文字列: $1
  処理方法: $<Record.item2>を変換する
----------

内容を簡単に説明します。
レコード変数には、文字列「KOTEI」または空文字がセットされます。
item2(B項目)の先頭に、この文字を付け足します。
item2(B項目)の、正規表現にマッチしたひとつ目の括弧部分(KOTEI)のみを、
再度item2(B項目)にセットします。マッチしなかった場合は変換されないため、
元の値が残ります。
itete
 
記事: 157
登録日時: 2007年1月09日(火) 12:15

Re: フィルターでの条件付項目置換え

投稿記事by yamaguchi » 2013年7月11日(木) 17:50

返信頂き ありがとうございます

早速 お教え頂いた方法にてやってみます。

ただ 今 サーバーの調子が悪く フリーズの連続。。^^;

また お尋ねすると思いますが 何卒よろしくお願いします。
yamaguchi
 
記事: 17
登録日時: 2013年7月10日(水) 14:51

Re: フィルターでの条件付項目置換え

投稿記事by yamaguchi » 2013年7月12日(金) 10:50

先日 お教え頂いた 正規表現のところなのですが

A122  A123  A125  が発生していたitem2(B項目)だけ 空白になっていましたので
各ステップ毎に 確認してみました

(3)の文字列埋め込みまでは、以下の様になっていましたので 
次の正規表現の部分なのかな。。と思っています。
項目A  作業用  項目B 項目C
item0 item1  item2  item3    
 D1  KOTEI  KOTEIM122 A122  
D2 KOTEI KOTEIM123 A123  
 D3    M122 A111

ただ 私自身 正規表現がわかっておらず 個々に記号を調べてみましたが。。 全然判っていません^^; 
よろしければ その辺りも合わせて お教え願えたらありがたいです。
 ^(KOTEI)(.*)$   ← この部分の記号 
     
yamaguchi
 
記事: 17
登録日時: 2013年7月10日(水) 14:51

Re: フィルターでの条件付項目置換え

投稿記事by itete » 2013年7月12日(金) 13:01

「^(KOTEI)(.*)$」についてですが、まず「^」は先頭、「$」は末尾を表します
(末尾の指定は無くてもよいです)。
2つの( )は、置換文字列の欄で $1 とか $2 と指定して扱えるようにするためのものです。
「KOTEI」はその文字そのもので、「.*」は0文字以上の文字列を表します。
置換文字列を「$1」としていますので、ひとつ目のかっこ内の文字だけが出力されます。
つまり、KOTEIで始まっている文字列の場合、KOTEIだけにするという処理です。
なので、文字列埋め込みで項目Bが「KOTEIM122」になっている状態でしたら、
次の正規表現変換で「KOTEI」になるはずなのです。
置換文字列に「$1」と書いていなければ結果は空っぽになりますが、そのほかの原因は
ちょっと思いつきません。

ひとつ気づきましたが、項目Bの値が元々「KOTEI○○○」だった場合、項目Cに関係なく
「KOTEI」になってしまいますので、データによっては問題ですね・・・。
itete
 
記事: 157
登録日時: 2007年1月09日(火) 12:15

Re: フィルターでの条件付項目置換え

投稿記事by yamaguchi » 2013年7月12日(金) 15:52

こんな身勝手な質問に対し 細かくご説明頂き 感謝します。
ありがとう ございました。

ご心配頂いた 項目Bの値が元々「KOTEI○○○」 のケースは、発生しませんので
全く問題ないです。^^

KOTEI が出て来ないのは、何か記述を間違って いると思うので
もう少し じっくり 見直ししてみます。

本当にありがとうございます。

追記
  さっき書いた矢先ですが 原因わかりました 恥ずかしい内容なので 言いたくないくらいです^^;;
  KOTEI の文字の 直接入力と半角英数の違いでした。。 
  それで マッチしなかったのでと思います。 すみませんでした。
yamaguchi
 
記事: 17
登録日時: 2013年7月10日(水) 14:51


Return to ビギナールーム

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[4人]

cron