0
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】データ加工やってみた!入力項目の結合・分割〔任意の値の挿入を添えて〕

Last updated at Posted at 2025-10-03

はじめに

DataMagic は、色々な機能を備えています。

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

項目を結合する

「項目(データ)を連結する」
簡単そうに見えて、いざやるぞ!となったら、これがなかなか難しい。
これも勿論 DataMagic に掛かると、簡単につながっちゃうんです。

CSV情報のIDを省略

DataMagic では、CSV形式のファイルに限って、CSV情報(レイアウト)のID指定を省略してファイルの読み書きをすることが出来ます。
「コレって、できるかなぁ:thinking:」な~んて思い立った時や、チョット試してみたい時など、いちいちレイアウト情報を登録するのって、面倒ですよね。

ID指定を省略すると、マッピング設定する画面上に項目名が表示されないので、項目数が多い時など、不向きな場合もありますが、今回は、結合と分解をチョチョっと試すだけなので、出力側は ID省略 の CSV形式 でやってみます。

都道府県名 と 市区町村名 を結合

今回も、入力ファイルは 東京都の郵便番号データ(CSV形式)を使います。
なので、データ加工ID:ZIPCODE(CSV_FMT) をコピー して、ID:ZIPCODE(CSV_CSV)を新規登録し、出力ファイルエリアと条件エリアを編集していきます。

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

データ加工ID:ZIPCODE(CSV_CSV) を開くと、コピーしただけなので、出力ファイルエリアにあるアイコンの出力設定は「フォーマット」になっています。

評価版DL109.JPG

この状態から、出力設定をCSV形式に変えていきます。

:one: 形式の「フォーマット」を「CSV」に変更します。
この時、『出力設定の形式が変更されました。マッピング情報が設定済みの場合、その情報は破棄されます。よろしいですか?』 の 確認画面が出ますが、元々マッピングの設定はやり直すので、『消す手間が省けた、ラッキー♪」と思って、迷わず はい をクリックします。

次に、「出力設定」画面を開き、ID入力枠の右横にある「省略」のチェックボックスをONにします。
あとはファイル名を入力し直すだけ。
他の設定項目は初期値を使用するので、今回の出力設定はこれだけでOKです。

評価版DL110.JPG

条件エリアの編集

破棄されたマッピング情報を登録し直します。

:two: 抽出条件のアイコンと出力ファイルのアイコンの間に関係線を引いて、マッピング情報設定画面を開くと、(省略してるから当たり前なのですが)出力項目側には項目がない。

こんな状態で、どうやってマッピングするのかって?

心配は無用!出力項目側の「CSV」の横にある 一つ追加 or 複数追加 を使って、必要な数の出力項目を自分で追加していくんです。

今回は〝都道府県名ー漢字〟と〝市区町村名ー漢字〟を結合して、以下の順で3項目を出力してみます。

 出力項目1 = 郵便番号
 出力項目2 = 都道府県名ー漢字 & 市区町村名ー漢字
 出力項目3 = 町域名ー漢字

項目の追加は、数を数えながら 一つ追加 を連打するも良し。複数追加 をクリックすると開く「追加項目数設定」画面で、項目数に 3 を入れてイッキに追加するも良し。お好きな方法で。

評価版DL112.JPG

:three: 入力項目と追加した出力項目との間の関係線を手動で引いていきます。
関係線は、入力項目を選択し、出力項目へドラッグ&ドロップすることで引くことができます。

まず、項目を結合しない[出力項目:1]は[郵便番号]、[出力項目:3]は[町域名ー漢字]との間で、それぞれ関係線を引きます。

次に、項目を結合する[出力項目:2]は、最初に[都道府県名ー漢字]、次に[市区町村名ー漢字]との間で関係線を引きます。
なお、項目は関係線を引いた順に結合されます。

評価版DL113.JPG

単純な項目結合なら、これだけで設定完了!(ね、簡単でしょ)

:four: 早速処理を実行して、結果を確認してみましょう!!
入力ファイルと出力ファイルの内容をプレビューで表示して、比較し確認します。

評価版DL114.JPG

項目を分割する

「項目(データ)を分割する」
分割条件って言ったら「前(後ろ)から数えてnバイト目で」や「文字@の前後で」など多種多様。
そんな項目分割も、 DataMagic は(可能な範囲で)結構頑張ます。

この投稿は初心者向けなので、単純に「前から数えて@バイト目で」の条件で項目分割を試してみます。
「文字@の前後で」なんかは、関数や正規表現を使用することになるので、またの機会に。

郵便番号を分解

入力データの中で、「前から数えて@バイト目で」分割して違和感のない項目と言えば、〝郵便番号〟
ココでは、郵便番号の上3桁の「郵便区番号」と下4桁の「町域番号」に分解して、以下の順で4項目を出力してみます。

 出力項目1 = 郵便番号(上3桁)
 出力項目2 = 郵便番号(下4桁)
 出力項目3 = 都道府県名ー漢字 & 市区町村名ー漢字
 出力項目4 = 町域名ー漢字

出力ファイルエリアに出力形式のアイコンを追加

今回は同じデータ加工IDの中で〝項目結合〟〝項目分解〟〝任意の値の挿入〟の 3パターンを設定していきます。

