第3回から引き続き、Apatarを使ってETLを作成してみましょう。
今回は、Excelファイルを読み込んで、データのチェックをおこなった後、NGのデータだけエラーファイルに出力し、残りのデータは加工してデータベースのテーブルに格納するという移行、移行ほどでなくても初期データ投入時にありそうなシナリオを実装してみましょう。
1 入力
具体的には、カラムとしてID、Family、First、Nickとして、Familyが姓、Firstが名、Nickがニックネームを表すExcel表とします。

2 出力
MySQLのuserというテーブルで、カラムとしてid、name、nickとします。

3 仕様
1)入力情報にはIDとして文字列が含まれているかもしれません。含まれている場合はエラーレコードとします。
2)姓と名を間にスペースを入れて結合し、名前とします。
という内容があるとすると、Apatarでは

1 入出力の設定
というつながりを作成し、Excelコネクタでは読み込む列数、先頭行カラム名などの設定をおこないます。MySQLコネクタでも、対象のテーブルの設定をおこないます。
2 バリデーションの設定
IDに入っている文字は数字のみなのですが、上記の図のようにデータには文字列が含まれています。(わざとですが)このデータを格納しないようにするため、Validationオペレーションを利用し、その定義として、正規表現[0-9]+に当てはまるものをOKとします。
上記の図のMatchRegExpの設定として[0-9]+としています。
3 姓 名と接続する
前回でも利用したTransformオペレーションを使い、姓と名を接続します。
間のスペースはConcatenateに設定します。
これを実行すると、テーブルの中に正しい値だけが入って、誤った値はエラーファイルに書き出されます。私がよく使っているA5:SQLで表示してみると

確かに入っていました。一点だけ注意する点があるとすれば、Excelの文字コードはSJISでApatarには文字エンコーディング変換の仕掛けがない(見つけられていないだけかも)ので、MySQLのデータベース(サーバではなく、サーバはUTF8にしてあります)の文字エンコーディングをSJISに指定してあります。
このような典型的なパターンを作ってみて、STS分割など、昔懐かしい設計手法を思い起こしました。
上記のようなバッチプログラムの場合はSTS分割が適切な手法になるケースがあります。
次回はバッチシステムのアーキテクチャとWebシステムのアーキテクチャの違いを簡単に触れて、時代とともに変化していく企業システムを考えてみることにしましょう。
今回は、Excelファイルを読み込んで、データのチェックをおこなった後、NGのデータだけエラーファイルに出力し、残りのデータは加工してデータベースのテーブルに格納するという移行、移行ほどでなくても初期データ投入時にありそうなシナリオを実装してみましょう。
1 入力
具体的には、カラムとしてID、Family、First、Nickとして、Familyが姓、Firstが名、Nickがニックネームを表すExcel表とします。
2 出力
MySQLのuserというテーブルで、カラムとしてid、name、nickとします。
3 仕様
1)入力情報にはIDとして文字列が含まれているかもしれません。含まれている場合はエラーレコードとします。
2)姓と名を間にスペースを入れて結合し、名前とします。
という内容があるとすると、Apatarでは
1 入出力の設定
というつながりを作成し、Excelコネクタでは読み込む列数、先頭行カラム名などの設定をおこないます。MySQLコネクタでも、対象のテーブルの設定をおこないます。
2 バリデーションの設定
IDに入っている文字は数字のみなのですが、上記の図のようにデータには文字列が含まれています。(わざとですが)このデータを格納しないようにするため、Validationオペレーションを利用し、その定義として、正規表現[0-9]+に当てはまるものをOKとします。
3 姓 名と接続する
前回でも利用したTransformオペレーションを使い、姓と名を接続します。
これを実行すると、テーブルの中に正しい値だけが入って、誤った値はエラーファイルに書き出されます。私がよく使っているA5:SQLで表示してみると
確かに入っていました。一点だけ注意する点があるとすれば、Excelの文字コードはSJISでApatarには文字エンコーディング変換の仕掛けがない(見つけられていないだけかも)ので、MySQLのデータベース(サーバではなく、サーバはUTF8にしてあります)の文字エンコーディングをSJISに指定してあります。
このような典型的なパターンを作ってみて、STS分割など、昔懐かしい設計手法を思い起こしました。
上記のようなバッチプログラムの場合はSTS分割が適切な手法になるケースがあります。
次回はバッチシステムのアーキテクチャとWebシステムのアーキテクチャの違いを簡単に触れて、時代とともに変化していく企業システムを考えてみることにしましょう。

コメントする