2011/02/22

バースティング その2 (Bursting part2)

前回に引き続き、BI Publisher のバースティングの機能および使用方法について検証します。
今回はscott.emp表をdeptnoで分割・配信します。



【2. scott.emp表を、部門(deptno)毎にファイル出力】
データソースは前回と同一ですが、ソート順に注意する必要があります。データソースのソート順と「分割」の指定は常に合わせる必要があります。これらが一致していない場合、意図した出力結果が得られません。

select empno, ename, job, mgr, hiredate, sal, comm, deptno
  from emp
 order by deptno, job, empno

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


「分割」「配信元」にそれぞれdeptnoが指定されている点、および配信定義SQLの下線部が変更されています。

select distinct
       deptno                 as key,
       'template1'            as template,
       'RTF'                  as template_format,
       'ja-JP'                as locale,
       'PDF'                  as output_format,
       'FILE'                 as del_channel,
       'c:\workspace'         as parameter1,
       to_char(deptno, 'fm00') || '.pdf'
                              as parameter2
  from emp

今回は配信定義が各deptno毎に存在すればよいため、配信定義のSQLにdistinctを指定します(今回のサンプルでは、distinctは指定しなくても問題なく動作しますが)。
また、「key」列は「配信元」とマッチングさせるため、deptnoを設定します。
出力されるファイルの命名についても、deptnoを設定します。これにより、deptnoで「分割」されたデータが各ファイルに分かれて保存されます。



実行結果は以下の通りです。3つのファイル「10.pdf」「20.pdf」「30.pdf」に、それぞれのdeptnoに応じたレコードが出力されます。




今回の例におけるバースティングの動作概念は以下の通りです。


(*1) 配信定義の一覧は、今回のサンプルでは3パターンのみ。したがって、distinctを指定して配信定義を集約。
(*2) emp表の各レコードは「配信元」で指定された列の値を基に配信定義のKEY列を検索し、定義情報を取得する。今回のサンプルでは1つの配信定義が複数のデータに対応する。
(*3) 配信定義に従ってデータが生成される。


次回は、「分割」と「配信元」の設定が異なるパターンを検証します。


[ Summary ]
This time, scott.emp is bursted into three files - 10.pdf, 20.pdf and 30.pdf as shown in the second figure.
Bursting property is shown in the first figure.
Data source is same as the last example, but please notice the order by clause.  Sort order needs to match with bursting property (underlined in the first SQL).
The last figure explains overall idea of the sample bursting.

(*1) The list of delivery methods contains three (deptno) patterns.  Distinct setting reduces and simplifies the list.

(*2) This time, more than one record refer to each delivery method in the list.
(*3) BIP unloads data following each delivery methods.

0 件のコメント:

コメントを投稿