• 検索結果がありません。

WebSphere Transformation Extender V を使った CSVファイル to CSVファイル変換の考え方とその方法

N/A
N/A
Protected

Academic year: 2021

シェア "WebSphere Transformation Extender V を使った CSVファイル to CSVファイル変換の考え方とその方法"

Copied!
53
0
0

読み込み中.... (全文を見る)

全文

(1)

WebSphere Transformation Extender

CSVファイル変換

ハンズオン演習

日本アイ・ビー・エム株式会社

WebSphereサービス

(2)

シナリオ

ƒ この演習で行う作業は図のようになります。 002,田中 洋介,YSL・IST・金融NWSOL開発,大和 003,小野 真樹,YSL・WebSphereサービス,箱崎 00002,田中洋介,大和 YSL・IST・金融NWSOL開発 00003,小野真樹,箱崎 YSL・WebSphereサービス 入力データ ①文字埋め ②文字の結合 ③文字の入替 ④スペースの挿入

(3)

WTXによるCSV変換

ƒ WTXでCSV変換を行うには、まず始め に、入力データの構造と出力データの 構造を定義します – 定義にはType Designerを使います ƒ 次に、入力データの各項目と出力デー タの各項目をマップします – マッピングにはMap Designerを使い ます ƒ 最後に、ツール上でテストして結果を確 認します – テストにはMap Designerを使います

データ構造の設計

データ構造の作成

マッピング

テスト

(4)

データ構造の設計

ƒ Type Designerでデータ構造を定義す る前に、WTXでのデータ構造の考え方 を習得します ƒ まず、Type Designerではデータを3つ の型に分類します – アイテム – グループ – カテゴリー

データ構造の設計

データ構造の作成

マッピング

テスト

(5)

アイテムとグループ

ƒ アイテムは意味のある最小のオブジェクト(CSVではフィールド)です ƒ まずは、すべてのデータをアイテムに分解します ƒ 次にグループを定義します ƒ グループにはアイテムまたはグループが含まれます ƒ 上の例ではEmpRecordがグループになります ƒ CSVの場合、グループ内は同じ区切り文字を使うようにします ƒ 002,田中 洋介,YSL・IST・金融NWSOL開発,大和<CR><LF> 003,小野 真樹,YSL・WebSphereサービス,箱崎<CR><LF> ID LastName FirstName Department Location

EmpRecord EmpName

(6)

アイテムとグループ

ƒ EmpRecordグループは1行分のデータにあたるので、これを複数行分まとめたものが

ファイル全体となり、EmpFileグループと定義します

ƒ 結果としてアイテムとグループは図のような階層構造をとることになります

ƒ WindowsではUTF-8ファイルには先頭にByte Order Mark(BOM)という識別子があ るため、EmpFileの先頭文字にBOMの3バイト(<<EF>><<BB>><<BF>>)を追加しま す。

EmpFile

EmpRecord(s)

ID

EmpName

LastName

FirstName

Department

(7)

区切り文字

ƒ

区切り文字はグループを定義するために使われています

ƒ

例では区切り文字として以下のようなものを使っています

カンマ(,)

スペース(<SP>)

ƒ

区切り文字の位置によって以下の分類を行います

接頭部(^A^B^C)

中置き(A^B^C)

後置(A^B^C^)

(8)

グループと区切り文字

002,田中 洋介,YSL・IST・金融NWSOL開発,大和<CR><LF>

003,小野 真樹,YSL・WebSphereサービス,箱崎<CR><LF> ID LastName FirstName Department Location

EmpRecord EmpName グループ名 区切り文字 位置 EmpName <SP> 中置き 中置き EmpRecord ,

(9)

カテゴリー

ƒ

アイテムやグループはカテゴリーの下に所属させることができます

ƒ

カテゴリーの下に新規に作成されるアイテムやグループはカテゴリーのプロ

パティーを継承します

ƒ

この継承という性質を利用するために、Type Designerでは、始めにカテゴ

リーを定義します

例えば、文字データと数値データ

• エンコードを日本語、UTF-8で継承、数値のフォーマットを継承

例えば、グループとアイテム

例えば、入力データと出力データ

(10)

データ構造の作成

