次の方法で共有


集計変換

集計変換は Average などの集計関数を列の値に適用し、その結果を変換出力にコピーします。集計変換では、集計関数の他に GROUP BY 句を使用して集計範囲のグループを指定できます。

集計変換は、変換、出力、および列レベルで構成します。

  • 変換レベルでは、変換で処理されることになるキーおよび個別カウント キーの数、および集計中に拡張できるメモリの割合を指定することにより、集計変換を構成してパフォーマンスを高めることができます。また、除数の値が 0 のときに失敗せずに警告を生成するように、集計変換を構成することもできます。
  • 出力レベルでは、出力に含まれることになるキーの数を指定することにより、集計変換を構成してパフォーマンスを高めることができます。集計変換では複数の出力を設定して、各列を個別に構成できます。
  • 列レベルでは、列が実行する集計と、集計の比較オプションを指定します。各列に含まれるキーおよび個別カウント キーの数を指定し、列に含まれる数値が大きい場合、または数値の有効桁数が大きい場合には、その列を IsBig として識別することにより、集計変換を構成してパフォーマンスを高めることもできます。

集計変換は非同期です。つまり、行ごとにデータを使用またはパブリッシュしません。集計変換は行セット全体を使用してグループ化と集計を実行し、その結果をパブリッシュします。

この変換では列をパススルーすることはなく、変換によりパブリッシュされるデータ用に、新しい列がデータ フロー内に作成されます。集計関数が適用される入力列、または変換がグループ化用に使用する入力列のみが、変換出力にコピーされます。たとえば、集計変換入力に、CountryRegionCity、および Population という 3 つの列があるものとします。集計変換は、CountryRegion 列によりグループ化を行い、Sum 関数を Population 列に適用します。したがって、出力には City 列は含まれません。

また、複数の出力を集計変換に追加し、各集計を別々の出力に送ることもできます。たとえば、集計変換が Sum および Average 関数を適用する場合に、各集計をそれぞれ別の出力に送ることができます。

1 つの入力列に複数の集計を適用できます。たとえば、Sales という名前の入力列の合計値と平均値を計算する場合に、Sum および Average 関数の両方を Sales 列に適用するように、集計変換を構成できます。

集計変換は、1 つの入力と 1 つ以上の出力をとります。エラー出力はサポートされていません。

操作

集計変換では、次の操作がサポートされています。

操作 説明

グループ化

データセットをグループに分割します。グループ化には、任意のデータ型の列を使用できます。詳細については、「GROUP BY (Transact-SQL)」を参照してください。

合計

列の値を合計します。合計には、数値データ型の列のみを使用できます。詳細については、「SUM (Transact-SQL)」を参照してください。

平均

列内の列の値の平均を返します。平均には、数値データ型の列のみを使用できます。詳細については、「AVG (Transact-SQL)」を参照してください。

カウント

グループ内の項目数を返します。詳細については、「COUNT (Transact-SQL)」を参照してください。

個別のカウント

グループ内の、NULL でない一意の値の数を返します。詳細については、「DISTINCT による重複の除去」を参照してください。

最小

グループ内の最小値を返します。詳細については、「MIN (Transact-SQL)」を参照してください。Transact-SQL MIN 関数とは異なり、この操作は数値、日付、および時間データ型に対してのみ使用できます。

最大

グループ内の最大値を返します。詳細については、「MAX (Transact-SQL)」を参照してください。Transact-SQL MAX 関数とは異なり、この操作は数値、日付、および時間データ型に対してのみ使用できます。

集計変換では、NULL 値を、SQL Server リレーショナル データベース エンジンと同じ方法で処理します。この動作は SQL-92 標準で定義されています。次の規則が適用されます。

  • GROUP BY 句では、他の列の値と同様に NULL が処理されます。グループ化に使われる列に複数の NULL 値が含まれる場合は、それらの NULL 値が 1 つのグループになります。
  • COUNT (列名) および COUNT (DISTINCT 列名) 関数では、NULL は無視され、名前付き列内の NULL 値を含む行が結果から除外されます。
  • COUNT (*) 関数では、NULL 値の行を含め、すべての行がカウントされます。

集計における大きな数値の処理

大きな数値または大きな有効桁数が必要な列がある場合は、特別な注意が必要です。集計変換には、IsBig プロパティが含まれています。このプロパティを使用すると、出力列で、大きな数値または大きな有効桁数の数値に対し、特別な処理を実行するように設定できます。列の値が 40 億を超える場合、または float データ型よりも大きな有効桁数が必要な場合は、IsBig を 1 に設定する必要があります。

IsBig プロパティを 1 に設定すると、集計変換の出力は、次のような影響を受けます。

  • DT_R4 データ型の代わりに DT_R8 データ型が使用されます。
  • カウントの結果は、DT_UI8 データ型として格納されます。
  • 個別のカウントの結果は、DT_UI4 データ型として格納されます。
ms138031.note(ja-jp,SQL.90).gifメモ :
グループ化、最大、または最小操作で使用される列では、IsBig を 1 に設定することはできません。

パフォーマンスに関する注意点

集計変換には、変換のパフォーマンスが向上するように設定できる、プロパティのセットが含まれています。

  • コンポーネントとコンポーネント出力の Keys および KeysScale プロパティを設定します。Keys, を使用すると、変換で処理されるキーの正確な数を指定できます。また、KeysScale, を使用すると、キーの概数を指定できます。Keys, の値を指定すると、パッケージの実行時にこの値が使用されるので、キャッシュされた総数が変換で再構成されることがなく、パフォーマンスが向上します。
  • コンポーネントの CountDistinctKeys および CountDistinctScale プロパティを設定します。CountDistinctKeys, を使用すると、変換が個別のカウントの操作で処理するキーの正確な数を指定できます。CountDistinctScale を使用すると、個別のカウントの操作で処理するキーの概数を指定できます。CountDistinctScale の値を指定すると、パッケージの実行時にこの値が使用されるので、キャッシュされた総数が変換で再構成されることがなく、パフォーマンスが向上します。

集計変換の構成

プロパティを設定するには SSIS デザイナから行うか、またはプログラムによって設定します。

[集計変換エディタ] ダイアログ ボックスで設定できるプロパティの詳細については、次のトピックのいずれかを参照してください。

[詳細エディタ] ダイアログ ボックスには、プログラムによって設定できるプロパティが反映されます。[詳細エディタ] ダイアログ ボックスまたはプログラムで設定できるプロパティの詳細については、次のトピックのいずれかを参照してください。

プロパティの設定方法の詳細については、次のトピックのいずれかを参照してください。

参照

概念

パッケージのデータ フローの作成
Integration Services の変換

ヘルプおよび情報

SQL Server 2005 の参考資料の入手