2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】データ加工やってみた!CSVから固定長フォーマット〔項目入替を添えて〕

2
Last updated at Posted at 2025-09-22

はじめに

CSV形式 フォーマット形式 の定義を登録したので、次はデータ加工をやってみます。

今回は、CSV形式の入力データ全件を、出力側のフォーマット形式に合わせて出力します。

実は、DataMagic は、色々な機能を備えているんです。

機能・概要一覧
機能  概要
マッチング 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する
マージ 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする
出力先振り分け 抽出条件に沿って、出力ファイルを振り分ける
数値項目演算 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する
データ抽出 入力データから、指定した条件に合致したデータのみを抽出する
項目入替 入力データの項目を入れ替えて、別のフォーマットで出力する
項目結合 複数の項目を結合して、1つの項目として出力する
項目分割 単一項目を分割して、複数の項目として出力する
全角半角 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する
出力フォーマット指定 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する
入力ソート 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする
属性変換 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する
日付項目演算 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する
関数 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する
マッピング 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する
動的指定 データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる
ユーザ出口変換 データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる
データ挿入 レコード内の任意の項目にユーザ指定の任意の値を挿入できる
仕様書出力 データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる
チュートリアル データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる
カスタムエラー カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる
ステップ実行 入力ファイルの読み込み、抽出、およびデータ変換時に発生した、設定とデータの整合性が取れていないことに起因するエラー(システムエラーや設定値不正ではないもの)をスキップする
コード変換 1バイトコード間、または2バイトコード間で、文字コードを変換する

数多ある機能の中で、今回は〝項目入替〟を合わせて使ってみました。

データ加工

データ加工を定義する画面へは、
スタートページ > データ加工[データ加工]> データ加工情報一覧[新規作成]
で画面を遷移させます。

Qiita_005-01.jpg

1.入力ファイルエリアの編集

まずは入力ファイルエリアの中を編集します。

ここからの操作はチュートリアルで確認済み(のはず)なので、順にオブジェクトを選んで組み上げていきます。
なお、先に言っておきますが、設定する順番はチュートリアルとは異なる(私のセンスで進める)ので、悪しからず。

:one: 入力ファイルの形式は CSV なので、左端のオブジェクトパレットから CSV のアイコンを選んで、入力ファイルエリアの中にドラッグ&ドロップ。
ドロップしたアイコンをダブルクリックして「入力設定」画面を開きます。

:two: 入力設定画面の「レイアウト」タブでは、ID に 該当する ID を直接入力(もしくは :mag_right: でCSV情報一覧画面を表示し、該当する ID を選択)します。
今回の該当IDは ZIPCODE です。

Qiita_005-02.jpg

その他の項目は、入力データや処理の内容によって設定します。
今回、「レイアウト」タブ以外の項目はすべて初期値のまま。
このあとファイル名を入力して、入力ファイルエリアの設定は終了です。

:three: 必須項目をすべて指定すると、入力ファイルのアイコンがグレーから黄色に変わり、同時に[プレビュー]ボタンが活性化します。
クリックして、CSV定義が入力データの項目と一致して表示されることを確かめます。

Qiita_005-03.jpg

想定した通りに表示されなかった場合は、この段階で定義や設定を見直します。
ちなみに、桁ずれなら “定義”、文字化けなら “コード変換の設定” が怪しいかも。

2.出力ファイルエリアの編集

次は出力ファイルエリアの中を編集します。

チュートリアルでは “抽出条件の設定” を先にしていますが、私は一旦両端(入出力)の部分を決めてから、「あ~でもない」「こ~でもない」と、条件設定を組み上げていくスタイルなので。

:four: 出力ファイルの形式は フォーマット なので、左端のオブジェクトパレットから フォーマット のアイコンを選んで出力ファイルエリアの中にドラッグ&ドロップ。
ドロップしたアイコンをダブルクリックして「出力設定」画面を開きます。

:five: 出力設定画面の「レイアウト」タブでは、ID に 該当する ID を直接入力(もしくは :mag_right: でフォーマット情報一覧画面を表示し、該当する ID を選択)します。
ちなみに、今回の該当IDは ZIPCODE-Address です。

その他の項目は、想定する出力結果や処理の内容によって設定します。
今回、「レイアウト」タブ以外の項目はすべて初期値のまま。
必須項目をすべて指定すると、出力ファイルのアイコンがグレーから黄緑色に変わり、抽出条件と関係線が結べるようになります。

Qiita_005-04.jpg

3.抽出条件の設定

入出力ファイルの設定が終わったので、 次は抽出条件を設定します。

DataMagic 入力ファイルの必須項目をすべて設定すると、条件エリアに「抽出条件(すべて抽出)」を一つ、自動的にセットします。

:six: 今回は無条件で全レコードを出力対象とするので、自動的にセットされた抽出条件をそのまま使用します。

4.関係線の設定1〔抽出条件と出力ファイル〕

