0
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】データ加工やってみた!ステップ実行をやってみた

0
Last updated at Posted at 2026-02-14

はじめに

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

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

今回の課題

最近のノーコード、ローコードのアプリにはよく付いている、デバック機能。
勿論、DataMagic にも ステップ実行 と言う名称で、しっかり標準装備されています。

Qiita_025-08.jpg

私は、エラーコードから地道に解決!がモットー(と言うより、そんなに込み入った使い方していない :sweat_smile:)なので、今まで使ったことは無かったのですが、これを機に使ってみました。

題材

何度か使用している農林水産省の「青果物卸売市場調査(日別調査)〔外部リンク〕」のデータを加工(数量*価格の計算)して出力する処理でステップ実行を試してみようと思います。

入力データ

今回は農林水産省の「青果物卸売市場調査(日別調査)〔外部リンク〕」の、主要卸売市場計の果実のCSVデータを使用します。

Qiita_025-01.jpg

レイアウト情報

入力ファイル用は、入力データの1行目が「タイトル行」なので、項目取り込みの機能を使ってCSV情報を登録します。
Qiita_025-02.jpg

項目取り込みを使ったCSVの情報登録については、数値項目演算を取り上げた投稿で説明しているので、そちらをご参照ください。

出力ファイル用は、上記で作った入力ファイル用のIDをコピーし、計算結果を出力する項目を追加して、以下の『項目名』で登録します。

Qiita_025-03.jpg

データ加工

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

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

入力設定

形式
CSV
レイアウト
ID = 入力ファイル用に登録したID
ファイル名 = 入力ファイル名
ヘッダーレコードの設定 = :white_check_mark: して、1 ~ 1 行

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

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

出力設定

形式
CSV
レイアウト
ID = 出力ファイル用に登録したID
ファイル名 = 出力ファイル名
ヘッダーレコードの設定 = :white_check_mark: して、1 ~ 1 行

3.抽出条件の設定

今回は処理の流れを確認するために、「産地名が無い(空文字)のもの」を条件に加えます。

Qiita_025-04.jpg

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

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

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

品目名、数量、価格は、入力項目と紐づけます。
合計金額の項目は、以下の内容で登録

:one: 数値演算(演算式)を追加します。
  ・合計金額     = \$INAME(数量) * \$INAME(価格)
  ・合計金額(税込) = \$INAME(数量) * \$INAME(価格) * 0.8
:two: 出力フォーマットの形式 = 数字文字列
:three: 有効小数部桁数 = 2桁 で 指定する

Qiita_025-05.jpg

6.データ加工処理

すべての設定が終わったので、 最後にIDを登録して、現在表示されている内容で、ステップ実行をやってみます。

ステップ実行

1.ステップ実行の目的

操作マニュアルによると、ステップ実行の目的は以下の2つらしい。

意図するように変換できなかった原因の早期特定
DataMagicのデータ加工のノウハウの習得

「ノウハウの習得」は、時間と興味が有るときにやって貰うとして、主な使用目的は「変換できなかった原因の早期特定」ですよね。

2.ステップ実行の操作

ステップ実行では、以下の2つを使うようです。

ブレークポイント(中断点)

データ加工の処理を中断したい任意の個所に、ブレークポイントを設定して[開始]をクリックすると、中断した時点まで処理が進み、その時点のデータの状態を参照できます。
ただし、処理を中断する条件として設定できるのは、レコード数のみです。

ステップ実行を操作するボタン

各ボタンの説明は以下の通りです。

開始
ステップ実行を開始します。
開始後は[続行]ボタンに表示が変更されます。
続行
次のブレークポイントまで処理を続行します。
※ブレークポイントの設定が無いと、最後までイッキに処理が進みます。
停止
ステップ実行を停止します。
※ステップが進んでいても、開始の状態(最初)に戻ります。
ステップイン
次の処理を行います。
次の処理が下の階層の処理であれば、下の階層へ遷移します。
ステップアウト
一つのまとまりの処理をスキップします。
現階層から上の階層の次の処理へ遷移します。
ステップオーバー
次の同じ階層の処理に移動します。
次の処理が下の階層の処理であっても、現階層の次の処理に遷移します。
ヘルプ
オンラインヘルプを表示します。
閉じる
画面を閉じます。
※実行中にクリックすると『ステップ実行を中止します。よろしいですか?。』の確認画面が表示されます。

