事例のご紹介|CoSort

Webログ分析サンプル 巨大なWebログの分析

データウェブハウスのステージングとレポーティング

ウェブログのデータウェアハウスであるデータウェブハウスの効率的なデータ変換にもCoSortが利用できます。 高性能なソート機能、データ変換機能を使ってBIツールへのデータ受け渡しができます。 また、ダッシュボードなどのBIツールを使わずに、 CoSortの柔軟なファイル出力機能を使ってHTML形式のレポートやXML出力もできます。

目次

ウェブ・アクセスログ分析ソリューション

大量のウェブ・アクセスログのデータウェアハウス(データウェブハウス)構築と分析レポートの作成

ウェブサイトのクリックストリーム(クリックの履歴)のログデータは保存・管理され、 分析やレポート作成に使われます。 これらのログはユーザがウェブサイトを訪問したときのマウスクリックで生成されるレコードの集まりです。 この情報は、ウェブサイトのナビゲーションの改善やリンク設定、バナー広告、ページコンテンツ、 Eコマースのキャンペーンなどの効果向上のために分析されます。
クリックストリームのデータはかなりボリュームが大きいので、 CoSortのようなデータ削減ができるツールはデータ処理の必須ツールです。 データウェブハウスを構築して、分析レポートを作成するプロジェクトにおいて、 指定された期限までにその目的を達成するために、 CoSortのソートコントロール言語(SortCL) プログラムを活用することができます。 このページに事例紹介があります。

IPアドレス

CoSortはIP_ADDRESSというデータタイプによりIPv4アドレスを照合、変換、グループ化することができます。 ソート時には、各サブフィールドは左端のサブフィールドから数値で比較されます。 それに続くサブフィールドは、そこまでのサブフィールドが同じ場合に比較されます。

例として、次の入力ファイルns.txtは会社名とそれに対応したIPアドレスを含んでいます:

CoSort.com;216.97.193.101
cnn.com;64.236.24.12
aa.com;144.9.72.134
ibm.com;129.42.19.99
nytimes.com;199.239.136.200
cornell.edu;132.236.56.6
fedex.com;199.81.202.50

IPアドレスでソートするには次のジョブスクリプトを実行します:

/INFILE=ns.txt
    /FIELD=(company,pos=1,sep=';',ASCII)
    /FIELD=(ip,pos=2,sep=';',IP_ADDRESS)
/SORT
    /KEY=ip
/OUTFILE=ns.out

出力ファイルns.outは次のようになります:

cnn.com;64.236.24.12
ibm.com;129.42.19.99
cornell.edu;132.236.56.6
aa.com;144.9.72.134
fedex.com;199.81.202.50
nytimes.com;199.239.136.200
CoSort.com;216.97.193.101

データウェブハウスの構築

SortCLの強力なレコード選択・除外機能が、ウェブログの中から必要なデータを抽出したり、 変換の前処理として大量データを削減したりするために使われます。 IPアドレスのような似通ったデータはマージして一つの分析ファイルにまとめることができます。 行をソートすることによって、集計の速度と、同時に2つのファイルの一致したレコードを連結する速度とが向上し、 データベースにシーケンシャルにロードされるのでロードの速度も向上します。

レポーティング

データウェブハウスの構築の際においてと同じく、 レポーティング(ウェブブラウザへの出力を含む)においても、 CoSortは、クリックストリームデータを分析・操作・レポート出力する処理を支援します。 CoSortがメタデータを提供していることと、 標準的なクリックストリームの保存フォーマットとIPアドレスデータの処理に対応していることによって、 それは可能となっています。

NCSA共通ログフォーマット (CLF)

CoSortは、NCSAの三つのログフォーマット、すなわちCommon(共通)、Referral(参照)、 Agentのそれぞれに対応したSortCLメタデータのテンプレートを用意しています。 これらを使えば最小限のスクリプトの追加編集でログファイルを処理できます。 SortCLとCLFの追加情報については、このページにあります。

W3C拡張ログフォーマット (ELF)

