条件を動的に指定してデータを抽出したい

OrangeLab. 運営チーム
作成日時: - 更新日時:
Avatar

使用ソフトウェア:DataMagic for Windows Ver.2.2.2
以下のリンクより、当Tipsのサンプルスクリプトがダウンロード可能です。
是非ダウンロード頂き、ご活用ください。

条件を動的に指定してデータを抽出したい

はじめに

こんにちは、メディアフォースの西です。

業務データの処理では、「データの振り分け」が数多く存在します。
例えば、商品データを店舗毎や取引先毎に振り分けるなど、業務にあわせ様々な条件で振り分けられます。

データの振り分けを行う場合、データから特定の条件にあったレコードを抽出し、新たなファイルに出力することが多いと思います。
しかし、抽出条件を固定値で指定していては、抽出条件の変更に効率的に対応できません。

DataMagicでは、データ加工実行時にコマンドの引数として与えた値を抽出条件に使用できる【動的値指定機能】があります。

この機能を使うことで、抽出条件の比較対象値を動的に変更して抽出するデータを制御したり、出力項目にコマンド実行ごとに異なる文字列を挿入できます。

<動的値指定機能>


本記事では仮想の要件として、発注データのうち、別処理に回すため恵比寿店のデータのみ抽出する必要があることを想定し、発注データ(固定長ファイル)から店舗Noが「105」(恵比寿店)のデータを抽出し、別のCSVファイルに出力する方法をご紹介します。

●処理イメージ

●使う機能
  • 抽出条件
●サンプルデータファイル
  • in
    ※ページ下方のリンクより、当Tipsのサンプルデータファイルがダウンロード可能です。
上記サンプルデータファイルを「C:\work\SAMPLE2\」に"in"というファイル名で格納してください。
(※このサンプルデータは文字コードが"Shift-JIS"の固定長データです)

店舗No.店舗名品番品名数量発注日
102 池袋店 A101 ボールペン 0010 2015/12/01
102 池袋店 A104 クリアファイル 0005 2015/12/01
105 恵比寿店 B201 電卓 0003 2015/12/07
105 恵比寿店 A105 コピー用紙 0001 2015/12/07
103 品川店 B103 ホッチキス 0003 2015/12/15
109 有楽町店 A105 コピー用紙 0002 2015/12/16
109 有楽町店 B102 電池 0005 2015/12/16
104 上野店 A102 シャープペンシル 0010 2015/12/20
104 上野店 A103 ノート 0010 2015/12/20
105 恵比寿店 B103 ホッチキス 0002 2015/12/24
102 池袋店 A105 コピー用紙 0001 2015/12/25
106 渋谷店 A101 ボールペン 0030 2015/12/28
106 渋谷店 A103 ノート 0030 2015/12/28
106 渋谷店 A105 コピー用紙 0001 2015/12/28

データ変換の流れ

データ変換に必要な定義情報を作成します。
データ変換の流れは大きく分けると以下になります。
  1. 入力ファイル情報の設定
  2. 出力ファイル情報の設定
  3. データ加工情報の設定

手順1 - 入力ファイル情報の設定

(1)フォーマット情報の新規作成

今回のサンプルファイルはフォーマット形式なので、入力ファイルのフォーマット情報を登録します。

タブボタンの「アダプタ」にある「フォーマット」を指定後、「新規作成」をクリックします。

(2)フォーマット情報の設定

フォーマット情報詳細画面が表示されたら、下記画面を参考に設定を行い、適用ボタンをクリックして保存します。
項目情報の設定は、空行をダブルクリックして表示されるフォーマット情報項目設定画面から行います。

<フォーマット情報詳細画面>


<フォーマット情報項目設定画面>


パラメータ説明
ID 登録したフォーマット情報を識別するためのIDを指定します。
今回はフォーマットIDを【SAMPLE2_IN】とします。
固定長/可変長 今回のデータは固定長の為、【固定長】を選択します。
※項目名、項目タイプ、繰り返し数、バイト数、小数部桁数は上記フォーマット情報詳細画面に合わせて設定してください。

