彙總轉換
「彙總」轉換會將彙總函數 (例如 Average) 套用至資料行值,並將結果複製到轉換輸出。除了彙總函數外,該轉換還提供 GROUP BY 子句,讓您用來指定要彙總的群組。
您可以在轉換、輸出和資料行層級設定「彙總」轉換。
- 在轉換層級,您可以藉由指定轉換預期要處理的索引鍵和相異計數索引鍵數目,以及記憶體可以在彙總期間擴充的百分比,設定「彙總」轉換的效能。「彙總」轉換也可以設定為在除數的值為零時產生警告,而非發生失敗。
- 在輸出層級,您可以藉由指定輸出預期要包含的索引鍵數目,設定「彙總」轉換的效能。「彙總」轉換支援多個輸出,且每個輸出能以不同的方式設定。
- 在資料行層級,您可以指定資料行執行的彙總,以及彙總的比較選項。您也可以藉由指定每個資料行所包含的索引鍵和相異計數索引鍵數目,以及在資料行包含過大數值或具有高有效位數的數值時,將該資料行識別為 IsBig,以設定「彙總」轉換的效能。
「彙總」轉換是非同步的,這表示它不會以逐列的方式取用和發行資料,而是會取用整個資料列集、執行其群組和彙總,然後發行結果。
這個轉換不會通過任何資料行,但是會在資料流程中為其所發行的資料建立新的資料行。只有套用彙總函數的輸入資料行,或是轉換用於群組的輸入資料行,才會複製到轉換輸出。例如,「彙總」轉換輸入可能有三個資料行:CountryRegion、City 和 Population。轉換會依 CountryRegion 資料行來分組,並將 Sum 函數套用至 Population 資料行。因此,輸出不會包含 City 資料行。
您也可以將多個輸出加入「彙總」轉換,並將每個彙總導向不同的輸出。例如,如果「彙總」轉換套用 Sum 和 Average 函數,則每個彙總可以導向至不同的輸出。
您可以將多個彙總套用至單一輸入資料行。例如,如果您要計算名為 Sales 之輸入資料行的總和與平均值,可以將轉換設定為套用 Sum 和 Average 函數至 Sales 資料行。
「彙總」轉換有一個輸入,以及一或多個輸出。它不支援錯誤輸出。
作業
「彙總」轉換支援下列作業。
作業 | 描述 |
---|---|
群組依據 |
將資料集分割成群組。任何資料類型的資料行都可用於群組。如需詳細資訊,請參閱<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 關聯式 Database Engine 的處理方式相同。此行為是在 SQL-92 標準中所定義。適用下列規則:
- 在 GROUP BY 子句中,處理 Null 的方式與處理其他資料行值的方式相同。若群組資料行內包含了多個 Null 值,Null 值將放入單一群組內。
- 在 COUNT (資料行名稱) 與 COUNT (DISTINCT 資料行名稱) 函數中,會忽略 Null 值,且結果會排除具名資料行中包含 Null 值的資料列。
- 在 COUNT (*) 函數中,會計算所有資料列,包括含有 Null 值的資料列在內。
處理彙總中的過大數字
資料行可能包含因為過大數值或有效位數需求而需要特殊考量的數值。「彙總」轉換包含 IsBig 屬性,您可以在輸出資料行上設定該屬性,以叫用過大數值或高有效位數數值的特殊處理。如果資料行值可能超過 40 億,或需要比浮點資料類型更高的有效位數,則 IsBig 應設定為 1。
將 IsBig 屬性設定為 1,會對彙總轉換的輸出有下列影響:
- 使用 DT_R8 資料類型,而非 DT_R4 資料類型。
- 計數結果會以 DT_UI8 資料類型儲存。
- 相異計數結果會以 DT_UI4 資料類型儲存。
附註: |
---|
您無法在用於 GROUP BY、「最大值」或「最小值」作業的資料行上,將 IsBig 設定為 1。 |
效能考量因素
「彙總」轉換包含一組屬性,可讓您用來增強轉換的效能。
- 設定元件與元件輸出的 Keys 和 KeysScale 屬性。您可以使用 Keys, 屬性,指定轉換預期要處理的確切索引鍵數目,還可以使用 KeysScale, 指定索引鍵的近似數目。當您指定 Keys, 的值時,也就是轉換會在封裝執行時收到的值,轉換會避免重新組織快取的總計以提升效能。
- 設定元件的 CountDistinctKeys 和 CountDistinctScale 屬性。您可以使用 CountDistinctKeys,,為相異計數作業指定轉換預期要處理的確切索引鍵數目。您可以使用 CountDistinctScale,為相異計數作業指定索引鍵的近似數目。當您指定 CountDistinctScale 的值時,也就是轉換會在封裝執行時收到的值,轉換也會避免重新組織快取的總計以提升效能。
設定彙總轉換
您可以透過「SSIS 設計師」或以程式設計的方式來設定屬性。
如需有關可以在 [彙總轉換編輯器] 對話方塊中設定之屬性的詳細資訊,請按一下下列其中一個主題:
[進階編輯器] 對話方塊會反映能以程式設計的方式設定之屬性。如需有關可以在 [進階編輯器] 對話方塊中或以程式設計的方式設定之屬性的詳細資訊,請按一下下列其中一個主題:
如需有關如何設定屬性的詳細資訊,請按一下下列其中一個主題:
請參閱
概念
建立封裝資料流程
Integration Services 轉換