CoSortのelf2sclプログラムにより、ELFデータ記述(ヘッダ)をSortCLデータ定義ファイル (.ddf) のフィールドレイアウトに変換できます。 この定義ファイル(メタデータ)を使えば最小限のスクリプトの追加編集で、 ログファイルを処理できるようになります。 変換された定義ファイルに基いてジョブスクリプトを作成したら、 そのスクリプトの中で/PROCESS=ELFと宣言していることにより、 実際のログデータだけを(つまりヘッダ情報はスキップして)SortCLに処理させることが可能です。 SortCLとELFの追加情報については、このページにあります。

目次に戻る

目次へHTMLファイルで出力

大量のウェブ・アクセスログのデータウェアハウス(データウェブハウス)構築と分析レポートの作成

クリックストリームデータに対してだけではなく、 レポート作成全般においてプレゼンテーション能力をさらに強化するために、 CoSortのソートコントロール言語(SortCL)は、 ウェブブラウザでオープンして表示できるHTML形式でレポートを出力できます。 出力ファイルの書式を指定するステートメント内に、HTML書式を記述できます。 もちろん、HTMLファイルを出力するSortCLジョブにも、 レポートを出力や書式設定を行う一般的なSortCL記述を組み込むことが可能です。
出力ファイルを構成するテキスト本文や内部変数(ページ番号やタイムスタンプ等)の さまざまな組み合わせでレポートをカスタマイズするのに、 /DATA, /HEADREC, /FOOTREC ステートメントなどのSortCLレイアウトステートメントを使うことができます。 カスタマイズして美しいレポートにするために、 レポートの書式設定は出力レコードそれ自体のどこにでも適用できます。 ヘッダやフッタまたはその両方の中にも記述できます。

例として次の入力ファイルsales.datが与えられたとします。

N. AMERICA United States,13432444
EUROPE,France,834422
EUROPE,England,123456
AFRICA,Congo,153453
EUROPE,Spain,434422
EUROPE,Sweden,27756
AFRICA,Egypt,23453
N. AMERICA,Canada,31332444
N. AMERICA,Mexico,93444
EUROPE,Germany,234422

次のSortCLジョブスクリプトは、ウェブブラウザ上で表示可能なHTMLレポートファイルを出力します。

/INFILE=sales.dat
    /FIELD=(Continent,sep=',',pos=1)
    /FIELD=(Country,sep=',',pos=2)
    /FIELD=(Sales,sep=',',pos=3,numeric)
/SORT
    /KEY=(Continent,ASCENDING)
    /KEY=(Country,DESCENDING)

/OUTFILE=report.html       # summary records
/DATA="<TR>\n<TD><B><FONT SIZE=+2 COLOR='BLUE'>"
/FIELD=(Continent)
/DATA="</FONT></B></TD>\n<TD align=right><B><U> \
 <FONT SIZE=+2>"
/FIELD=(Sales,size=15,currency)
/DATA="</FONT></U></B></TD>\n</TR>\n"
/SUM Sales BREAK Continent
/FOOTREC="</TABLE><BR>\nBy<B>%s</B> as of %s. \
 <HR></BODY>\n</HTML>",USER,AMERICAN_TIMESTAMP

/OUTFILE=report.html     # detail records
/HEADREC="<HTML><HEAD>\n<TITLE>HTML produced by \
 SORTCL</TITLE>\n</HEAD>\n<BODY><H2>Summary of \
  Sales by Continent</H2>\nSales under $100,000 \
  are shown in red.\n <TABLE CELLPADDING=4      \
  CELLSPACING=1 BORDER COLS=5>\n"
/DATA="<TR>\n<TD><B>"
/FIELD=(Country)
/DATA="</B></TD>\n<TD align=right>"
/DATA=(IF Sales LT 100000 THEN "<FONT COLOR='RED'>")
/FIELD=(Sales, size=15, currency)
/DATA=(IF Sales LT 100000 THEN "</FONT>")

これは、ウェブブラウザでオープンされたときに次のような表示となるreport.htmlを生成します。 Continent(大陸)の順でソートされ、Country(国)は逆順でソートされています。

Summary of Sales by Continent

Sales under $100,000 are shown in red.

Egypt

$23,453.00

Congo

$153,453.00

AFRICA

$176,906.00

Sweden

$27,756.00

Spain

$434,422.00

Germany

$234,422.00