ƒ データ構造の作成はType Designerを 使って行います ƒ Type Designerではデータ構造のこと をタイプ・ツリーと呼んでおり、この演習 では入力用と出力用のデータ構造を1つ のタイプ・ツリーを使って作成します

データ構造の設計

データ構造の作成

マッピング

テスト

(11)

Type Designer

ƒ Type Designerを起動します

– スタート>すべてのプログラム>IBM

WebSphere Transformation

Extender 8.1>Design Studio>Type Designer

(12)

タイプ・ツリーの作成方法

ƒ 「新規タイプ・ツリー作成」ボタンをクリックしま す ƒ TypeTree1ができます – このビューをナビゲーターと呼んでいます – 右側にあるのはプロパティー・ビューです – カテゴリー、グループ、アイテムすべてに 継承されるプロパティーをもっているのが 最上位タイプ(ROOT)です ƒ ROOTのプロパティーを編集し、名前を変更し ます – 名前を「CSV_Demo」にします – Enterキーを押して変更を確定させます ƒ 一旦、保存します – ファイル名を「CSVTypeTree」にして保存 します

(13)

カテゴリーの追加

ƒ

以下のカテゴリーをCSV_Demoの下に追加します

カテゴリー名 用途

FIELD アイテムを格納する

(14)

カテゴリーの追加方法(1)

ƒ FIELDカテゴリーを追加します – 「CSV_Demo」を右クリックして、コン テキスト・メニューから「新規」を選び ます – 「新規タイプを追加しますか?」という ダイアログは「はい」を選びます – ナビゲーターで「新規カテゴリー1」を クリックして、プロパティーの名前を 「FIELD」に変更します – プロパティーのクラスは「カテゴリー」 のままにしておきます – アイテム・サブクラス>各国語を「日 本」にし、データ言語を「UTF-8(非推 奨)」にします

(15)

カテゴリーの追加方法(2)

ƒ NUM_FIELDカテゴリーを追加します – 「CSV_Demo」を右クリックして、コン テキスト・メニューから「新規」を選び ます – 「新規タイプを追加しますか?」という ダイアログは「はい」を選びます – ナビゲーターで「新規カテゴリー1」を クリックして、プロパティーの名前を 「NUM_FIELD」に変更します – プロパティーのクラスは「カテゴリー」 のままにしておきます – アイテム・サブクラスを「数値」に変更 します

(16)

アイテムの追加

ƒ

以下のアイテムをFIELDとNUM_FIELDカテゴリーの下に追加します

アイテム名 カテゴリー名 サブクラス 埋める文字数 位置 用途 NUM_FIELD NUM_FIELD FIELD FIELD OUT_NAME FIELD テキスト 出力用名前 3 FIELD FIELD 入力データ用ID 右寄せ 数値 5 数値 テキスト テキスト 出力データ用ID テキスト 右寄せ テキスト 姓 名 部門名 事業所 IN_ID OUT_ID LAST_NAME FIRST_NAME DEPT LOCATION

(17)

アイテムの追加方法(1)

ƒ IN_IDアイテムを追加します – 「NUM_FIELD」を右クリックして、コンテキスト・メ ニューから「新規」を選びます – 「新規タイプを追加しますか?」というダイアログ は「はい」を選びます – ナビゲーターで「新規カテゴリー1」をクリックして、 プロパティーの名前を「IN_ID」に変更します – クラスは「アイテム」に変更します – 「これによってタイプのクラスが変更されます。続 行しますか?」というダイアログは「はい」を選びま す – アイテム・サブクラス>文字で埋めるを「Yes」にし ます – 埋める文字数>長さを「3」にします ƒ 同様にしてOUT_IDアイテムを追加します – プロパティーのアイテム・サブクラス>文字で埋め る>埋める文字数>長さを「5」にします

(18)

アイテムの追加方法(2)

ƒ LAST_NAMEアイテムを追加します – 「FIELD」を右クリックして、コンテキスト・メ ニューから「新規」を選びます – 「新規タイプを追加しますか?」というダイ アログは「はい」を選びます – ナビゲーターで「新規カテゴリー1」をクリッ クして、プロパティーの名前を 「LAST_NAME」に変更します – プロパティーのクラスは「アイテム」に変更 します – 「これによってタイプのクラスが変更されま す。続行しますか?」というダイアログは 「はい」を選びます ƒ 同様にしてFIRST_NAME、OUT_NAME、 DEPT、LOCATIONアイテムを追加します

