6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【DataMagic】データ加工やってみた!日付の入力フォーマット ってなんだろう

Last updated at Posted at 2025-12-09

はじめに

DataMagic は、色々な機能を備えています。

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

今回の課題

DataMagic の機能は、上記の機能・概要一覧に上がっているもの以外にも有って、その一つに「日付の入力フォーマット」があります。

あることは知っていたのですが、今まで使用したことが無い:exclamation:
なので、この機能について調べたことも無い:bangbang:

そこで今回、未知の機能:interrobang: に 挑戦してみます。

1.日付の入力フォーマット とは

操作マニュアルを "日付の入力フォーマット" で検索すると、
4.12.1 日付の入力フォーマットを指定した場合の日付データの読み込み処理」の説明文の中にこの項目を設定した場合、入力したフォーマットと一致しない日付データはエラーと判定されます。 の一文が。

ってことは、〝 少々個性的な日付フォーマットでも、「日付の入力フォーマット」に登録できたら日付データとして判定されるってことらしい。

この説明は「4.12 日付タイプ」の項になるので、レイアウトに日付タイプを持つ形式を探すと、以下の5つの形式で項目タイプ = D(日付タイプ)が指定できるようです。

  • フォーマット
  • マルチフォーマット
  • 階層フォーマット
  • Excel
  • DBテーブル

ここでは フォーマット形式 で動作検証してみます。

入力データ

今回はバイト数:20の日付項目を8つ並べた、以下 :arrow_down: のデータを使用します。

検証用日付データ
令和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

Qiita_017-01.jpg

データ加工

1.入力ファイルエリアの編集

入力設定

入力形式=フォーマット

以下で説明する項目以外の設定は、初期値を採用します。

レイアウト

ID:
今回用に登録したフォーマットID を設定
ファイル名:
入力データをコピペして作った検証用日付データのファイルを指定

Qiita_017-02.jpg

ここまで設定して、プレビュー をクリックすると、以下のエラーになります。

Qiita_017-03.jpg

日付の入力フォーマットを指定していない場合の動作 については、操作マニュアルの DataMagicの自動判定による日付データの読み込み処理 に記されています。

プレビューがエラーになった原因は、この日付形式が「表4.27 指定可能な和暦の形式」以外だったことが原因のようです。

なので、入力ファイルの中から「日付の入力フォーマットを指定していない場合」で :ng: になる日付形式を探してみると、以下の3件が HIT

R7年1月1日
西暦2025/01/01
20250101181545

残りの5件だけならプレビューできました。

Qiita_017-04.jpg


でも、(8件)全部日付データなんだよな~

2.オプションの設定

「日付の入力フォーマット」の設定は「データ加工情報設定」画面の右端にある[オプション]タブでおこないます。

Qiita_017-05.jpg

ここで、入力ファイルの全レコード(7件)が :ok: になるよう、日付フォーマットを登録していきます。

EEYY年MM月DD日
eyy年mm月dd日
YYYY/MM/DD
YY/MM/DD
YYYY/mm/dd HH24:MI:SS
YYYY/mm/dd hh12:mi:ss am
西暦YYYY/MM/DD
YYYYMMDDHHMISS

Qiita_017-06.jpg

入力ファイルの8件全部が、日付として判定されました。

今回の検証はここまで:heart_exclamation:

以下の「日付フォーマットで指定可能な文字列一覧」を見ながら、上記以外に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省略" にして、以下のマッピング設定で出力してみました。

Qiita_017-07.jpg

出力ファイルプレビューの結果:
 出力フォーマットの通り、8件すべて問題なく出力されました。

6
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?