私はこの説明を読んでも、ステップイン / ステップアウト / ステップオーバー の動きが、正直ピン:bulb:とこない。

実践あるのみ!ってことで、とりあえず動かしてみました。

3.ステップ実行を開始

:clock1:[ステップ実行]をクリックすると、以下の画面が表示されます。

Qiita_025-06.jpg

次に、[開始][ステップイン][ステップオーバー]のいずれかをクリックすると、「データ加工実行」の画面が表示されますので、[実行]をクリックします。
すると、ステップ実行が「(実行中)」になり、押せるボタンが増え、

Qiita_025-07.jpg

ステップツリーの最初『初期処理』の階層:実行開始 が反転し、「ステップ実行開始」が表示されます。

Qiita_025-09.jpg

ステップイン

:clock2: 次のクリックで『入力』の階層:入力ファイル に遷移します。
実行対象のエリアにレイアウト定義を表示して、入力データからレコードを読み込む準備をします。

Qiita_025-10.jpg

:clock3: 次のクリックで :arrow_lower_right: 階層: 項目 に遷移します。
入力データからレコードを読み込み、クリックに合わせて入力項目と値を一つずつ確認していきます。

Qiita_025-11.jpg

:clock4: 入力項目と値をすべて確認したら、:arrow_upper_left: 階層:入力ファイル に遷移します。
実行結果で入力したレコードの値を表示します。

Qiita_025-12.jpg

:clock5: 次のクリックで『抽出条件』の階層:条件論理式 に遷移します。
実行対象のエリアに抽出条件を表示して、条件判定をする準備をします。

Qiita_025-13.jpg

:clock6: 次のクリックで :arrow_lower_right: 階層:条件 に遷移します。
クリックに合わせて、読み込んだレコードを条件式に当てはめ、判定します。

Qiita_025-14.jpg

:clock7: 条件式をすべて確認したら、:arrow_upper_left: 階層:条件論理式 に遷移します。
実行結果で判定結果を表示します。

Qiita_025-15.jpg

:clock8: このレコードの評価結果は TRUE なので、次のクリックで『出力』の階層:出力ファイル に遷移します。
実行対象のエリアにレイアウト定義を表示して、レコードを出力する準備をします。

Qiita_025-16.jpg

なお、評価結果が FALSE の場合は :clock2:『入力』の階層に遷移して次のレコードを処理します。

:clock9: 次のクリックで :arrow_lower_right: 階層: 項目 に遷移します。
クリックに合わせて、レコードの値をマッピングした出力項目にセッティングしていきます。

Qiita_025-17.jpg

:clock10: 今回は、4項目目、5項目目に、数値演算や出力フォーマットの編集をしていますが、その編集工程もしっかり確認できます。

Qiita_025-18.jpg

Qiita_025-19.jpg

Qiita_025-20.jpg

:clock11: 出力データの作成が完了したら、出力先ファイルに出力して :clock2:『入力』の階層に遷移し、次のレコードを処理します。

Qiita_025-21.jpg

:clock12: すべての処理が終わったら、処理終了を確認する画面が表示されます。

Qiita_025-22.jpg

ステップアウト

[続行]と同じ :interrobang: なんじゃないか :thinking: と言いたくなる動きをします。

違いは、クリックした階層からブレークポイントまで爆走するのが[続行]。
とりあえず、現階層から上の階層へ遷移してから爆走するが[ステップアウト]ってところでしょうか。

ステップオーバー

次の同じ階層の処理に移動するので、今回の場合は以下の階層を遷移するようです

  • [ステップイン]の :arrow_lower_right: の階層はスキップします。
  • 但し、:arrow_lower_right: の階層に居るときにクリックされた時は、その階層の中を[ステップイン]と同じように遷移します。
  • 上の階層(『入力』は 階層:入力ファイル、『抽出条件』は 階層:条件倫理式、『出力』は 階層:出力ファイル)に居る時は、この階層を行ったり来たりして、下の階層には遷移しません(スキップします)。

デバック機能を備えたアプリって、たくさんありますが、中身は "ログの垂れ流し" ってことないですか。

その点、DataMagic は、自分が担当する処理部分(接続したDB側での処理中に出たエラーは、DBが返してきた結果をそのまま出力するしかないで)は、視覚的にも分かり易く「ココが問題」って教えてくれます。

エラーの原因解明や、思い通りの処理結果が得られない場合の解決に、使ってみては如何でしょうか。

以上です。

0
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
0
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?