Слишком много комбинаций клавиш — он должен повторно хэшировать данные

#sql-server #ssis #sql-server-2008-r2 #data-warehouse

#sql-server #ssis #sql-server-2008-r2 #хранилище данных

Вопрос:

Мы создаем хранилище с использованием SSIS.

Я выполняю агрегацию и получил следующее сообщение

При агрегированном преобразовании обнаружено 2000037 комбинаций клавиш. Он должен повторно хэшировать данные, потому что количество комбинаций клавиш больше, чем ожидалось. Компонент можно настроить так, чтобы избежать повторного хэширования данных, настроив свойства Keys, KeyScale и AutoExtendFactor

Он не записывал выходные данные и, что самое неприятное, не создавал никаких исключений.

Что здесь происходит? Как мне это исправить?

Ответ №1:

Комбинации клавиш — это количество групп в потоке данных. Установите значение KeysScale (расширенное свойство задачи) на число> 2000037. Попытайтесь угадать как можно ближе, чтобы преобразование могло выделить достаточно памяти для выполнения агрегации.

Я бы избегал использования этого преобразования, когда это вообще возможно. Он не только требует много памяти, но и задерживает всю задачу потока данных до ее завершения.

Откуда поступают данные? Если реляционная база данных, переместите группу по, порядок по и любые агрегированные данные в запрос базы данных.

Комментарии:

1. Источником является таблица базы данных с 17 миллионами строк, которые не отображаются, а затем у меня есть два поиска, а затем три производных столбца с распределением по ним примерно 100 вычислений. Агрегирование происходит после записи производных столбцов. У меня нет никаких сортировок.

2. Я перебираю месяц за месяцем, поэтому количество комбинаций клавиш меняется от одного месяца к другому. Я установил для свойства Keyscale значение High, но не указал число. Это нормально или я должен указать номер для этого?