これで、「入力ファイル情報の設定」は完了です。

手順2 - 出力ファイル情報の設定

(1)CSV情報の設定

CSV情報詳細画面が表示されたら、下記画面を参考に設定を行い、適用ボタンをクリックして保存します。
項目情報の設定は、空行をダブルクリックして表示されるCSV情報項目設定ダイアログから行います。


パラメータ説明
ID 登録したCSV情報を識別するためのIDを指定します。
今回はCSVIDを【SAMPLE2_OUT】とします。
囲み文字 文字列データに付加する囲み文字を指定します。指定可能な文字の範囲は"0x00"、"0x09"、および "0x20"~"0x7E"です。"0x00"を指定すると囲み文字なしとして動作します。
今回は"0x22(" ダブルクォート)"とします。
区切り文字 各項目を区切る区切り文字を指定します。指定可能な文字の範囲は"0x09"および"0x20"~"0x7E"です。
今回は"0x2C(, カンマ)"とします。
項目名 項目名を設定します。

これで、「出力ファイル情報の設定」は完了です。

手順3 - データ加工情報の設定

(1)データ加工情報の新規作成

どのようなタイプの入力ファイルを、どのようなタイプのファイルとして出力するのか、
また、どういった条件のデータを出力するかなど、データの変換を行うための条件を設定します。

タブボタンから「データ加工」を指定し、操作メニューから「新規作成」をクリックします。

(2)データ加工情報のID設定

まず、入力ファイルの設定を行います。

データ加工情報設定画面が表示されたら、IDを入力し、「入力ファイルアイコン」をダブルクリックします。


パラメータ説明
ID 今回はデータ加工情報IDを【SAMPLE2】とします。

(3)アダプタ別情報の設定

入力設定画面が表示されたらアダプタ別タブを設定し、下記画面を参考に設定を行い、OKボタンをクリックして保存します。


パラメータ説明
形式 どのようなタイプの入力の形式を行うか選択します。
今回は【フォーマット】を選択します。
ID フォーマットIDを設定します。
今回は手順1の(2)で作成した【SAMPLE2_IN】を設定します。
ファイル名 入力ファイルを指定します。
今回は「はじめに」で用意した【C:\work\SAMPLE2\in】を設定します。
数値バイトオーダ 入力ファイルの数値バイトオーダを選択します。
入力0レコードの扱い 入力データが0レコードだった場合の動作を選択します。

これで、入力ファイルの設定は完了です。

(4)「抽出条件アイコン」の選択

次に、データの抽出条件の設定を行います。
入力設定画面の設定が終わると新たに抽出情報が作成されます。

「抽出条件アイコン」をダブルクリックします。

(5)抽出条件の設定

抽出条件設定画面が表示されたら、下記画面を参考に設定を行い、OKボタンをクリックして保存します。

今回は、店舗Noがコマンド実行時の引数の値と等しいものを抽出する条件を設定します。


パラメータ説明
抽出条件No 作成された抽出条件の番号です。
比較元種別 抽出条件の比較元を選択します。
今回は【入力項目】を選択します。
比較元 - 指定方法 「項目名」もしくは「項目No.」のいずれかを選択します。
[参照]ボタンをクリックして項目選択ダイアログから、比較元となる項目名(項目No.)を選択します。
今回は【項目名】/【店舗No.】を選択します。
比較先種別 抽出条件の比較先を選択します。
今回は【実行時引数】を選択します。
比較先 - 種別 抽出条件のタイプを選択します。
今回は【$DNUM(数値)】を選択します。
比較先 - 番号 比較対象となるコマンド実行時引数の番号を”01”~”20”から指定します。
データ加工実行コマンド実行時の-dnumXX パラメータの"XX"に対応します。
演算子 比較演算子を選択します。
条件一覧 設定した抽出条件のリストを表示します。
比較元、比較先で指定した条件を追加することで、条件一覧に反映されます。
抽出条件 条件一覧に設定した条件を論理演算子(AND、OR)を使用し、抽出条件を設定します。
今回の条件は1つなので【1】を設定します。
AND自動結合 条件一覧の条件をAND条件で「抽出条件」に設定するかどうかを指定します。

