Агрегированное преобразование

Преобразование "Агрегат" применяет агрегатные функции, такие как среднее значение, к значениям столбцов и копирует результаты в выходные данные преобразования. Помимо агрегатных функций преобразование предоставляет предложение GROUP BY, которое можно использовать для указания групп для агрегирования между собой.

Операции

Преобразование агрегатное поддерживает следующие операции.

Операция Описание
Группировать по Делит наборы данных на группы. Столбцы любого типа данных можно использовать для группировки. Дополнительные сведения см. в разделе GROUP BY (Transact-SQL).
Сумма Суммирует значения в столбце. Можно суммировать только столбцы с числовыми типами данных. Дополнительные сведения см. в разделе СУММ (Transact-SQL).
Среднее значение Возвращает среднее значение значений в столбце. Можно усреднить только столбцы с числовыми типами данных. Дополнительные сведения см. в статье AVG (Transact-SQL).
Численность Возвращает количество элементов в группе. Дополнительные сведения см. в разделе COUNT (Transact-SQL).
Количество уникальных Возвращает количество уникальных ненуллевых значений в группе.
Минимум Возвращает минимальное значение в группе. Дополнительные сведения см. в разделе MIN (Transact-SQL). В отличие от функции Transact-SQL MIN эта операция может использоваться только с числовыми, датами и типами данных времени.
Максимум Возвращает максимальное значение в группе. Дополнительные сведения см. в статье MAX (Transact-SQL). В отличие от функции Transact-SQL MAX, эта операция может использоваться только с числовыми, датами и типами данных времени.

Преобразование Агрегат обрабатывает значения NULL так же, как и реляционное ядро СУБД SQL Server. Поведение определяется в стандарте SQL-92. Применяются следующие правила:

  • В предложении GROUP BY значения NULL обрабатываются как другие значения столбцов. Если столбец группировки содержит несколько значений NULL, значения NULL помещаются в одну группу.

  • В функциях COUNT (имя столбца) и COUNT (ОТЛИЧНЫЙ имя столбца) значения NULL игнорируются, и результат исключает строки, содержащие значения NULL в именованном столбце.

  • В функции COUNT (*) все строки учитываются, включая строки со значениями NULL.

Большие числа в массивных данных

Столбец может содержать числовые значения, требующие особого рассмотрения из-за их большого значения или точности. Преобразование агрегирования включает свойство IsBig, которое можно задать для выходных столбцов для вызова специальной обработки больших или высокоточных чисел. Если значение столбца может превышать 4 миллиарда или требуется точность выше, чем позволяет тип данных с плавающей запятой, IsBig должно быть установлено в 1.

При задании свойства IsBig значение 1 влияет на выходные данные преобразования агрегирования следующим образом:

  • Тип данных DT_R8 используется вместо типа данных DT_R4.

  • Результаты подсчета хранятся как тип данных DT_UI8.

  • Результаты уникального подсчета хранятся в виде типа данных DT_UI4.

Замечание

Нельзя задать значение IsBig равным 1 для столбцов, используемых в операциях GROUP BY, Maximum или Minimum.

Рекомендации по производительности

Преобразование "Агрегат" включает набор свойств, которые можно задать для повышения производительности преобразования.

  • При выполнении операции Группировка по задайте свойства Keys или KeysScale компонента и выходные данные компонента. Используя ключи, можно указать точное количество ключей, которые преобразование должно обрабатывать. (В этом контексте ключи относятся к количеству групп, которые, как ожидается, будут возникать из операции Группировка по.) С помощью KeysScale можно указать приблизительное количество ключей. При указании соответствующего значения для ключей или KeyScale производительность улучшается, так как трансформация может выделить достаточную память для данных, кэшируемых преобразованием.

  • При выполнении операции "Отдельное число " задайте свойства CountDistinctKeys или CountDistinctScale компонента. С помощью CountDistinctKeys можно указать точное количество ключей, которые преобразование должно обрабатывать для операции подсчета различных элементов. (В этом контексте CountDistinctKeys ссылается на количество уникальных значений, которые ожидаются в результате операции "подсчет уникальных значений".) С помощью CountDistinctScale можно указать приблизительное количество ключей для операции подсчета уникальных значений. При указании подходящего значения для CountDistinctKeys или CountDistinctScale вы повышаете производительность, так как преобразование может выделять достаточную память для данных, кэшируемых преобразованием.

Конфигурация аггрегатного преобразования

Вы настраиваете агрегатное преобразование на уровнях преобразования, вывода и столбцов.

  • На уровне преобразования необходимо настроить преобразование "Агрегат" для производительности, указав следующие значения:

    • Количество групп, которые, как ожидается, будут результатом операции Group by.

    • Число уникальных значений, которые, как ожидается, будут возникать из операции Count.

    • Процент, с помощью которого можно расширить память во время агрегирования.

    Преобразование "Агрегат" также можно настроить для создания предупреждения вместо сбоя, если значение делителя равно нулю.

  • На уровне выходных данных вы настраиваете агрегирующее преобразование для повышения производительности, указав количество групп, которые, как ожидается, будут результатом операции Group by. Преобразование "Агрегат" поддерживает несколько выходных данных, и каждая из них может быть настроена по-разному.

  • На уровне столбца укажите следующие значения:

    • Агрегирование, выполняемое столбцом.

    • Параметры сравнения агрегации.

Вы также можете настроить преобразование "Агрегат" для производительности, указав следующие значения:

  • Количество групп, которые, как ожидается, будут результатом операции Group by по столбцу.

  • Число уникальных значений, которые, как ожидается, будут результатом операции Count distinct на столбце.

Можно также определить столбцы как IsBig, если столбец содержит большие числовые значения или числовые значения с высокой точностью.

Преобразование "Агрегат" является асинхронным, что означает, что оно не использует и не публикует данные построчно. Вместо этого он использует весь набор строк, выполняет группировки и агрегации, а затем публикует результаты.

Это преобразование не проходит через столбцы, но создает новые столбцы в потоке данных для данных, которые оно публикует. Копируются только входные столбцы, к которым применяются агрегатные функции или входные столбцы преобразования, используемые для группировки, в выходные данные преобразования. Например, входные данные статистического преобразования могут содержать три столбца: CountryRegion, City и Population. Группировка выполняется по столбцу CountryRegion с применением функции Сумма к столбцу Население. Поэтому выходные данные не включают столбец City .

Вы также можете добавить несколько выходных данных в преобразование "Агрегат" и направить каждую агрегацию в разные выходные данные. Например, если преобразование "Агрегат" применяет функции Sum и Average, каждая агрегатная обработка может быть направлена на разные выходные данные.

К одному входному столбцу можно применить несколько агрегаций. Например, если требуется сумма и средние значения для входного столбца Sales, можно настроить преобразование для применения функций Sum и Average к столбцу Sales .

Преобразование "Агрегат" имеет один вход и один или несколько выходов. Он не поддерживает вывод ошибок.

Свойства могут быть заданы с помощью конструктора SSIS или программным путем.

Дополнительные сведения о свойствах, которые можно задать в диалоговом окне Редактор преобразования агрегатов, нажмите одну из следующих тем:

Диалоговое окно Расширенный редактор содержит свойства, которые можно установить с помощью программных средств. Дополнительные сведения о свойствах, которые вы можете задать в диалоговом окне Расширенный редактор или программными средствами, см. в следующих разделах.

Чтобы получить дополнительную информацию о том, как задать свойства, щелкните один из следующих разделов.

Агрегирование значений в наборе данных с использованием операции агрегирования

См. также

Поток данных
Преобразования служб Integration Services