Подготовка данных Задачи получения и подготовки данных: 1) Извлечение данных -- процесс выборки данных из оперативных баз данных и других источников. Для извлечения данных существует множество инструментов: это утилиты, предоставляемые самой системой, пользовательские программы извлечения и коммерческие продукты извлечения данных общего назначения. 2) Очистка данных -- не все источники обеспечивают удовлетворительный контроль информации, и, соответственно, прежде чем ввести данные из оперативных источников в хранилище данных, требуется их очистить. Очистка обычно предсматривает: заполнение отсутствующих значений, корректировка опечаток, допущенных при вводе данных, определение стандартных сокращений и форматов, замена синонимов стандартными значениями, согласование форматов данных, исключение ненужных атрибутов (напр., комментариев), обнаружение омонимов. Данные, которые не могут быть очищены, отбрасываются, и информация, полученная при очистке данных, может использоваться для выявления причин ошибок в источниках данных и для повышения качества данных на уровне источника. 3) Преобразование и консолидация данных -- могут использоваться для последущего недопущения ошибок на этапе внесения данных. Преобразование особо важно, если данные поступают из разных источников. При преобразовании могут потребоваться следующие действия: 1) преобразования, связанные с кодировкой данных; 2) преобразование строковых данных; 3) преобразование форматов даты и времени; 4) денормализация схемы; 5) преобразование ключей; 6) преобразования, связанные с качеством данных. 4) Загрузка данных: 1) пересылка преобразованных и консолидированных данных в базу данных хранилища (системы поддержки принятия решений); 2) проверка согласованности данных; 3) построение индексов. Наличие индексов может замедлить загрузку данных, поэтому можно удалять индексы перед загрузкой и по-новому создавать их после загрузки. 5) Обновление данных: обычно это частичная загрузка, но может быть и удаление всех данных из базы и полная перезагрузка. Процессы переноса информации из источников в хранилища данных обозначают аббревиатурой ETL (Extraction Transformation Loading). Программист, создающий процедуры ETL, может представлять себе архитектуру ХД как совокупность трёх областей: 1) источник данных (таблица оперативной системы, дополнительные справочники); 2) промежуточная область; 3) приёмник данных. Если источники информации находятся в разных оперативных системах, но имеют одинаковую структуру, то их считают не различными, а одним распределённым. В зависимости от характера источника данных могут использоваться такие методы выгрузки данных: 1) из СУБД (обычно не вызывают затруднений, т. к. можно использовать готовые утилиты); 2) из структурированного источника (для выгрузки используются соответствующие драйвера; может потребоваться предварительная подготовка структурированного файла с помощью специальной программы или человека; требуются дополнительные действия для преобразования в структурированные данные). Должна быть учтена глубина выборки данных по времени: 1) выгрузка всей информации; 2) выгрузка данных за определённый период. При проектировании процедур извлечения данных нужно учесть условия обеспечения безопасности при пересылке данных. Две ошибки при очистке данных: 1) инструмент очистки очищает данные, которые не нужно очищать; 2) инструмент очистки упускает существующую проблему. Примеры фатальных ошибок: отсутствие файлов-источников данных; ошибка доступа к данным; системная ошибка операционной системы. Категории критериев оценки качества данных можно свести к следующим классам: 1) по критичности: а) критичные ошибки (данные, не соответствующие этому критерию, не могут быть загружены в базу данных, например, буква в числовых данных); б) некритичные ошибки (данные могут быть загружены в хранилище, но не являются качественными); в) качественные; 2) по<...>ктам: а) корректность форматов и представлений данных; б) уникальность первичных и альтернативных ключей; в) полнота данных; г) полнота связей; д) соответствие данных аналитическим ограничениям. Преобразование данных можно свести к нескольким элементарным операциям: 1) вычисление (с использованием скалярных функций); 2) агрегация (вычисления); 3) согласование ключей; 4) генерация суррогатных ключей (двумя способами: последовательная нумерация; кодирование естественного ключа с применением некоторых функций). Возможно распараллеливание данных при загрузке. Оптимизация процессов перегрузки: 1) удаление индексов и последующее их вычисление; 2) до пересылки по сети применение максимального количества фильтров и преобразований; 3) использовать вместо DISTINCT GROUP BY; 4) чтобы очистить таблицу, может быть быстрее удалить эту таблицу и создать, чем выполнить DELETE FROM таблица. При очистке данных могут применяться несколько критериев, и проверка одних критериев может зависеть от результатов проверки другими критериями, например: ограничение на значения числа, хранящегося в текстовом поле, зависят от проверки, является ли оно числом. По результатам каждой проверки может формироваться промежуточная таблица, к которой потом применяется следующий по приоритету критерий. Недостаток: 1) память; 2) в случае качественных данных теряется время и память.