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-03

はじめに

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

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

今回の課題

扱うデータの中には、日付項目を含むデータも多く存在します。

伝票系のデータなんかを扱う場合は、〝何日後〟とか〝何か月後の月末〟なんて特定の日を算出するケースもしばしば。

〝何営業日後〟って計算なんかは、曜日や祝日を考慮する必要があるので、祝日データを用意したり、関数やIF文などを駆使する必要がありますが、ここでは単純な設定で対応できる、〝何日後〟〝月初日〟〝月末日〟 の出力を日付演算でチャレンジしてみます。

入力データ

ここでは以下のCSV形式のデータを使用します。

検証用日付データ
"検証用日付"
"2024/01/01"
"2025/01/01"
"2024/02/28"
"2025/02/28"
"2024/03/15"
"2025/03/15"
"2025/06/15"
"2025/12/31"

レイアウト情報

入力、出力共にCSV形式 & ID省略で検証します。

データ加工

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

入力形式=CSV、漢字コード種=SHIFT-JIS、ID=省略

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

レイアウト

ID:
省略
区切り文字、囲み文字 は共に初期値 で設定
ファイル名:
入力データをコピペして作った検証用日付データのファイルを指定
ヘッダレコード設定:
チェック :heavy_check_mark: を入れて、1 ~ 1 行に設定

Qiita_016-01.jpg

2.出力ファイルエリアの編集

出力形式=CSV、漢字コード種=SHIFT-JIS、ID=省略

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

レイアウト

ID:
省略
区切り文字、囲み文字 は共に初期値 で設定
ファイル名:
出力ファイル名を指定

Qiita_016-02.jpg

3.抽出条件の設定

初期設定のまま使用

4.関係線の設定1〔抽出条件と出力ファイル〕

抽出条件のアイコンを選んで、出力ファイルのアイコンの上にドラッグ&ドロップし、アイコン間の関係線をつなぎます。

5.関係線の設定2〔入力項目と出力項目をマッピング〕

出力情報設定項目の「種別=日付演算」の演算式に使える項目(参照値一覧以外)は以下になります。

項目 内容
today、now データ加工開始日時を表します。すべてのレコードに対して同一の値になります。
tomorrow todayの24時間後を表します。
yesterday todayの24時間前を表します。
+(プラス) 日付データの加算を行います。日数・時間の前に付けて使用します。
-(マイナス) 日付データの減算を行います。日数・時間の前に付けて使用します。
ago 「-(マイナス)」と同様に日付データの減算を行いますが、日数、時間の後に付けて使用します。
next 「+1」と同じです。
last 「-1」と同じです。
数値 数値を指定します。常に「単位」を付けて使用します。
単位 常に「数値」に続けて使用します。以下のものが使用できます。
 year(年)、month(月)、fortnight(2週)、week(週)、day(日)、
 hour(時)、minute(分)、second(秒)

何日後

入力データの日付の+1日後(翌日)を演算して出力します。

演算結果を比較するために、出力項目は2つ追加。

  • 1項目目 = 入力データの値をそのまま出力(関係線を結ぶだけ)。
  • 2項目目 = 以下のように出力情報の設定を行います
種別:
日付演算
演算式:
$INUM(1) + 1day

Qiita_016-03.jpg

月初日

入力データの日付の翌月1日を演算して出力します。

入力データから直接月初日を出力するのは難しいので、変数を使います。
変数のタイプは文字列で作成します。

Qiita_016-04.jpg

次に、抽出条件のアイコンに変数を追加して変数代入設定を行います。

出力項目の〝月初〟に出力情報を2つ追加し
1つ目の出力情報には、入力項目から以下の設定で年月の部分を抽出します。

種別:
入力項目
関数:
FORMAT_DATE{YYYY/MM}

2つ目の出力情報には、固定値で1日を指定します。

種別:
固定値
区分:
固定文字列
値:
/01

Qiita_016-05.jpg

変数代入設定が終わったら、マッピング情報設定で各項目をマッピングしていきます。

演算結果を比較するために、出力項目は2つ追加。

  • 1項目目 = 入力データの値をそのまま出力(関係線を結ぶだけ)。
  • 2項目目 = 以下のように出力情報の設定を行います
種別:
日付演算
演算式:
$VAR(月初) +1month

Qiita_016-06.jpg

月末日

入力データの日付の翌月の月末日を演算して出力します。

月末日はその月によって 30 だったり 31 だったり。
2月は閏年かどうかで 28 か 29 になったりで、月初=01 のように固定値を当てはめることはできません。
が、この記事に興味を持たれた方なら、既にお気づきだと思いますが。

 月末日 = 翌月01日の前日

なんですよね。

なので、設定はほとんど 月初日 と同じで、出力項目の演算式を以下に変えるだけ。

種別:
日付演算
演算式:
$VAR(月初) +2month -1day

Qiita_016-07.jpg

6.データ加工処理

すべての設定が終わったので、 最後にIDを登録して、データ加工を実行します。

上記の説明では、〝何日後〟〝月初日〟〝月末日〟の出力を、別々のデータ加工として説明しましたが、ここでは3つの設定を一つにして出力した結果を。

Qiita_016-08.jpg

以上です。

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?