(19)

グループ化の方法

ƒ

次のページからは、グループを定義するために、入力用データ、出力用デー

タの文字区切り方法を確認します

ƒ

区切り文字によってグループを定義していることを確認してください

ƒ

複数行のデータを扱えるようにするためファイル全体をグループにしています

ƒ

出力用データのOUT_DEPTグループのようにスペース(<SP>)を新たな区

切り文字として指定することで入力時の区切り文字(カンマ(,))から変更する

ことができます

(20)

入力用データ・グループ

002,田中 洋介,YSL・IST・金融NWSOL開発,大和<CR><LF>

003,小野 真樹,YSL・WebSphereサービス,箱崎<CR><LF>

IN_ID LAST_NAME FIRST_NAME DEPT LOCATION

IN_RECORD IN_NAME グループ名 区切り文字 位置 先頭文字 終了文字 なし なし <NL> なし 中置き 中置き IN_NAME <SP> IN_RECORD , IN_FILE

(21)

出力用データ・グループ

00002,田中洋介,大和 YSL・IST・金融NWSOL開発<CR><LF>

00003,小野真樹,箱崎 YSL・WebSphereサービス<CR><LF>

OUT_ID OUT_NAME LOCATION DEPT

OUT_RECORD OUT_FILE OUT_DEPT グループ名 区切り文字 位置 先頭文字 終了文字 なし なし <NL> なし 中置き 中置き OUT_DEPT <SP> OUT_RECORD ,

(22)

グループの追加

ƒ

以下のグループをCSV_Demoの下に追加します

グループ名 区切り文字 位置 先頭文字 終了文字 IN_NAME <SP> 中置き なし なし IN_RECORD , 中置き なし <NL> IN_FILE なし <<EF>><<BB>><<BF>> なし なし <NL> なし なし なし <<EF>><<BB>><<BF>> 中置き 中置き OUT_FILE なし OUT_DEPT <SP> OUT_RECORD ,

(23)

グループの追加方法(1)

ƒ IN_NAMEグループを追加します – 「CSV_Demo」を右クリックして、コンテキスト・メ ニューから「新規」を選びます – 「新規タイプを追加しますか?」というダイアログ は「はい」を選びます – ナビゲーターで「新規カテゴリー1」をクリックして、 プロパティーの名前を「IN_NAME」に変更します – プロパティーのクラスは「グループ」に変更します – 「これによってタイプのクラスが変更されます。続 行しますか?」というダイアログは「はい」を選びま す – プロパティーのグループ・サブクラス>形式を「指 定」にします – 構文アイテムを「区切り文字で区切られている」に します – 区切り文字>値を「<SP>」にします – さらにその下の位置を「中置き」にします ƒ 同様にしてOUT_DEPTも追加します

(24)

グループの追加方法(2)

ƒ IN_RECORDグループを追加します – 「CSV_Demo」を右クリックして、コンテキスト・メ ニューから「新規」を選びます – 「新規タイプを追加しますか?」というダイアログ は「はい」を選びます – ナビゲーターで「新規カテゴリー1」をクリックして、 プロパティーの名前を「IN_RECORD」に変更しま す – プロパティーのクラスは「グループ」に変更します – 「これによってタイプのクラスが変更されます。続 行しますか?」というダイアログは「はい」を選びま す – プロパティーのグループ・サブクラス>形式を「指 定」にします – 構文アイテムを「区切り文字で区切られている」に します – 区切り文字>値を「,」にします – さらにその下の位置を「中置き」にします – 構文アイテム>終了文字を「リテラル」にします – その下の値を「<NL>」にします ƒ

(25)

グループの追加方法(3)