France

$834,422.00

England

$123,456.00

EUROPE

$1,654,478.00

United States

$13,432,444.00

Mexico

$93,444.00

Canada

$31,332,444.00

N. AMERICA

$44,858,332.00

By foo as of May/29/2005 11:42:13 AM.

上記のスクリプトでは、/DATAステートメント内の(IF THEN ELSE)条件式は、文字色の変更で使われています。 表データ以外の表示を生成するために、HTMLの構文は、 書式ステートメントの中では引用符に囲まれて記述されています。 これら以外のすべてのSortCL記述は、CoSort SortCLのスクリプトでは一般的なものです。 それらはテキストベースのレポートを表示またはファイル出力するときに使われるものです。 最後に、フッタ中のユーザ名やアメリカ式タイムスタンプのような内部変数の使用方法にもご注目ください。

目次に戻る

拡張ウェブログフォーマット(ELF)用メタデータ変換ユーティリティ

ウェブログは、インターネットのあるページから他のページへ、 リンクをたどっているユーザのマウスクリックの履歴であり、 ウェブ閲覧行動のデータとして役立ちます。 このデータは、"クリックストリーム分析"あるいは"データウェブハウジング"のビジネスにおいて重要です。 これらのデータ操作処理においてCoSortが活用される理由は数多くありますが、そのうちの一つは、 一般的なウェブログフォーマットのための標準的なメタデータをサポートしている点です。 そのログフォーマットとは、W3C拡張ログフォーマット(ELF) とNCSA共通ログフォーマット(CLF)です。 CoSortのelf2ddf(拡張ログフォーマットをSortCLデータ定義ファイルへ変換する)ユーティリティは、 W3C ELFウェブログのヘッダ情報を解析して、 SortCLデータ定義ファイル(.ddf)を生成するメタデータ変換プログラムです。 .ddf中の、変換されたファイル名とフィールドレイアウトは、 SortCLスクリプトによって参照されるか、 あるいはSortCLスクリプトの中に直接ペーストされることが可能です。 このメタデータ変換のステップが、CoSortの高速な処理を可能にし、 データウェブハウスとレポート作成でのウェブログメタデータのレポート作成を容易にしています。
変換された.ddfは、/PROCESS=ELFステートメントを含むことに注意してください。 変換されたフィールドレイアウトに基づいてジョブスクリプトを作成すると、 .elf入力ファイルを処理するときにSortCLがヘッダ情報をスキップするようになります。 たとえばELFファイルの次のようなヘッダを検証してみましょう:

#Version 1.0
#Date: 12-Jan-2000 00:00:00
#Fields: time cs-method cs-url
21:24:23 GET /tak/far.html
12:21:16 GET /tak/far.html
17:45:52 GET /tak/far.html
14:57:34 GET /tak/far.html

コマンドライン上でelf2ddfを実行するとヘッダを解析して、 次のSortCLデータ定義ファイル(elf1.ddf)を生成します。

# SORTCL data definition file 'elf1.ddf' for ELF data
# Generated by elf2ddf.exe based on ELF header
# in "data.elf".
/FILE=data.elf
   /PROCESS=ELF
   /LENGTH=0
   /FIELD=(time, pos=1, sep=' ', EUROPEAN_TIMESTAMP)
   /FIELD=(cs_method, pos=2, sep=' ', ASCII)
   /FIELD=(cs_url, pos=3, sep=' ', ASCII)

この.ddfを編集してSortCLジョブスクリプト(.sclファイル)を作成して、.sclとして保存できます。 あるいは独自の.sclファイル内から、 /SPECIFICATION=elf1.ddfコマンド経由でこれらのレイアウトを呼び出すこともできます。

目次に戻る

CoSortでNCSA 共通(コモン)ログフォーマットを定義して操作

NCSA共通(コモン)ログフォーマットは、ウェブ閲覧活動データを保存するのに広く使われています。 データは、次の3つの独立したファイル(またはログ)に保存されます:

  • common(共通)ログまたはaccess(アクセス)ログ ? 基本情報
  • referral(参照)ログ - 参照情報(リンク元)のみ
  • agent(エージェント)ログ - エージェント情報のみ

