はじめに
DataMagic は、色々な機能を備えています。
機能・概要一覧
| 機能 | 概要 |
|---|---|
| マッチング | 入力ファイルのレコードと、共通する項目名をキーにした複数のマッチングファイルのレコードを結合し、一つのデータセットとして出力する |
| マージ | 入力ファイルとマージファイルを連結して、入力マージデータとして取り扱えます。入力マージデータに対しては、データ加工前に重複行の削除やソートする |
| 出力先振り分け | 抽出条件に沿って、出力ファイルを振り分ける |
| 数値項目演算 | 出力項目が数値タイプの場合、入力項目同士や任意の値との演算式を指定し、その演算結果を出力項目の値として出力する |
| データ抽出 | 入力データから、指定した条件に合致したデータのみを抽出する |
| 項目入替 | 入力データの項目を入れ替えて、別のフォーマットで出力する |
| 項目結合 | 複数の項目を結合して、1つの項目として出力する |
| 項目分割 | 単一項目を分割して、複数の項目として出力する |
| 全角半角 | 「カナ」「英数字」および「記号」を、半角から全角、全角から半角へ変換する |
| 出力フォーマット指定 | 日付型、数字文字列型の入力項目を出力する際に、フォーマットを指定する |
| 入力ソート | 入力ファイルの形式がCSV、フォーマット、Excelの場合は、データ加工の前にソートする |
| 属性変換 | 入力データを出力データに変換する際に、数値タイプを任意の数値タイプへ変換する |
| 日付項目演算 | 日付データに対して、演算や西暦⇔和暦の変換を指定し、その結果を出力項目の値として出力する |
| 関数 | 入力項目の値を関数で処理し、その処理結果を出力項目の値として出力する |
| マッピング | 入力ファイルから出力ファイルへのデータの流れや加工、変換ルールを定義し、異なるデータ形式間での項目の対応関係を設定する |
| 動的指定 | データ加工の実行時にコマンドの引数に指定した数値や文字列を、条件や出力情報に使用できる |
| ユーザ出口変換 | データを加工するときに、項目単位で独自の変換を設定するために、ユーザ出口プログラムを独自に作成できる |
| データ挿入 | レコード内の任意の項目にユーザ指定の任意の値を挿入できる |
| 仕様書出力 | データ加工の処理と設定内容を仕様書としてExcelファイルに出力できる |
| チュートリアル | データ加工の設定を対話的に実行して、DataMagicの基本的な操作方法を習得できる |
| カスタムエラー | カスタムエラー条件を使用すると、データの形式は問題ないが、意図しないデータ(例 別の事業所のデータ)を検出したときにデータ加工をエラーにできる |
| ステップ実行 | 入力ファイルの読み込み、抽出、およびデータ変換時に発生した、設定とデータの整合性が取れていないことに起因するエラー(システムエラーや設定値不正ではないもの)をスキップする |
| コード変換 | 1バイトコード間、または2バイトコード間で、文字コードを変換する |
今回の課題
DataMagic の機能は、上記の機能・概要一覧に上がっているもの以外にも有って、その一つに「日付の入力フォーマット」があります。
あることは知っていたのですが、今まで使用したことが無い![]()
なので、この機能について調べたことも無い![]()
そこで今回、未知の機能
に 挑戦してみます。
1.日付の入力フォーマット とは
操作マニュアルを "日付の入力フォーマット" で検索すると、
「4.12.1 日付の入力フォーマットを指定した場合の日付データの読み込み処理」の説明文の中に『この項目を設定した場合、入力したフォーマットと一致しない日付データはエラーと判定されます。』 の一文が。
ってことは、〝 少々個性的な日付フォーマットでも、「日付の入力フォーマット」に登録できたら日付データとして判定される 〟ってことらしい。
この説明は「4.12 日付タイプ」の項になるので、レイアウトに日付タイプを持つ形式を探すと、以下の5つの形式で項目タイプ = D(日付タイプ)が指定できるようです。
- フォーマット
- マルチフォーマット
- 階層フォーマット
- Excel
- DBテーブル
ここでは フォーマット形式 で動作検証してみます。
入力データ
今回はバイト数:20の日付項目を8つ並べた、以下
のデータを使用します。
令和07年01月01日 R7年1月1日 2025/01/01 25/01/01 2025/1/1 18:15:45 2025/1/1 6:15:45 pm 西暦2025/01/01 20250101181545
レイアウト情報
今回の入力データはフォーマット形式なので、省略はできません。
以下の内容(1項目だけ)で登録します。
-
項目番号:1
- ・固定長/可変長 = 固定長
- ・項目名 = 任意の名前
- ・項目タイプ = D(日付タイプ)
- ・繰り返し数 = 1
- ・バイト数 = 20
データ加工
1.入力ファイルエリアの編集
入力設定
入力形式=フォーマット
以下で説明する項目以外の設定は、初期値を採用します。
レイアウト
- ID:
- 今回用に登録したフォーマットID を設定
- ファイル名:
- 入力データをコピペして作った検証用日付データのファイルを指定
ここまで設定して、プレビュー をクリックすると、以下のエラーになります。
日付の入力フォーマットを指定していない場合の動作 については、操作マニュアルの DataMagicの自動判定による日付データの読み込み処理 に記されています。
プレビューがエラーになった原因は、この日付形式が「表4.27 指定可能な和暦の形式」以外だったことが原因のようです。
なので、入力ファイルの中から「日付の入力フォーマットを指定していない場合」で
になる日付形式を探してみると、以下の3件が HIT
残りの5件だけならプレビューできました。
でも、(8件)全部日付データなんだよな~
2.オプションの設定
「日付の入力フォーマット」の設定は「データ加工情報設定」画面の右端にある[オプション]タブでおこないます。
ここで、入力ファイルの全レコード(7件)が
になるよう、日付フォーマットを登録していきます。
入力ファイルの8件全部が、日付として判定されました。
今回の検証はここまで![]()
以下の「日付フォーマットで指定可能な文字列一覧」を見ながら、上記以外にBestな設定が無いか探してみてください。
日付フォーマットで指定可能な文字列一覧
入力フォーマット・出力フォーマットで指定可能
| 文字列 = 説明 | 文字列 = 説明 | |
|---|---|---|
| 西暦年 | YYYY = 4桁 | YY = 下2桁 |
| 元号+和暦年 | EEYY = 平成25、令和07 など | eeyy = 平成25、令和7 など |
| EYY = H25、R07 など | eyy = H25、R7 など | |
| 月 | MM = 01 ~ 12 | mm = 1 ~ 12 |
| 日 | DD = 01 ~ 31 | dd = 1 ~ 31 |
| 時間 | HH = 00 ~ 23 | hh = 0 ~23 |
| HH24 = 00 ~ 23 | hh24 = 0 ~ 23 | |
| HH12 = 01 ~ 12 | hh12 = 1 ~ 12 | |
| 分 | MI = 00 ~ 59 | mi = 0 ~ 59 |
| 秒 | SS = 00 ~ 59 | ss = 0 ~ 59 |
| AM/PM表記 | AM = すべて大文字 | Am = 先頭のみ大文字 |
| am = すべて小文字 | ー | |
| A.M. = A.M.またはP.M. | a.m. = a.m.またはp.m. | |
| 月の英語表記 | MONTH = すべて大文字 | MON = 省略形(すべて大文字) |
| Month = 先頭のみ大文字 | Mon = 省略形(先頭のみ大文字) | |
| month = すべて小文字 | mon = 省略形(すべて小文字) |
入力フォーマットで指定可能
| 文字列 = 説明 | 条件 | |
|---|---|---|
| 西暦 | RR = 下2桁 | 値が69以上は1900年代、 68以下は2000年代とみなされる |
出力フォーマットで指定可能
| 文字列 = 説明 | 文字列 = 説明 | |
|---|---|---|
| 元号 | EE = 昭和、平成、令和 | E = 省略形(S、H、R) |
以上です。
補足
出力設定を "CSV形式 & ID省略" にして、以下のマッピング設定で出力してみました。
出力ファイルプレビューの結果:
出力フォーマットの通り、8件すべて問題なく出力されました。