ƒ IN_FILEグループを追加します – 「CSV_Demo」を右クリックして、コンテキ スト・メニューから「新規」を選びます – 「新規タイプを追加しますか?」というダイ アログは「はい」を選びます – ナビゲーターで「新規カテゴリー1」をクリッ クして、プロパティーの名前を「IN_FILE」 に変更します – プロパティーのクラスは「グループ」に変更 します – 「これによってタイプのクラスが変更されま す。続行しますか?」というダイアログは 「はい」を選びます – 構文アイテム>先頭文字を「リテラル」にし ます – その下の値を「<<EF>><<BB>><<BF>>」 にします ƒ 同様にしてOUT_FILEも追加します

(26)

グループおよびアイテムの階層構造

ƒ グループおよびアイテムの 階層構造を定義します ƒ 入力用データ、出力用デー タの階層構造は右図のよう になります – 上が入力用、下が出力 用です ƒ グループおよびアイテムは データ順に従って上から順 番に書かれています IN_FILE IN_RECORD(s) IN_ID IN_NAME LAST_NAME FIRST_NAME DEPT LOCATION OUT_FILE OUT_RECORD(s) OUT_ID OUT_NAME OUT_DEPT LOCATION DEPT

(27)

グループおよびアイテムの階層化の方法

ƒ IN_NAMEグループにLAST_NAME、 FIRST_NAMEアイテムを追加します – IN_NAMEをダブルクリックしてコンポーネ ント画面を開きます – コンポーネントのフィールドに LAST_NAMEアイテムをドラッグ&ドロップ して追加します – 次に、FIRST_NAMEアイテムをその下の フィールドにドラッグ&ドロップして追加しま す – 追加した順番にアイテムが並びますので 必ずデータ順に追加してください – 追加が終わったら、コンポーネント画面を 閉じます – 確認ダイアログは「はい」を選びます ƒ 同様にして他のグループも階層化します

(28)

コンポーネントの繰返し

ƒ

コンポーネントには同じグループやアイテムを追加することができません

ƒ

コンポーネントの繰り返しが必要なときは以下のルールに従って記述します

ƒ

(最小繰り返し回数:最大繰り返し回数)

デフォルトの状態は(1:1)で、必ず1回だけ出現することを意味します

数字が1つしか指定されていないときは、最小を0とします

(s)は繰り返し数が未知数を意味します(s = “some (unknown) number”)

最小最大 繰り返しルール

Date Field 1 5 Date Field(1:5)

最小最大 繰り返しルール

Date Field 1 5 Date Field(1:5)

(29)

コンポーネントの繰り返し設定方法

ƒ IN_FILEグループのIN_RECORD繰り返し ルールを設定します – IN_FILEをダブルクリックしてコンポーネン ト画面を開きます – コンポーネントのIN_RECORDフィールド を選択します – コンポーネント画面の上側(ルール・バー) に表示されている「IN_RECORD」のすぐ 後ろに「(s)」を追加して、「Enter」キーを押 します – IN_RECORDフィールドが右図のように 「IN_RECORD (s)」に変わったら、コン ポーネント画面を閉じます – 確認ダイアログは「はい」を選びます ƒ 同様にしてOUT_FILEグループの OUT_RECORDにも繰り返しルールを設定し ます

(30)

タイプ・ツリーの解析

ƒ タイプ・ツリーができあがったら、タイプ・ ツリー構造に論理エラーが含まれてい ないかどうかをチェックします – CSVTypeTreeを保存します – ナビゲーターのCSV_Demoを選択し ます – メニューからツリー>解析>論理およ び構造を選択します – 解析結果がダイアログで表示されま す • エラーが0になるようにします • 警告およびエラーがあるときは「結 果」ボタンをクリックして解析結果ロ グを開きます

(31)

Type Designerの終了

ƒ CSVTypeTreeを保存して、Type Designerを終了します ƒ ここまででデータ構造の作成は終わりで す

データ構造の設計

データ構造の作成

マッピング

テスト

(32)

マッピング

ƒ ここからは入力データ用アイテムと出力 データ用アイテムをマップしていきます ƒ マップ作業はMap Designerで行いま

データ構造の設計

データ構造の作成

マッピング

テスト

(33)

Map Designer

ƒ Map Designerを起動します

– スタート>すべてのプログラム>IBM

WebSphere Transformation

Extender 8.1>Design Studio>Map Designer

(34)

Map Designer各部の名称

ルール・バー

