Script Destination を記述することは避け、Script Transform + Flat File Destination のみを使用します。このようにして、論理出力 (データの文字列) に集中しながら、SSIS がファイルへの実際の書き込みを実行できるようにします (少し効率的であることに加えて、ファイルへの書き込みではなく、ビジネスに集中できます)。
まず、非正規化されたデータを取得する必要があります。結合と並べ替えは DBMS で実行できますが、DBMS に過度の負担をかけたくない場合は、並べ替えられたデータを取得し、2 つの SSIS Merge Join 変換を使用して結合します。
次に、スクリプトを実行します。現在の Customer と Invoice の値を実行し続け、変化したときにそれらを出力し、入力ごとに InvoiceRow を出力します。このようなもの:
if (this.CustomerID != InputBuffer.CustomerID) {
this.CustomerID = InputBuffer.CustomerID;
OutputBuffer.AddRow();
OutputBuffer.OutputColumn = "Customer: " + InputBuffer.CustomerID + " " + InputBuffer.CustomerName;
}
// repeat the same code for Invoice
OutputBuffer.AddRow();
OutputBuffer.OutputColumn = "InvoiceRow: " + InputBuffer.InvoiceRowPrice;
最後に、単一の列 (スクリプトによって作成された OutputColumn) を持つフラット ファイルの宛先を追加して、これをファイルに書き込みます。