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

流石に、2つのコードテーブルを一度に作成することはできないので、今回は〝品目〟のコードテーブルを作成してみます。
〝品目〟を選んだ理由は、このファイルが 品目コード順にソートされている からです。
〝品目〟のコードテーブルを作成
抽出条件を設定
まず、コードテーブルの中身が
品目コード,品目名
30000,野菜総計
30100,だいこん
30200,かぶ
~中略~
38500,しめじ
39000,その他の野菜
39100,輸入野菜計
39200,他の輸入野菜
って感じで、品目コードと品目名がユニークになるように抽出条件を設定します。
品目データを出力するタイミングとしては、前と今で 品目コードが変わったとき ですよね
(そのために、品目コードでソートされたデータである必要があります)。
今回は変数を使用して、コードを比較するための 前の品目コード を一時保管します。
ところで、変数ってどこで設定するの ![]()
![]()
![]()
実は、データ加工画面の右上に 薄っすら見えてるアイコン がありまして、そのアイコンをダブルクリックすると、画面下に変数設定のタブが出てくるんです。
なお、この 薄っすらアイコン は、変数が登録されていると、くっきり表示されます。
変数を用意
変数設定で1行追加し、変数名を付けて変数タイプは文字列。初期値なしで用意します。
抽出条件を設定
b) 追加 をクリックして[条件設定詳細]画面を開き、以下の内容で設定する。
- 比較元:入力項目
- 指定方法 = 項目名:品目コード
- 演算子:!=
- 比較先項目の値が比較元項目の値と異なる
- 比較先:変数
- 変数名 = 品目コード比較用の変数名(下図では:前品目コード)
c) OK をクリックすると、追加した条件が 条件式に AND で追加されます。
変数へ値を代入
抽出条件と一致したら、変数に〝今〟の品目コードを代入するように設定します。
やり方は至極簡単♪
抽出条件のアイコンを右クリックして「変数代入の追加(V)」を選択すると、ニョキッと生えてくる(?)謎の [ X ] をクリックすると[変数代入設定]画面が表示されます。
後は、変数に出力(代入)したい値=すなわち〝品目コード〟と関係線を引くだけです。
入力設定 と 出力設定 と マッピング情報設定
入力設定はCSV形式で、IDは項目取り込みで作成したものを設定。
出力設定はCSV形式で、IDは省略(勿論レイアウト作ってもOKです)。
出力項目は2つで、品目コードと品目名を出力します。
出力結果を確認
一応、想定通りの品目マスターが出来上がりました
補足
出力結果を見て、何か気付きませんか。
そうです。出力側はIDを省略してるのに、1行目にタイトルが出力されているのです。
(出力側でIDを省略すると「タイトル行を出力する」のチェックは活性化されません)
ではなぜ、タイトル行が出力されているのか。
種明かしをすると、
入力設定で「ヘッダレコード設定」にチェックを入れていないから。
なので、入力ファイルの1行目から、有効なデータとして扱われているので、結果として〝品目コード〟〝品目名〟なるタイトルのレコードが1行目に出力される結果となりました。
以上です。




