2011/02/19

バースティング その1 (Bursting part1)

今回から数回に分けて、BI Publisher のバースティングの機能および使用方法について検証します。バースティングは国内事例および情報量も少なく、あまり使用されることのない機能ですが、要件にさえ合致すればレポート生成・配信の構築工数を大幅に低減させることができる機能です。

詳細については以下のマニュアルが参照可能です。
http://download.oracle.com/docs/cd/E17159_01/doc/bi.1013/b51053/T518230T518233.htm#enableburst


第一回目となる今回は、シンプルな例として、以下の要件を設定します。
  • scott.emp表を、個々人(empno)毎にファイル出力

【0.事前準備】
サンプルの出力結果をわかりやすくするため、オリジナルのscott.emp表にデータを3行追加しました。
データソースに設定するSQLは以下の通りです。
select empno, ename, job, mgr, hiredate, sal, comm, deptno
  from emp
 order by deptno, job, empno

レポートの出力結果は以下の通りです。9000番台の3名が今回のサンプルで追加した行です。


また、ファイルの出力先として、BIPサーバ上に以下のディレクトリを作成しました





【1. scott.emp表を、個々人(empno)毎にファイル出力】
まず、各レコードを1ファイルに1行ずつ出力します。emp表には15名のレコードが格納されているので、合計15ファイルが出力されることになります。

バースティングの設定は以下の通りです。



「分割」および「配信元」ともにempnoを設定します。
「SQL問合せ」では、配信定義をSQLで表記します。詳細な定義は上述のマニュアルを参照して下さい。


設定
説明
key
empno
出力データと配信定義のマッチングを行うキーを定義します。
配信元と合致させる必要があります。
template
template1
使用するテンプレートを設定します。作成済みのテンプレートを指定します。
template_format
RTF
テンプレートのタイプを設定します。作成したテンプレートにあわせて設定します。
locale
ja-JP
日本国内での使用であれば通常はja-JPです。
output_format
PDF
今回はPDFを作成します。
del_channel
FILE
今回はファイル出力を行います。
parameter1
c:\workspace
del_channelで「FILE」を指定した場合、ファイルの出力先ディレクトリを指定します。
parameter2
to_char(empno, 'fm0000') || '.pdf'
del_channelで「FILE」を指定した場合、ファイル名の命名定義を指定します。


上記設定でバースティングを実行します。実行後、以下のように 「to_char(empno, 'fm0000') || '.pdf'」の定義に従って命名された15個のファイルが「c:\workspace」に出力されます。



各PDFには1行ずつレコードが出力されています。





今回の例におけるバースティングの動作概念は以下の通りです。ポイントは配信定義の一覧がランタイムで生成されることと、「配信元」で指定された列で配信定義一覧の「key」列が検索される点です。

(*1) バースティング定義のSQLが実行され、配信定義の一覧が内部的に作成される
(*2) emp表の各レコードは「配信元」で指定された列の値を基に配信定義のKEY列を検索し、定義情報を取得する
(*3) 配信定義に従ってデータが生成される。





次回はscott.emp表を部門(deptno)毎にファイル出力します。


[ Summary ]
The example above shows how to burst scott.emp into employee individual files - 1 record in each PDF.
Bursting property is shown in the third figure.  In this example, Split by and Deliver by are same.
The last figure explains overall idea of the sample bursting.

(*1) BIP extracts the Bursting property SQL, and generates the list of delivery methods.
(*2) Each record in emp table looks for the KEY column in the list by its Deliver by column.  Then it gets its own delivery method.
(*3) BIP unloads data following each delivery methods.

0 件のコメント:

コメントを投稿