ナビゲーター 入力カード・ウィンドウ 出力カード・ウィンドウ

(35)

マップ・ソース・ファイルとマップ

ƒ マップとは、出力オブジェクトをどのように生 成するかを定義したもの – 実行可能マップ • ビルド、実行ができるマップ • すべてのマップのルートとなる – 関数マップ • 実行可能マップから呼びだされる マップ ƒ マップ・ソース・ファイル(.mms)とは、1つ以 上のマップを保存するもの ƒ マップには入力カードと出力カードが含まれま す – 入力カード、出力カードは複数あっても 構いません。 – カードは上から順番に処理されます。 マップ・ソース・ファイル 実行可能マップ 関数マップ ナビゲーター

(36)

マップの作成

ƒ ここからは実際にマップと入力カード、出力 カードを作成しながら説明します ƒ 「新規マップ・ファイル」ボタンをクリックします ƒ 名前を付けて保存ダイアログが開きますので、 「CSV_Demo.mms」と入力して保存します – 保存場所はどこでも構いません ƒ ナビゲーターのマップ・ソース・ファイルの下に 現れたCSV_Demoを右クリックして「新規作 成」を選択します ƒ 新規マップ作成ダイアログが開きますので、 「EMP_Map」と入力し、「OK」します ƒ リスト・タブで見ると、CSV_Demoの配下に EMP_Mapが追加されたのがわかります

(37)

入力カードの作成

ƒ 前のページで作成したEMP_Mapに入力カー ドを作成します ƒ EMP_Mapの配下の入力カードを右クリックし て、「新規作成」を選択します ƒ 入力カード追加ダイアログが開きますので、 次の設定値を入力して、「OK」します – カード名:「EMP_IN」 – タイプ・ツリー:「CSVTypeTree.mtt」 – タイプ:IN_FILEを選択 – 入力単位:「S」 – 入力元:「File」 – パス名:「name8.txt」 • name8.txtファイルは入力データが入った ファイルです ƒ これで入力カードにIN_FILEグループの階層 構造が取り込まれました

(38)

出力カードの作成

ƒ EMP_Mapの配下の出力カードを右クリックし て、「新規作成」を選択します ƒ 出力カード追加ダイアログが開きますので、 次の設定値を入力して、「OK」します – カード名:「EMP_OUT」 – タイプ・ツリー:「CSVTypeTree.mtt」 – タイプ:OUT_GROUP>OUT_FILEを選択 – 入力元:「File」 – パス名:「name8out.txt」 • name8out.txtファイルは出力データが入る 予定のファイルで、まだ存在していません ƒ これで出力カードにOUT_FILEグループの階 層構造が取り込まれました

(39)

データのマッピング

ƒ 入力カードは入力されるデータ構造を表しています ƒ 出力カードは出力されるデータ構造を表しています ƒ 出力カードのルール・フィールドに出力したい値を入力します ƒ 入力カードのアイテムを出力カードのルールへドラッグ&ドロップして入力することができます ƒ ルールには関数も用意されています ƒ 選択されたルールはルール・バーで編集できます

(40)

複数行のデータを扱うために(1)

ƒ 入力カードは入力単位を「S」としたので複数 行であっても取り込めるのですが、出力カード は1行ずつしか出力できないため、1行ごとに 関数マップを呼び出して出力させる必要があ ります ƒ ここでは関数マップ・ウィザードを使って関数 マップを作るための手順を説明します – OUT_RECORD (s)のルール・フィール ドをクリックします – ルール・バーに「= EMP_List()」と入力し ます – 入力カードのIN_RECORD (s)を EMP_List()の括弧の中へドラッグ&ド ロップします – 「Enter」キーを押して確定させます

(41)

複数行のデータを扱うために(2)

ƒ 関数マップ・ウィザードを使います – 出力カードのOUT_RECORD (s)の ルール・フィールドで右クリックして、 「関数マップ・ウィザード」を選択しま す – 関数マップ・ウィザードが開きますの で、「作成」ボタンをクリックして、次に 「閉じる」ボタンをクリックします – ナビゲーターにEMP_Listマップが現 れたのを確認してください

(42)

入力データと出力データのマッピング

