はじめに
DataMagic は、色々な機能を備えています。
機能・概要一覧
| 機能 | 概要 |
|---|---|
| マッチング | 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する |
| マージ | 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする |
| 出力先振り分け | 抽出条件に沿って、出力ファイルを振り分ける |
| 数値項目演算 | 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する |
| データ抽出 | 入力データから、指定した条件に合致したデータのみを抽出する |
| 項目入替 | 入力データの項目を入れ替えて、別のフォーマットで出力する |
| 項目結合 | 複数の項目を結合して、1つの項目として出力する |
| 項目分割 | 単一項目を分割して、複数の項目として出力する |
| 全角半角 | 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する |
| 出力フォーマット指定 | 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する |
| 入力ソート | 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする |
| 属性変換 | 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する |
| 日付項目演算 | 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する |
| 関数 | 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する |
| マッピング | 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する |
| 動的指定 | データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる |
| ユーザ出口変換 | データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる |
| データ挿入 | レコード内の任意の項目にユーザ指定の任意の値を挿入できる |
| 仕様書出力 | データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる |
| チュートリアル | データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる |
| カスタムエラー | カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる |
| ステップ実行 | 入力ファイルの読み込み、抽出、およびデータ変換時に発生した、設定とデータの整合性が取れていないことに起因するエラー(システムエラーや設定値不正ではないもの)をスキップする |
| コード変換 | 1バイトコード間、または2バイトコード間で、文字コードを変換する |
数値項目演算
ここまで、郵便番号データを使って、DataMagic の機能を色々試してきましたが、ここでは数値項目演算を試してみます。
ただ、慣れ親しんだ郵便番号データには〝数値〟の項目が無いので、今回の入力データには、農林水産省の ホーム > 統計情報 > 分野別分類/農畜産物卸売市場 > 青果物卸売市場調査 の 青果物卸売市場調査(日別調査)〔外部リンク〕 から、2025年9月30日(火) の東京都の野菜(CSV) を借用することにしました。
今回はこの入力データを使用して、数量 * 価格 * 1.10(消費税)の計算をしてみます。
レイアウト情報〔CSV〕
郵便番号データにはタイトル行が無かったので、レイアウト情報を登録する際、項目名は手入力しました が、今回使用する統計情報にはタイトル行があるので、今回は「項目取り込み」を使ってレイアウトを登録します。
「CSV情報詳細(新規作成)」画面を開いて、詳細情報の上部にある 項目取り込み をクリックし、「項目取り込み」画面を表示します。
「項目取り込み」画面では、取り込み先に「CSVファイル」を選択し、タイトル行を読み取るCSVファイル名(2025年10月3日(金) の東京都の野菜データ)を指定して 項目取り込み をクリックします。
「項目取り込み」画面の下半分に、読み込んだファイルの内容が表示されます。
タイトル行の上をクリックして反転させ、右下の OK をクリックします。
「
選択しているレコードの内容をインポートします。よろしいですか?」の確認画面が表示されるので はい をクリックすると、取り込んだタイトル行の内容で項目名が編集されました。
なお、今回の入力ファイルは、明らかに文字列の「品目名」や「産地名」が 囲み文字で囲まれていない ので、囲み文字の設定は 〝 なし(0x00)〟 に変えて ID を登録します。
私は ID:FVs(fruits and vegetables の略語)で登録しました。
入力ファイルエリアの編集
CSVのIDと入力ファイル名を入力して、プレビュー画面を表示すると、1行目はヘッダーレコードなので、「ヘッダレコード設定」を指定して、処理時にこの1行分をスキップする(データとして扱わない)ようにします。
出力ファイルエリアの編集
今回も出力形式はCSV。
IDは省略で、出力先を1つ用意し、抽出条件と関係線を引きます。
条件エリアの設定
マッピング情報設定画面を開いて出力項目を追加します。
今回は上から順に以下の6項目を出力します。
出力項目:1 = 品目名
出力項目:2 = 産地名
出力項目:3 = 数量
出力項目:4 = 価格
出力項目:5 = 演算結果1《数量 * 価格》
出力項目:6 = 演算結果2《数量 * 価格 * 1.10(消費税)》
演算しない[出力項目:1]~[出力項目:4]は、上記の入力項目名と関係線を引きます。
数値項目の演算を設定します
ここでは[出力項目:6]の設定します。先ず、
- [出力項目:6]を選択して、出力情報を追加
- 出力情報設定画面で「数値演算」を選択
- 演算式に、 入力項目:数値 * 入力項目:価格 * 1.10(消費税) の式を入力して、
OKをクリック
➣ 入力項目を指定する場合は、$INUM() または $INAME() を使用します。
➣ 今回は指定した入力項目が分かるよう、$INAME() を使用しました。
ちなみに[出力項目:5]は、[出力項目:6]と同じ手順で設定し、演算式から消費税の乗算を消して登録してください。
設定が終わったら、IDを登録して 実行 してみます。
正常終了したら、出力ファイルのプレビュー表示して、演算結果を確認します。
出力フォーマットを指定
出力結果を見ると、数量と価格で演算はされていますが、小数部が 9桁 付いてます ![]()
こんな時は、出力フォーマットを指定して、小数部を削ることができます。
今回は「出力項目:5 = 整数部のみ」「出力項目:6 = 小数部2桁表示」になるよう編集します。
![]()
対象の出力項目を選択し、
- 出力フォーマットの
編集をクリック - 「出力フォーマット」画面が表示されたら、 形式 と 有効小数部桁数 を変更して
OKをクリック
➣ 形式 = 数字文字列 を選択
➣ 有効小数部桁数 = 指定する を選択し、右枠に桁数を入力
(出力項目:5 = 0、出力項目:6 = 2)
![]()
出力フォーマットの編集が終わったら、適用(保存)して再度実行します。
出力結果をプレビューで確認すると、出力項目:5 の小数部は0桁、出力項目:6 の小数部は2桁 出力されています。
補足
念のため、実際の出力ファイルをメモ帳で開いて中身を表示すると、数量(出力項目:3)や 価格(出力項目:4)が、囲み文字(")に囲まれて、文字として出力されています。
理由は、入力設定の囲み文字の指定が "なし(0x00)" 、出力設定の囲み文字の指定が "あり(0x00 以外)" の組合せになっているからです。
この組み合わせでデータ加工する場合、出力ファイルに数値として出力したい項目の形式が標準になっていると、出力結果が囲み文字で囲まれて文字扱いになる場合があります。
こんな時(数値が文字扱いされた時)は、数値として出力したい項目の出力フォーマットの形式を 数字文字列 にするだけでOKです。
試しに、出力項目:4(価格)の出力フォーマットの形式を数字文字列に変えて、出力した結果が
こちら。
囲み文字で囲まれていないことが確認できます。
以上です。














