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】データ加工やってみた!データ抽出〔変数を添えて〕

Last updated at Posted at 2025-10-24

はじめに

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

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

データのネタが切れた :frowning2:

郵政省や農林水産省のHPから、一般公開されているデータをダウンロードして、DataMagic の機能を色々確認していますが、なかなか検証に適したデータが見つからない。

なので、DataMagic を使って、検証用のデータを作ることにしました。

データを抽出してみる

農林水産省の青果物卸売市場調査のページから、主要卸売市場計データ をダウンロードして内容を確認してみると、以下の2つのコードテーブルが取り出せそうです。

  • 品目名 ー 品目コード
  • 産地名 ー 産地コード

:large_blue_diamond: 青果物卸売市場調査のページからダウンロードした主要卸売市場計データ(一部掲載)
評価版DL138.JPG

流石に、2つのコードテーブルを一度に作成することはできないので、今回は〝品目〟のコードテーブルを作成してみます。
〝品目〟を選んだ理由は、このファイルが 品目コード順にソートされている からです。

〝品目〟のコードテーブルを作成

:one: 抽出条件を設定

まず、コードテーブルの中身が

品目コード,品目名
30000,野菜総計
30100,だいこん
30200,かぶ
 ~中略~
38500,しめじ
39000,その他の野菜
39100,輸入野菜計
39200,他の輸入野菜

って感じで、品目コードと品目名がユニークになるように抽出条件を設定します。

品目データを出力するタイミングとしては、前と今で 品目コードが変わったとき ですよね
(そのために、品目コードでソートされたデータである必要があります)。

今回は変数を使用して、コードを比較するための 前の品目コード を一時保管します。

ところで、変数ってどこで設定するの :thinking::question::interrobang:

実は、データ加工画面の右上に 薄っすら見えてるアイコン がありまして、そのアイコンをダブルクリックすると、画面下に変数設定のタブが出てくるんです。
なお、この 薄っすらアイコン は、変数が登録されていると、くっきり表示されます。

:two: 変数を用意

変数設定で1行追加し、変数名を付けて変数タイプは文字列。初期値なしで用意します。

評価版DL139.JPG

:three: 抽出条件を設定

a) 抽出条件のアイコンをダブルクリックして、条件設定タブを開きます。

b) 追加 をクリックして[条件設定詳細]画面を開き、以下の内容で設定する。

比較元:入力項目
指定方法 = 項目名:品目コード
演算子:!=
比較先項目の値が比較元項目の値と異なる
比較先:変数
変数名 = 品目コード比較用の変数名(下図では:前品目コード)

c) OK をクリックすると、追加した条件が 条件式に AND で追加されます。

評価版DL155.JPG

:four: 変数へ値を代入

抽出条件と一致したら、変数に〝今〟の品目コードを代入するように設定します。

やり方は至極簡単♪

抽出条件のアイコンを右クリックして「変数代入の追加(V)」を選択すると、ニョキッと生えてくる(?)謎の [ X ] をクリックすると[変数代入設定]画面が表示されます。
後は、変数に出力(代入)したい値=すなわち〝品目コード〟と関係線を引くだけです。

評価版DL156.JPG

:five: 入力設定 と 出力設定 と マッピング情報設定

入力設定はCSV形式で、IDは項目取り込みで作成したものを設定。
出力設定はCSV形式で、IDは省略(勿論レイアウト作ってもOKです)。
出力項目は2つで、品目コードと品目名を出力します。

評価版DL157.JPG

:six: 出力結果を確認

一応、想定通りの品目マスターが出来上がりました

評価版DL158.JPG

補足

出力結果を見て、何か気付きませんか。

そうです。出力側はIDを省略してるのに、1行目にタイトルが出力されているのです。
(出力側でIDを省略すると「タイトル行を出力する」のチェックは活性化されません)

ではなぜ、タイトル行が出力されているのか。

種明かしをすると、
入力設定で「ヘッダレコード設定」にチェックを入れていないから。

なので、入力ファイルの1行目から、有効なデータとして扱われているので、結果として〝品目コード〟〝品目名〟なるタイトルのレコードが1行目に出力される結果となりました。

以上です。

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?