■Windows版Rubyの細道・けもの道

■ナビゲータ

[南北館(最初のメニュー)]

  1. [Windows版Rubyの細道・けもの道]
    1. [1.準備編]
    2. [2.基本編]
      1. [2-1.基本処理]
      2. [2-2.キーブレイク処理]
      3. [2-3.マッチング(照合)処理]
        1. [2-3-1.マッチング(照合)処理の概要]
        2. [2-3-2.1対1マッチング(照合)]
        3. [2-3-3.マージ処理]
        4. [2-3-4.1対nマッチング(照合)]
        5. [2-3-5.ハッシュを使った1対1マッチング(照合)]
        6. [2-3-6.ハッシュを使ったマージ処理]
        7. [2-3-7.ハッシュを使った1対nマッチング(照合)]
      4. [2-4.ソート(並べ替え)処理]
      5. [2-5.パターンマッチ処理]
    3. [3.応用編]
    4. [スクリプトと入力データのサンプル]

2.基本編

2-3.マッチング(照合)処理

マッチング(照合)処理とは、2つのファイルを照合する処理です。レコードの中にレコードを識別(identify)するためのキーと呼ばれる項目がある場合、このキーに基づいて、2つのファイルを照合します。ファイルには、以下のような2種類に大別することができます。マッチング(照合)処理は、この2種類のファイルを照合させることがよくあります。

1.「ひと・もの」系ファイル

「商品」などのように「もの」を表すファイルのほかに「顧客」「社員」などのように「ひと」を表すファイルも含みます。一般的に「マスタファイル」と呼ばれます。

2.「こと」系ファイル

「受注」「売上」「仕入」などのように「こと」を表すようなファイルです。一般的に「トランザクションファイル」と呼ばれます。

(注)「在庫」ファイルは、上記のどちらに該当するかはそれぞれのケースによって異なります。在庫している商品という観点で各商品ごとに在庫数量や在庫金額を保持している場合は、「マスタファイル」と呼び、在庫の入出庫のつど、記録している場合は、「トランザクションファイル」と呼ぶことが多いようです。

照合された結果は、以下のような3つのファイルに出力されます。

1.「マッチング(照合)ファイル」

「マスタファイル」にも「トランザクションファイル」にも同一のキーが存在した場合の出力ファイル

2.「マスタオンリーファイル」

「マスタファイル」だけにキーが存在した場合の出力ファイル

3.「トランザクションオンリーファイル」

「トランザクションファイル」だけにキーが存在した場合の出力ファイル



「マスタファイル」は、レコードごとにキーの内容が異なり、同じ内容のキーが存在することはありません。これに対し、「トランザクションファイル」は、レコードごとにキーの内容が異なることもありますが、同じ内容のキーが複数存在することがあります。この場合、「トランザクションファイル」のキーが複数存在するかどうかによって、マッチング(照合)処理の種類は以下のように大別できます。

「1対1マッチング(照合)」

「マスタファイル」のキーに該当するキーが「トランザクションファイル」にも存在する場合、1レコードにしかない場合のマッチング(照合)処理です。「トランザクションファイル」のキーがレコードごとに異なっています。

「1対nマッチング(照合)」

「マスタファイル」のキーに該当するキーが「トランザクションファイル」にも存在する場合、2レコード以上存在することがある場合のマッチング処理です。「トランザクションファイル」のキーは複数のレコードで同一の場合があります。

「マージ処理」

通常の「マッチング(照合)処理」が出力結果を3つに分けるのに対し、「マスタファイル」と「トランザクションファイル」の両方のファイルから統合した1つのファイルを作成する処理です。

(注)「n対mマッチング(照合)」処理は、作成することができません。理由は、マスタファイル側をキーごとに1件にする必要があるからです。n件のままでは、どれとどれを対応させるかが不明確なので、照合を行うことはできません。

Windowsのソフトウェアでこのような処理を行う場合、Access等のデータベースソフトではクエリーを使って行いますが、一度に上記のような3つの出力ファイルは得られません。3つのクエリーを作成しておいて、ユニオンクエリーで一つにまとめるしかありません。また、VBA(Visual Basic for Application)を利用して、プロシジャーを作成し、上記のようなマッチング(照合)処理を行えば、できないわけではありませんが、Accessの利用者としては、おそらく中級から上級レベルのユーザに限定されてしまうでしょう。また、Excel等の表計算ソフトであれば、「vlookup」等の関数を利用することになりますが、データ数が多い場合は、それだけファイルの容量も大きくなり、扱いが困難になります。また、最近では、どのようなソフトからでもCSVファイルなどのテキストデータに出力することが可能で、元データ自体がテキストデータである場合も少なくありません。この点から考えてもPerlやRubyなどのスクリプト言語を利用したマッチング(照合)処理は有用性が高いのです。

このマッチング(照合)処理を行う場合、あらかじめ、キーの順に「マスタファイル」と「トランザクションファイル」の両方が並べ替えておく必要があります。この並べ替え(ソート)処理については、次の「2-4.ソート(並べ替え)処理」で説明します。

目次

マッチング(照合)処理の具体的な内容については、以下の各項目を参照していただきたい。

  1. [2-3-1.マッチング(照合)処理の概要]
  2. マッチング(照合)処理の概要について解説します。

  3. [2-3-2.1対1マッチング(照合)]
  4. 両方のファイルに共通する「キー」項目が同一になっているレコードがそれぞれ1件ずつしかない場合のマッチング(照合)処理について解説します。

  5. [2-3-3.マージ]
  6. 両方のファイルを「キー」項目順に1つファイルにまとめるマージ処理について解説します。

  7. [2-3-4.1対nマッチング(照合)]
  8. 一方のファイルで「キー」項目が同一になっているレコードが複数ある場合のマッチング(照合)処理について解説します。

  9. [2-3-5.ハッシュを使った1対1マッチング(照合)]
  10. 両方のファイルに共通する「キー」項目が同一になっているレコードがそれぞれ1件ずつしかない場合のマッチング(照合)処理をハッシュを使って行う方法について解説します。

  11. [2-3-6.ハッシュを使ったマージ処理]
  12. 両方のファイルを「キー」項目順に1つファイルにまとめるマージ処理をハッシュを使って行う方法について解説します。

  13. [2-3-7.ハッシュを使った1対nマッチング(照合)]
  14. 一方のファイルで「キー」項目が同一になっているレコードが複数ある場合のマッチング(照合)処理をハッシュを使って行う方法について解説します。



Copyright (c) 2004-2013 Mitsuo Minagawa, All rights reserved.