CoSortパッケージには、 ソートコントロール言語(SortCL)用の3つのデータ定義ファイル(.ddf)のテンプレート(無料)が含まれています。 これらは上記3つのフォーマットに対応していて、 それぞれのファイルに含まれているフィールドレイアウトは次の通りです:

  • CLF_Access.ddf―共通ログファイルまたはアクセスログファイルのSortCLフィールドレイアウト
  • CLF_Referral.ddf―SortCLフィールドレイアウトは、参照ログファイルのためのメタデータを提供
  • CLF_Agent.ddf―エージェントログファイルのためのSortCLフィールドメタデータ

これらの.ddfファイルは集中処理的に参照されます。 データ操作やレポート作成の際に、 それらのフィールドレイアウト定義をSortCLジョブスクリプトファイル内に直接コピーすることもできます。
CoSortが、ウェブログ・メタデータをどのようにサポートしているかの詳細については、 ソリューション:ファイル変換>CLF および ソリューション:ファイル変換>ELFを参照してください。

目次に戻る

クリアで簡潔な集中処理ができるメタデータのリポジトリ

CoSortのソートコントロール言語(SortCL)プログラムは、データ共有のために、 フィールドレイアウトやレコードフィルタリングのロジックなどの関連するスクリプト部分を、 外部的に定義して保存し、外部参照できるようにしています。 多くのジョブやユーザで別々のジョブにおいて、 そのような外部定義ファイルを利用しようとする開発環境では、 このメタデータ・リポジトリの再利用はもっとも効率的な開発手法です。 SortCLジョブスクリプト(.sclファイル)内で参照されると、 このリポジトリのタイプはデータ定義ファイル(通常は.ddf拡張子のファイル)として参照されます。
SortCL.ddfには、 /FIELDレイアウトに関連して1つまたはそれ以上の/FILE[*1]ステートメントが含まれています。 /FIELDレイアウトは、.sclファイル内でそのフィールド・レイアウトが入力か出力のどちらかとして解釈されます。 これらのファイルは、またファイルに規定され、ジョブとは独立性を持つ付随的な属性も含んでいます。 この属性とはフィールドレベルまたはレコードレベルの条件、派生したフィールドステートメント、 レポート書式設定などです。
.sclファイル内の/SPEC=filename.ddfステートメントは、スクリプトの中のそのポイントで、 ジョブの中に.ddfの内容の全体(または一部)を取り込むために使われます。 たとえば、chiefs.ddfという.ddfファイルが次のような内容だとします:

# chiefs.ddf
/FILE=chiefs
   /FIELD=(president,POS=1,SIZE=22)
   /FIELD=(votes,POS=24,SIZE=3)
   /FIELD=(service,POS=28,SIZE=9)
   /FIELD=(party,POS=40,SIZE=3)
   /FIELD=(state,POS=45,SIZE=2)
/FILE=parties
   /FIELD=(party,POS=5,SIZE=3)
   /FIELD=(president,POS=10,SIZE=22)

この場合、ジョブスクリプトファイルは次のように書くことができます。

/SPEC=chiefs.ddf
/INFILE=chiefs
/SORT
   /KEY=party
   /KEY=president
/OUTFILE=parties
   /INCLUDE WHERE State == "NY"

これは、キーが二つあるソートで、chiefs(首長)ファイルが入力ソースとして使われます。 ソート後の出力としてparty(政党)のファイルを出力します。ただしNY選出の大統領だけが出力に含まれます。
CoSortのツールのいくつかは、 サードパーティのメタデータをSortCLデータ定義ファイルに自動的に変換できます。

  • COBOL Copybook ― Micro Focusのdata dictionaryを変換するツール
  • Microsoft CSV ― Comma-separated valuesを変換するツール
  • NCSA CLF ― 共通ログフォーマットを変換するテンプレート
  • W3C ELF ― 拡張ログフォーマットを変換する(ヘッダを解析する)ツール
  • Oracle SQL*Loader ― SQL*Loader .ctlファイルレイアウトを変換するツール

*1 入力と出力の宣言で、特定のディスクファイル、名前付きまたは名前なしのパイプ、 あるいはカスタムの入力プロシージャを指定できます。

目次に戻る