キーブレイク処理とは、レコード内のキーと呼ばれる項目に着目し、何らかの処理を行うことです。具体的には、同一のキーを持つレコードについて集計したり、キーが異なるレコードだけを出力したりする処理などを指しています。
キーブレイク処理の「キー」とは、レコードを識別(identify)するもので、キーが同一であれば、同一の内容を示し、キーが異なれば異なる内容を示すための指標となる項目です。たとえば、顧客データの中の顧客番号は、顧客を識別するための番号です。顧客番号が同じであれば同一の顧客を示し、顧客番号が異なれば異なる顧客を示すことになりますが、このような項目をキー項目と呼びます。
それでは、Perlを使ったときにキー項目をどうやって識別していけばいいのでしょうか。
人間が判断するのであれば、どれとどれが同じかということは一目瞭然です。ところが、コンピュータでは、1件ずつ入力処理を行いますので、現在読み込んでいるデータをもとに、キー項目が前のデータと同じかどうかを判断するしかありません。このため、事前にキー項目の順にデータを並べ替えておき、現在読み込んでいるデータとその1件前の保存しておいたデータを比較して、同じかどうかを判断する方法を採ります。
Perlでは、繰り返し処理を行う命令として、「2-1.基本処理」で紹介したwhileループのほかにuntilループがあります。どちらを使うかによって、スクリプトの構造が変わりますので、両者の基本的な構造について、それぞれ分けて紹介していきましょう。
また、キーブレイク処理は大きくわけて、「同一キーの1件目を出力する場合」、「同一キーの最終レコードを出力する場合」、「同一キーの値を合計する場合」、「同一キーの件数をカウントする場合」の4つがありますので、それぞれの基本構造も紹介します。
このうち、「同一キーの1件目を出力する場合」とは、それぞれのキー項目ごとに処理日時順にデータが並んでいるような場合、最も古いデータを取り出すような処理に利用します。また、各キーのどのデータでもよい場合もこの方法を利用します。
「同一キーの最終レコードを出力する場合」は、それぞれのキー項目ごとに処理日時順にデータが並んでいるような場合、最新のデータを取り出すような処理に利用します。
前にも述べましたが、キーブレイク処理は入力レコードがキー項目順に並べ替え(sort:ソート)されていることが前提になりますが、Windowsでは、Unixのように便利なsortコマンドがシェルプログラムにありません。
そこで、別な方法で事前に並べ替えを行うしかないのですが、一つはExcelやAccessに読み込んで並べ替えをする方法があります。また、Perlを利用して、並べ替え処理(ソート処理)を行う方法もあります。このうち、Perlを利用して並べ替えを行う方法については、[2-4.ソート処理]で述べていきます。
最後にハッシュを利用して、同一キーごとに集計を行う方法を紹介します。この方法では、事前に並べ替えをせずに集計ができる点で上記8つの方法とは全く異なる方法です。また、スクリプトも一般的には小さくすることができます。
untilを利用した繰り返し処理で各キーの1件目を出力するスクリプトについて解説します。
untilを利用した繰り返し処理で各キーの最終レコードを出力するスクリプトについて解説します。
untilを利用した繰り返し処理で各キーごとの合計結果を出力するスクリプトについて解説します。
untilを利用した繰り返し処理で各キーごとレコード件数を出力するスクリプトについて解説します。
whileを利用した繰り返し処理で各キーの1件目を出力するスクリプトについて解説します。
whileを利用した繰り返し処理で各キーの最終レコードを出力するスクリプトについて解説します。
whileを利用した繰り返し処理で各キーごとの合計結果を出力するスクリプトについて解説します。
whileを利用した繰り返し処理で各キーごとレコード件数を出力するスクリプトについて解説します。
ハッシュを利用して各キーごとの合計結果を出力するスクリプトについて解説します。