はじめに
DataMagic は、色々な機能を備えています。
機能・概要一覧
| 機能 | 概要 |
|---|---|
| マッチング | 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する |
| マージ | 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする |
| 出力先振り分け | 抽出条件に沿って、出力ファイルを振り分ける |
| 数値項目演算 | 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する |
| データ抽出 | 入力データから、指定した条件に合致したデータのみを抽出する |
| 項目入替 | 入力データの項目を入れ替えて、別のフォーマットで出力する |
| 項目結合 | 複数の項目を結合して、1つの項目として出力する |
| 項目分割 | 単一項目を分割して、複数の項目として出力する |
| 全角半角 | 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する |
| 出力フォーマット指定 | 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する |
| 入力ソート | 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする |
| 属性変換 | 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する |
| 日付項目演算 | 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する |
| 関数 | 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する |
| マッピング | 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する |
| 動的指定 | データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる |
| ユーザ出口変換 | データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる |
| データ挿入 | レコード内の任意の項目にユーザ指定の任意の値を挿入できる |
| 仕様書出力 | データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる |
| チュートリアル | データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる |
| カスタムエラー | カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる |
| ステップ実行 | 入力ファイルの読み込み、抽出、およびデータ変換時に発生した、設定とデータの整合性が取れていないことに起因するエラー(システムエラーや設定値不正ではないもの)をスキップする |
| コード変換 | 1バイトコード間、または2バイトコード間で、文字コードを変換する |
今回の課題
【DataMagic】データ加工やってみた!入力データをマージしてみた では、複数のファイルをマージする際、重複行を削除する指定をしてファイルを出力しました。
今回は、
重複優先キー を設定することによる出力結果の違いを、以下の3パターンで試してみます。
重複優先キーの設定パターン
- 項目名 = 数量、タイプ = 数値、並び順 = 昇順
- 項目名 = 数量、タイプ = 数値、並び順 = 降順
- 重複優先キー設定 = なし
| 昇順 (最小値が先頭) | 降順 (最大値が先頭) | |
|---|---|---|
| 意味 | 小から大へ並べる順序 | 大から小へ並べる順序 |
| 数値 | 1 > 2 > 5 > 7 > 10 > 128 | 128 > 10 > 7 > 5 > 2 > 1 |
| 文字 | A > B > C > X > Y > Z | Z > Y > X > C > B > A |
入力データ
今回は以下の3ファイル(入力, マージ1, マージ2)のデータをマージします。
入力ファイル
年,月,日,曜日,都市名,都市コード,品目名,品目コード,産地名,産地コード,数量,価格,対前日比(数量),対前日比(価格)
2025,11,8,土,仙台市,0401,野菜総計,30000,,,257115,299,88.9,114.6
2025,11,8,土,仙台市,0401,野菜総計,30000,北海道,001,61791,217,,
2025,11,8,土,仙台市,0401,野菜総計,30000,茨 城,008,55942,210,,
2025,11,8,土,仙台市,0401,野菜総計,30000,宮 城,004,47241,459,,
2025,11,8,土,仙台市,0401,野菜総計,30000,青 森,002,17235,164,,
2025,11,8,土,仙台市,0401,野菜総計,30000,群 馬,010,13034,148,,
2025,11,8,土,仙台市,0401,野菜総計,30000,千 葉,012,11958,137,,
2025,11,8,土,仙台市,0401,野菜総計,30000,岩 手,003,7986,206,,
マージ1ファイル
年,月,日,曜日,都市名,都市コード,品目名,品目コード,産地名,産地コード,数量,価格,対前日比(数量),対前日比(価格)
2025,11,7,金,仙台市,0401,野菜総計,30000,,,289078,261,84.6,100.0
2025,11,7,金,仙台市,0401,野菜総計,30000,北海道,001,107078,183,,
2025,11,7,金,仙台市,0401,野菜総計,30000,茨 城,008,50203,201,,
2025,11,7,金,仙台市,0401,野菜総計,30000,宮 城,004,40854,403,,
2025,11,7,金,仙台市,0401,野菜総計,30000,青 森,002,34442,210,,
2025,11,7,金,仙台市,0401,野菜総計,30000,岩 手,003,13760,160,,
2025,11,7,金,仙台市,0401,野菜総計,30000,千 葉,012,9336,248,,
2025,11,7,金,仙台市,0401,野菜総計,30000,群 馬,010,8982,154,,
マージ2ファイル
年,月,日,曜日,都市名,都市コード,品目名,品目コード,産地名,産地コード,数量,価格,対前日比(数量),対前日比(価格)
2025,11,6,木,仙台市,0401,野菜総計,30000,,,341687,261,78.8,91.3
2025,11,6,木,仙台市,0401,野菜総計,30000,茨 城,008,73504,191,,
2025,11,6,木,仙台市,0401,野菜総計,30000,宮 城,004,69577,366,,
2025,11,6,木,仙台市,0401,野菜総計,30000,北海道,001,56106,182,,
2025,11,6,木,仙台市,0401,野菜総計,30000,青 森,002,42030,234,,
2025,11,6,木,仙台市,0401,野菜総計,30000,千 葉,012,23933,142,,
2025,11,6,木,仙台市,0401,野菜総計,30000,岩 手,003,14661,176,,
2025,11,6,木,仙台市,0401,野菜総計,30000,愛 知,023,10397,263,,
上記3ファイルの内容を一覧表にした結果が以下になります。
- セルの色が緑色 = 同一産地で数量が 最小値
- セルの色が黄色 = 同一産地で数量が 最大値
入力データと「6.データ加工処理」の結果を照合する際に折り畳む用
レイアウト情報
入力ファイルは、【DataMagic】データ加工やってみた!入力データをマージしてみた で作成(使用)したレイアウトと同じになります。
出力ファイルは任意で。ちなみに私はID省略で。
データ加工
1.入力ファイルエリアの編集
今回の入力ファイルはCSV形式なので、左端のオブジェクトパレットから CSV のアイコンを選んで、入力ファイルエリアの中にドラッグ&ドロップ。
ドロップしたアイコンをダブルクリックして「入力設定」画面を開きます。
なお、以下で説明する項目以外の設定は、初期値を採用します。
レイアウト
- ID:
-
該当するID を直接入力、もしくは
でCSV情報一覧画面を表示し、該当する ID を選択
IDを省略する場合は、囲み文字= "無し" で設定 - ファイル名:
- 入力ファイルの内容を保存したファイルの名前
- ヘッダレコード設定:
-
チェック
を入れて、1 ~ 2 行に設定
今回は、品目(野菜総計)の産地総計までを対象外にします。 - 設定値:
- 項目名=産地コード、タイプ=文字列、並び順=昇順
- 設定値:
- 項目名=産地コード
- 設定値:
- 項目名 = 数量, タイプ = 数値, 並び順 = 昇順
ソート
「入力データをソートする」にチェック
を入れて、 行追加 で項目を1行追加。
マージ
今回は入力ファイルをマージし、重複優先キーに〝数量〟を指定して重複行を削除します。
マージタブの中の 追加 をクリックして、マージするファイル数(今回は2ファイル)分のマージファイルアイコン(
みたいなアイコン)を追加する
マージファイルアイコンをクリックして、マージ1とマージ2の内容を保存したファイルの名前を一つづつセットしていく。
「重複行を削除する」にチェック
を入れて、マージキーの 行追加 をクリックして、下のリストに項目行を1行追加。
重複優先キーの 行追加 をクリックして、下のリストに項目行を1行追加。
2.出力ファイルエリアの編集
出力ファイルはCSV形式で出力するので、左端のオブジェクトパレットから CSV のアイコンを選んで出力ファイルエリアの中にドラッグ&ドロップ。
ドロップしたアイコンをダブルクリックして「出力設定」画面を開きます。
なお、以下で説明する項目以外の設定は、初期値を採用します。
レイアウト
6.データ加工処理
すべての設定が終わったので、 最後にIDを登録して、現在表示されている内容で、データ加工を実行します。
まず、重複優先キーの並び順を [昇順] にした場合の処理結果は ![]()
マージキー や 重複優先キー に設定する 項目の数 や 並び順 の組合せなど、設定条件によって得られる値は変わってくると思うので、あくまで参考値と言うことで ![]()
補足
興味本位から、重複優先キーの タイプを〝文字列〟で設定してみたら、どんな出力結果になるか確認してみた。
結果はこちら ![]()
この並び替え順、EXCELで再現できたので、間違ってはいないらしい。
は昇順の結果(降順も再現できましたが、絵面が変わらないので割愛)です。
決して、疑っていた訳では。。。ハハハ。。。![]()
以上です。







