はじめに
DataMagic は、色々な機能を備えています。
機能・概要一覧
| 機能 | 概要 |
|---|---|
| マッチング | 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する |
| マージ | 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする |
| 出力先振り分け | 抽出条件に沿って、出力ファイルを振り分ける |
| 数値項目演算 | 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する |
| データ抽出 | 入力データから、指定した条件に合致したデータのみを抽出する |
| 項目入替 | 入力データの項目を入れ替えて、別のフォーマットで出力する |
| 項目結合 | 複数の項目を結合して、1つの項目として出力する |
| 項目分割 | 単一項目を分割して、複数の項目として出力する |
| 全角半角 | 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する |
| 出力フォーマット指定 | 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する |
| 入力ソート | 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする |
| 属性変換 | 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する |
| 日付項目演算 | 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する |
| 関数 | 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する |
| マッピング | 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する |
| 動的指定 | データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる |
| ユーザ出口変換 | データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる |
| データ挿入 | レコード内の任意の項目にユーザ指定の任意の値を挿入できる |
| 仕様書出力 | データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる |
| チュートリアル | データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる |
| カスタムエラー | カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる |
| ステップ実行 | プログラムのデバッガの処理のように、経過を確認しながら実行し、意図するように変換できなかった場合の解析、またはデータ加工の処理経過の確認に使用できます |
| コード変換 | 1バイトコード間、または2バイトコード間で、文字コードを変換する |
今回の課題
業務処理に付き物なのが、条件分岐!
条件分岐と言えば、if、switch、match、CASE、EVALUATE など、プログラミングに使用する言語によって、使える命令文や書き方が色々。
DataMagic では、条件エリアの中にある「抽出条件のアイコン」と「マッピング」を使って、分岐条件とその条件に一致した際の処理を設定します。
今回は、そんな抽出条件をピックアップ![]()
抽出条件
例えば、血液型が
なら
、
なら
、
なら
、そして
なら
と、条件(血液型)によって処理を分ける場合は、以下の図の
ように4つの抽出条件のアイコンを並べ、抽出条件をアイコン毎に設定します。
ちなみに、抽出条件のアイコンには[抽出条件]と[抽出条件(すべて抽出)]の2種類あります。
- [抽出条件]は、一から自分で条件設定する必要があります。
- [抽出条件(すべて抽出)]は、最初から〝入力ファイルの1件目のレコードからが対象〟の条件が付いています。
なので、特にこだわりが無ければ[抽出条件(すべて抽出)]を選択して、条件設定をすることをお勧めします。
条件を追加する場合は、
の[追加]をクリックして条件を設定していきます。
追加した条件はナンバリングされて
の条件式に並んでいきますので、
の条件論理式を編集します。
条件式を変更したい場合は、該当する行を選んで[編集]をクリック、もしくはダブルクリックします。
条件式を削除したい場合は、該当する行を選んで[削除]をクリックします。
なお、条件式を削除しても
の条件論理式はそのままなので、条件式と不一致になり、以下のようなエラーが表示されます。
なお、「
AND自動結合」の場合、条件式が追加されると同時に、追加された番号がAND条件で条件論理式の最後に結合されます。
条件判定をスキップ
DataMagic で設定した抽出条件は、各アイコン毎に完結します。
そのため、上(抽出条件1)から順に判定していきますが、if や switch などを使った条件分岐とは違い、条件にHITしたからと言って、そこで条件判定の列から抜け出す訳ではなく、同じレコードで最後まで条件判定を続けます。
勿論、同じレコードで複数の条件判定させる場合もありますが、ここで例にした血液型の場合、血液型が
なら、抽出条件1以外は絶対HITしないので、抽出条件1 が終わった時点でサッサと条件判定の列から抜けて、次のレコードを判定させたいですよね。
そんな時に
するのが、この項目 ![]()
この項目に
が入っている抽出条件にHITしたら、以降の条件判定をスキップ=条件判定の列から抜け出して、次のレコードの判定に移ってくれるって訳です。
ちなみに、このチェックが入った抽出条件のアイコンがこちら ![]()
業務の時短
ここまでの説明で「業務の時短」が出てきていないと気付いたアナタ。
最後に「条件判定をスキップ」にチェックが有る時
と、無い時
の処理時間を発表!
入力データは、あの郵便番号データの全国版を9つ複製してマージ。
抽出条件は、都道府県分の47個。
郵便番号データの1項目:全国地方公共団体コード の頭2桁が 01=北海道、02=青森県、03=岩手県と、都道府県がココで判別できるので、北海道の抽出条件がコレ ![]()
条件にHITしたら、無加工でそのまま出力。で設定。
「条件判定をスキップ」のチェックの有り無しで処理をした結果がコレ ![]()
「条件判定をスキップ」のチェック無しが 13秒 で、チェック有りが 9秒。
その差は4秒ですが、塵も積もれば・・・。
実際の業務処理に置き換えたら、結構時短になるのでは。
抽出条件の順番をHITし易い条件順に並べたりすると、もっと時短になるかも。
ノーコード/ローコードのソフトもチョットの工夫で効率 ![]()
以上です。