:five: オブジェクトパレットから「CSV」を選んで、出力ファイルエリアに追加し、項目結合と同じで、IDは省略。
出力設定(2) の設定が出来たら、抽出条件のアイコンと関係線を結ぶ。

評価版DL115.JPG

:six: 抽出条件と出力ファイル2(出力設定(2))とのマッピング情報設定画面を開き、出力項目を4つ追加。

まず、郵便番号を分割するために、以下の A ~ F の設定を実施

:small_orange_diamond: 郵便番号 上3桁

・A:[郵便番号]と[出力項目:1]の間で関係線を引く
・B:[出力項目:1]を選び、画面右側にある出力情報 の 編集
   クリックして、「出力情報設定」画面を開く
・C:開いた「出力情報設定]画面で以下の設定をする
    (甲) 入力項目 を選択
    (乙) 項目名 = 郵便番号
    (丙) 開始位置 = 1
    (丁) 出力サイズ = 3

評価版DL116.JPG

:small_orange_diamond: 郵便番号 下4桁

・D:[郵便番号]と[出力項目:2]の間で関係線を引く
・E:[出力項目:1]を選び、画面右側にある出力情報 の 編集
   クリックして、「出力情報設定」画面を開く
・F:開いた「出力情報設定]画面で以下の設定をする
    (戊) 入力項目 を選択
    (己) 項目名 = 郵便番号
    (庚) 開始位置 = 4
    (辛) 出力サイズ = 4

評価版DL117.JPG

:seven: 残りの出力項目は、項目結合の設定をマネて
「出力項目:3」は都道府県名ー漢字」と「市区町村名ー漢字」から関係線を引き、
「出力項目:4」は「町域名ー漢字」との間で関係線を引いて、終了!

処理結果を確認すると、郵便番号を上3桁、下4桁に分割して出力に成功です!
評価版DL118.JPG

任意の値の挿入する

ここまで、入力項目を単純に結合したり分解したりしてきましたが、ここでは分割した入力項目の間に任意の値を挿入し、つなぎ直して出力してみます。

郵便番号を「上3桁-下4桁」で出力

ここからは、上記のおさらいを兼ねて、一気に行っちゃいます。
ココでは、以下の順で3項目を出力してみます。

 出力項目1 = 郵便番号(上3桁)& ー(ハイフン)& 郵便番号(下4桁)
 出力項目2 = 都道府県名ー漢字 & 市区町村名ー漢字
 出力項目3 = 町域名ー漢字

オブジェクトパレットから「CSV」を選んで、出力ファイルエリアに追加し、項目結合と同じで、IDは省略。
出力設定(3) の設定が出来たら、抽出条件のアイコンと関係線を結ぶ。

抽出条件と出力ファイル3(出力設定(3))とのマッピング情報設定画面を開き、出力項目を3つ追加。

:eight: ハイフン入りの郵便番号は、以下の順で編集します。

:small_orange_diamond: 郵便番号 上3桁

・A:[郵便番号]との間で関係線を引く
・B:[出力項目:1]を選び、「出力情報設定」画面を開く
・C:開いた「出力情報設定]画面で以下の設定をする
    (甲) 入力項目 を選択
    (乙) 項目名 = 郵便番号
    (丙) 開始位置 = 1
    (丁) 出力サイズ = 3

:small_orange_diamond: 任意の値:ー(半角のハイフン)

・D:[出力項目:1]を選び、出力情報 の 追加 をクリックして、
   「出力情報設定」画面を開く
・E:開いた「出力情報設定]画面で以下の設定をする
    (α) 固定値 を選択
    (β) 区分 = 固定文字列
    (γ) 値 = ー(半角のハイフン)

:small_orange_diamond: 郵便番号 下4桁

・F:[出力項目:1]を選び、追加 をクリックして、
   「出力情報設定」画面を開く
・G:開いた「出力情報設定]画面で以下の設定をする
    (戊) 入力項目 を選択
    (己) 項目名 = 郵便番号
    (庚) 開始位置 = 4
    (辛) 出力サイズ = 4

評価版DL119.JPG

:nine: 残りの出力項目は、項目結合の設定をマネて
「出力項目:2」は都道府県名ー漢字」と「市区町村名ー漢字」から関係線を引き、
「出力項目:3」は「町域名ー漢字」との間で関係線を引いて、終了!

処理結果を確認すると、郵便番号を上3桁 - 下4桁に編集して出力に成功です!

評価版DL120.JPG

付随情報

マッピング情報設定画面を開いて、項目結合した出力項目を選択 すると、 出力情報の右側に表示されるタブ順 で、上から結合した項目の内容が表示されます。

評価版DL121.JPG

出力情報のタブは、 :arrow_up:上へ :arrow_down:下へ で、結合順を変更することができます。

また、当たり前のことですが、
出力項目を選んで出力情報のタブを 追加 し、〝入力項目〟&〝項目名〟を設定すると、設定した項目名と関係線が引かれます。

入力項目の項目数が多い場合など、入力項目側の画面を上下にスクロールして対象の入力項目を探して、出力項目へドラッグ&ドロップするより、項目名をリストの中から選択する方が楽に関係線が引けます。

勿論、出力情報のタブを [削除] することで関係線を解除することが出来ます。

以上です。

0
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
0
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?