入出力ファイルと抽出条件の設定が終わったら、ゴールは目の前!
次は抽出条件と出力ファイルの間を関係線でつなぎます。

:seven: 抽出条件のアイコンを選んで、その抽出条件と一致した際の出力先となる出力ファイルのアイコンの上にドラッグ&ドロップすると、関係線が結ばれます。

関係線を選んでダブルクリックすると、マッピング情報設定画面が表示されます。
(関係線は以下の3色で表現されます)

Qiita_005-05.jpg

5.関係線の設定2〔入力項目と出力項目をマッピング〕

入力項目と出力項目間の関係線(マッピング)は、入力項目(もしくは出力項目)を選んで、関係線を結びたい相手側の項目名上にドラッグ&ドロップして、1本1本引いていきます。

:eight: 今回はレイアウト定義をする際、出力する項目名を入力側の項目名と同じにしているので、「同一項目をマッピング」もしくは「類似項目をマッピング」の機能を使うと、一発でマッピングができます。

Qiita_005-06.jpg

6.データ加工処理

すべての設定が終わったら、 最後にIDを設定して登録 します。
なお DataMagic は、中途半端な設定状態では登録できないので、ご注意を:exclamation:

IDには、50バイト以内の英数字と「-(ハイフン)」「_(アンダーバー)」「.(ピリオド)」「((始めの丸かっこ)」「)(終わりの丸かっこ)」の5つの記号が使用できます。
また、英字は英大文字と英小文字を区別します

私は ID:ZIPCODE(CSV_FMT) で〔適用〕して登録しました。

設定を登録する場合は、管理画面の[:floppy_disk: 保存]か[:floppy_disk: 適用]ボタンをクリックします。違いは以下になります。

〔保存〕 設定内容を登録して、設定画面を閉じる
〔適用〕 設定内容を登録して、設定画面は閉じない

引き続き、現在表示されている内容で、データ加工を実行します。

なお、保存で登録した場合は、データ加工情報一覧から登録したIDを選んでダブルクリックし、管理画面を開いてください。

:nine: IDを登録したら、管理画面の[:arrow_forward: 実行]ボタンをクリックして処理を実行してみます。

Qiita_005-07.jpg

「データ加工実行」のサブウィンドウが開きますが、今回はスルー。
右下の[実行]ボタンをクリックして処理を進めます。

「確認『:information_source: データ加工実行は正常終了しました。』」のサブウィンドウが開いたらOK:exclamation:
開いているサブウィンドウをすべて閉じて、結果を確認します。

Qiita_005-08.jpg

出力ファイルをプレビュー表示しても、TeraPadで直接開いてみても、表示結果は同じなので、大成功 :musical_note: です。

付随情報

コマンド:utled から実行

実際にDataMagicを使ってデータ加工をする場合、毎回管理画面を開いて処理を実行する訳ではありません。
DataMagicのデータ加工処理は、データ加工実行コマンド〝utled.exe〟を使います。

〝utled.exe〟コマンド の細かな仕様は、
DataMagic 操作マニュアル > 6. データ加工の実行 > 6.2 コマンドから実行
を確認していただくとして。

実は、管理画面の実行ボタンをクリックした際も、裏でしっかり〝utled.exe〟コマンドが呼ばれています。
どんな感じでパラメータ(引数)を組合わせて実行したのかは、データ加工履歴の「実行パラメータ」で確認できます。

Qiita_005-11.jpg

補足

其の1

出力先と抽出条件は複数個指定できるので、それぞれのアイコンは画面の配置順に上から1からの連番が付きます。

例えば、抽出条件と出力ファイルのアイコンが、上から〝FMT@@〟〝CSV@@〟〝MFMT@@〟のコメント順で配置されている(下図左)ところを、
  A:FMTとCSVの抽出条件の位置を入れ替える
  B:CSVとMFMTの出力ファイルの位置を入れ替える
と、配置順にアイコンの番号が上から振り直されます。

Qiita_005-09.jpg

其の2

データ加工処理を実行して、
「エラー『:x: データ加工実行は異常終了しました。完了コード』」
のサブウィンドウが開いた場合、エラーのサブウィンドウを閉じると「変換詳細状況紹介」のサブウィンドウが開き、完了コードや詳細コード以外に、コードの意味がそれぞれのメッセージ欄に表示されます。

例えば、実際の入力データは以下なのに、

入力データ
13101,"102  ","1020072","トウキョウト","チヨダク","イイダバシ","東京都","千代田区","飯田橋",0,0,1,0,0,0
13101,"102  ","1020082","トウキョウト","チヨダク","イチバンチョウ","東京都","千代田区","一番町",0,0,0,0,0,0
13101,"101  ","1010032","トウキョウト","チヨダク","イワモトチョウ","東京都","千代田区","岩本町",0,0,1,0,0,0

CSVの定義で、囲み文字を間違って「' (0x27)」で登録していると(正しくは「" (0x22)」なのに)こんなエラーになります。

Qiita_005-10.jpg

以上です!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?