これで、データの抽出条件の設定は完了です。

(6)「出力ファイルアイコン」の選択

次に、出力ファイルの設定を行います。

「出力ファイルアイコン」をダブルクリックします。

(7)アダプタ別情報の設定

出力設定画面が表示されたらアダプタ別タブを選択し、下記画面を参考に設定を行い、OKボタンをクリックして保存します。


パラメータ説明
形式 どのようなタイプの出力の形式を行うか選択します。
今回は【CSV】を選択します。
ID CSVIDを設定します。
今回は手順2の(1)で作成した【SAMPLE2_OUT】を設定します。
省略 CSVIDを設定しない場合に指定します。
文字データの後スペースの扱い 文字データの後ろにあるスペースの扱い方法を選択します。
数値データの前ゼロの扱い 数値データの前ゼロの扱い方法を選択します。
出力先指定 出力先の指定方法を選択します。今回は、"固定値"を指定します。
ファイル名には、出力ファイルの絶対パスまたは相対パスを設定します。
今回、出力ファイル名は【C:\work\SAMPLE2\out.csv】とします。
出力ファイルの切り替え 出力ファイルの切り替えを行うかどうかを選択します。
出力ファイルが0バイトの場合削除する 出力ファイルが0バイトだったとき、出力ファイルを削除する場合に選択します。

これで、出力ファイルの設定は完了です。

(8)「マッピングアイコン」の選択

次に、入力ファイル・出力ファイルの項目間のマッピング処理を定義します。

抽出条件と出力条件を結び、「マッピングアイコン」をダブルクリックします。

(9)入力項目と出力項目のマッピング

マッピング情報設定画面が表示されたら、下記画面を参考に入力項目と出力項目のマッピング線を結び、
OKボタンをクリックして保存します。

(10)データ加工情報の適用

最後に、データ加工情報設定画面の適用をクリックします。
これで、「データ加工情報の設定」は完了です。

出力ファイルの確認

(1)「utledコマンド」の実行

それでは、今回の要件である「発注データ(固定長ファイル)から店舗Noが「105」(恵比寿店)のデータを抽出し、別のCSVファイルに出力する」を満たすことができるか確認していきましょう。

以下のコマンドを実行します。
utled -i SAMPLE2 -r -dnum01 105

パラメータ説明
-i ID IDにはデータ加工情報IDを指定します。
-r 出力方法(データ加工情報で指定した出力ファイルに、結果を上書きします)
-dnumXX parm 抽出条件の比較対象値、出力項目の固定値、および関数の引数に設定した動的文字列、XX には、動的文字列番号を”01”~”20”で指定します。parm には、動的文字列を1 ~ 1024 バイトの文字で指定します。

正常終了したら出力ファイルを確認してください。

(12)出力ファイルの確認

手順3の(7)で指定した「C:\work\SAMPLE2\」に"out.csv"というファイルが出力されます。

出力されたファイルを確認します。
コマンド実行時に「-dnum01 105」と指定したので、店舗Noが「105」のデータのみ抽出されCSVファイルで出力されています。

さいごに

いかがでしたか?

今回は動的な抽出条件に数値項目を設定しましたが、そのほかにも文字列、16進文字列、日付を指定することが可能です。
もし抽出条件を変更する場合は、手順3の(5)の抽出条件設定画面で「比較先 - 種別」を変更してください。

引数種別
$DSTR 文字列
$DSTR(16進) 16進文字列
$DSTR(日付) 日付
$DNUM(数値) 数値

サンプルデータファイル

  • in (714 バイト)
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

コメント