ƒ EMP_Listマップをダブルクリックして入力カードと出力カードを開きます ƒ 入力カードのアイテムを出力カードのアイテムのルール・フィールドへドラッグ&ドロップ します(ただし、OUT_NAMEのルールについては次のページで説明します) IN_RECORD IN_ID IN_NAME LAST_NAME OUT_RECORD OUT_ID OUT_NAME

(43)

ルール関数による結合

ƒ OUT_NAMEは2つのアイテムを結合さ せて作ります ƒ OUT_NAMEのルールはルール・バー で定義します – OUT_NAMEのルール・フィールドを 選択します – ルール・バーに「=」と書いて、その後 ろへ入力カードのLAST_NAMEをド ラッグ&ドロップします – さらに、その後ろへ「+」と書いて、 FIRST_NAMEをドラッグ&ドロップし ます – 最後に「Enter」キーを押して確定しま す

(44)

マッピングの終了

ƒ 以上でマッピング作業は終了です

データ構造の設計

データ構造の作成

マッピング

テスト

(45)

テスト

ƒ テストはMap Designerを使って行いま す ƒ すでにマッピング作業の中で実行マップ の入力カードと出力カードに入力デー タ・ファイルと出力データ・ファイルの場 所を設定してあります ƒ ここからはトレースの設定、ビルド、実行、 結果の確認を行います

データ構造の設計

データ構造の作成

マッピング

テスト

(46)

マップのトレース設定

ƒ ここからはマップをテストするための準 備をしていきます ƒ ナビゲーターでEMP_Mapをダブルク リックしてEMP_Mapの入力カードと出 力カードを前面に出します ƒ メニューからマップ>設定を選択します ƒ マップ設定ダイアログが現れますので 以下の値を設定し、「OK」してください – スイッチ:「オン」 – 入力データのトレース:「すべて」 – サマリー:「オン」

(47)

ビルド

ƒ 実行可能マップEMP_Mapを選択して、 ツール・バーの「ビルド」ボタンをクリック します

(48)

マップ実行

ƒ 実行可能マップEMP_Mapを選択して、 ツール・バーの「マップ実行」ボタンをク リックします ƒ ダイアログが開かれますので、「マップ は正常に終了しました」と書かれている ことを確認してください – 「キャンセル」で閉じます マップ実行

(49)

実行結果の確認(1)

ƒ 実行可能マップEMP_Mapを選択して、 メニューからマップ>実行結果を選びま す ƒ 実行結果ダイアログが開かれますので、 入力カード、出力カードをチェックして、 「OK」します

(50)

実行結果の確認(2)

(51)

トレース

ƒ トレース結果を表示させるとデータが正 しく入出力されたかがわかります – 実行可能マップEMP_Mapを選択し て、メニューからマップ>雑記帳の表 示を選択します – 雑記帳の下のトレース・タブをクリック します

(52)

テスト終了

ƒ テストはこれで終了です ƒ このハンズオン演習ではデバッグ手順 については触れません

データ構造の設計

データ構造の作成

マッピング

テスト

(53)

まとめ

ƒ

このハンズオン演習では、CSVファイルを別のCSVファイルに変換する方法

について学びました

参照

関連したドキュメント

友人同士による会話での CN と JP との「ダロウ」の使用状況を比較した結果、20 名の JP 全員が全部で 202 例の「ダロウ」文を使用しており、20 名の CN

バルーントラップを設置したギャップの周りの樹冠下の地上高約1mの位置に設置した(以

WAV/AIFF ファイルから BR シリーズのデータへの変換(Import)において、サンプリング周波 数が 44.1kHz 以外の WAV ファイルが選択されました。.

が前スライドの (i)-(iii) を満たすとする.このとき,以下の3つの公理を 満たす整数を に対する degree ( 次数 ) といい, と書く..

・「下→上(能動)」とは、荷の位置を現在位置から上方へ移動する動作。

「A 生活を支えるための感染対策」とその下の「チェックテスト」が一つのセットになってい ます。まず、「

※調査回収難度が高い60歳以上の回収数を増やすために追加調査を実施した。追加調査は株式会社マクロ

太宰治は誰でも楽しめることを保証すると同時に、自分の文学の追求を放棄していませ