Измерение — это структура, которая классифицирует факты и меры , чтобы позволить пользователям отвечать на бизнес-вопросы. Обычно используемые измерения — это люди, продукты, место и время. [1] [2] (Примечание: люди и время иногда не моделируются как измерения.)
В хранилище данных измерения предоставляют структурированную информацию о маркировке для неупорядоченных числовых мер. Измерение представляет собой набор данных, состоящий из отдельных, неперекрывающихся элементов данных . Основные функции измерений три: обеспечить фильтрацию, группировку и маркировку.
Эти функции часто описываются как «нарезка и кубики». Обычный пример хранилища данных включает продажи в качестве меры, с клиентами и продуктами в качестве измерений. В каждой продаже клиент покупает продукт. Данные можно нарезать, удалив всех клиентов, за исключением изучаемой группы, а затем нарезать, сгруппировав по продуктам.
Элемент размерных данных аналогичен категориальной переменной в статистике.
Обычно измерения в хранилище данных организованы внутри в одну или несколько иерархий. «Дата» — это общее измерение с несколькими возможными иерархиями:
Медленно меняющееся измерение — это набор атрибутов данных, которые медленно изменяются в течение определенного периода времени, а не меняются регулярно, например, адрес или имя. Эти атрибуты могут меняться в течение определенного периода времени, и они будут объединены в медленно меняющееся измерение. Эти измерения можно классифицировать по типам: [3]
Согласованное измерение — это набор атрибутов данных, которые физически ссылаются в нескольких таблицах базы данных, используя одно и то же значение ключа для ссылки на одну и ту же структуру, атрибуты, значения домена, определения и концепции. Согласованное измерение пересекает множество фактов.
«Измерения согласованы, когда они либо полностью совпадают (включая ключи), либо одно из них является подмножеством другого. Самое важное, чтобы заголовки строк, полученные в двух разных наборах ответов из одного и того же согласованного измерения(й), могли идеально совпадать».
Согласованные измерения являются либо идентичными, либо строгими математическими подмножествами наиболее гранулярного, подробного измерения. Таблицы измерений не согласованы, если атрибуты помечены по-разному или содержат разные значения. Согласованные измерения бывают нескольких разных видов. На самом базовом уровне согласованные измерения означают одно и то же с каждой возможной таблицей фактов, к которой они присоединены. Таблица измерения даты, связанная с фактами продаж, идентична измерению даты, связанному с фактами инвентаризации. [5]
Ненужное измерение — это удобная группировка флагов и индикаторов, как правило, с низкой кардинальностью. При создании абстрактного измерения эти флаги и индикаторы удаляются из таблицы фактов, при этом они помещаются в полезную размерную структуру. [6] Ненужное измерение — это таблица измерений, состоящая из атрибутов, которые не принадлежат таблице фактов или ни одной из существующих таблиц измерений. Природа этих атрибутов обычно текстовая или различные флаги, например, необщие комментарии или просто простые индикаторы да/нет или истина/ложь. Эти виды атрибутов обычно остаются, когда все очевидные измерения в бизнес-процессе были идентифицированы, и, таким образом, проектировщик сталкивается с проблемой, куда поместить эти атрибуты, которые не принадлежат другим измерениям.
Одним из решений является создание нового измерения для каждого из оставшихся атрибутов, но из-за их природы может потребоваться создание огромного количества новых измерений, что приведет к таблице фактов с очень большим количеством внешних ключей. Дизайнер также может решить оставить оставшиеся атрибуты в таблице фактов, но это может сделать длину строки таблицы неоправданно большой, если, например, атрибут представляет собой длинную текстовую строку.
Решение этой проблемы заключается в том, чтобы определить все атрибуты и затем поместить их в одно или несколько ненужных измерений. Одно ненужное измерение может содержать несколько индикаторов true/false или да/нет, которые не имеют корреляции друг с другом, поэтому было бы удобно преобразовать индикаторы в более описательный атрибут. Примером может служить индикатор того, прибыла ли посылка: вместо того, чтобы указывать это как «да» или «нет», он будет преобразован в «прибыл» или «ожидает» в ненужном измерении. Дизайнер может выбрать построение таблицы измерений так, чтобы она в конечном итоге содержала все индикаторы, встречающиеся с каждым другим индикатором, чтобы были охвачены все комбинации. Это устанавливает фиксированный размер для самой таблицы, который будет составлять 2 x строк, где x — количество индикаторов. Это решение подходит в ситуациях, когда дизайнер ожидает столкнуться с большим количеством различных комбинаций и когда возможные комбинации ограничены приемлемым уровнем. В ситуации, когда число индикаторов велико, что приводит к созданию очень большой таблицы или когда дизайнер ожидает встретить только несколько возможных комбинаций, было бы более целесообразно строить каждую строку в ненужном измерении по мере появления новых комбинаций. Чтобы ограничить размер таблиц, в других ситуациях может быть целесообразно использовать несколько ненужных измерений в зависимости от корреляции между различными индикаторами.
Ненужные измерения также подходят для размещения атрибутов, таких как необщие комментарии из таблицы фактов. Такие атрибуты могут состоять из данных из необязательного поля комментария, когда клиент размещает заказ, и в результате, вероятно, будут пустыми во многих случаях. Поэтому ненужное измерение должно содержать одну строку, представляющую пробелы в качестве суррогатного ключа, который будет использоваться в таблице фактов для каждой строки, возвращаемой с пустым полем комментария. [7]
Вырожденное измерение — это ключ, такой как номер транзакции, номер счета-фактуры, номер билета или номер коносамента, который не имеет атрибутов и, следовательно, не присоединяется к фактической таблице измерений. Вырожденные измерения очень распространены, когда гранула таблицы фактов представляет собой один элемент транзакции или строку, поскольку вырожденное измерение представляет собой уникальный идентификатор родителя. Вырожденные измерения часто играют неотъемлемую роль в первичном ключе таблицы фактов. [8]
Измерения часто повторно используются для нескольких приложений в одной и той же базе данных. Например, измерение «Дата» может использоваться для «Даты продажи», а также «Даты доставки» или «Даты найма». Это часто называют «ролевым измерением». Это можно реализовать с помощью представления по той же таблице измерений.
Обычно таблицы измерений не ссылаются на другие измерения через внешние ключи. Когда это происходит, ссылающееся измерение называется аутригером. Аутригеры следует считать антишаблоном хранилища данных: считается лучшей практикой использовать некоторые таблицы фактов, которые связывают два измерения. [9]
Согласованное измерение называется сжатым измерением, если оно включает в себя подмножество строк и/или столбцов исходного измерения. [10]
Специальный тип измерения может использоваться для представления дат с гранулярностью дня. Даты будут ссылаться в таблице фактов как внешние ключи к измерению даты. Первичный ключ измерения даты может быть суррогатным ключом или числом с использованием формата ГГГГММДД.
Измерение даты может включать другие атрибуты, такие как неделя года или флаги, представляющие рабочие дни, праздники и т. д. Оно также может включать специальные строки, представляющие: неизвестные даты или еще не определенные даты. Измерение даты должно быть инициализировано всеми требуемыми датами, например, следующими 10 годами дат или больше, если требуется, или прошедшими датами, если обрабатываются события в прошлом.
Время вместо этого обычно лучше всего представлять в виде временной метки в таблице фактов . [11]
При ссылке на данные из реестра метаданных , например ISO/IEC 11179 , в качестве измерений обычно используются такие термины представления , как «Индикатор» (логическое значение true/false), «Код» (набор неперекрывающихся перечисляемых значений). Например, при использовании Национальной модели обмена информацией (NIEM) имя элемента данных будет «PersonGenderCode», а перечисляемые значения могут быть «мужской», «женский» и «неизвестный».
В хранилище данных таблица измерений является одной из набора сопутствующих таблиц таблицы фактов .
Таблица фактов содержит бизнес-факты (или показатели) и внешние ключи , которые ссылаются на потенциальные ключи (обычно первичные ключи ) в таблицах измерений.
В отличие от таблиц фактов, таблицы измерений содержат описательные атрибуты (или поля), которые обычно являются текстовыми полями (или дискретными числами, которые ведут себя как текст). Эти атрибуты предназначены для выполнения двух важных задач: ограничения и/или фильтрации запросов и маркировки набора результатов запросов.
Атрибуты измерения должны быть:
Строки таблицы измерений однозначно идентифицируются одним ключевым полем. Рекомендуется, чтобы ключевое поле было простым целым числом, поскольку значение ключа не имеет смысла и используется только для объединения полей между таблицами фактов и измерений. Таблицы измерений часто используют первичные ключи, которые также являются суррогатными ключами. Суррогатные ключи часто генерируются автоматически (например, «столбец идентификаторов» Sybase или SQL Server, последовательный PostgreSQL или Informix, Oracle SEQUENCE или столбец, определенный с помощью AUTO_INCREMENT в MySQL).
Использование суррогатных ключей измерений дает ряд преимуществ, в том числе:
Хотя использование суррогатных ключей создает нагрузку на систему ETL , конвейерную обработку можно улучшить, и инструменты ETL имеют встроенную улучшенную обработку суррогатных ключей.
Целью таблицы измерений является создание стандартизированных, согласованных измерений, которые могут совместно использоваться в среде хранилища данных предприятия и обеспечивать возможность объединения с несколькими таблицами фактов, представляющими различные бизнес-процессы.
Согласованные измерения важны для корпоративного характера систем DW/BI, поскольку они способствуют:
Со временем атрибуты заданной строки в таблице измерений могут измениться. Например, адрес доставки компании может измениться. Кимбалл называет это явление медленно меняющимся измерением . Стратегии работы с такого рода изменениями делятся на три категории:
Источник: [12]
Поскольку многие таблицы фактов в хранилище данных представляют собой временные ряды наблюдений, часто требуется одно или несколько измерений даты. Одной из причин наличия измерений даты является размещение знаний календаря в хранилище данных вместо их жесткого кодирования в приложении. Хотя простая дата-временная метка SQL полезна для предоставления точной информации о времени записи факта, она не может предоставить информацию о праздниках, фискальных периодах и т. д. Дата-временная метка SQL все еще может быть полезна для хранения в таблице фактов, поскольку она позволяет выполнять точные вычисления.
Если дата и время суток находятся в одном измерении, это может легко привести к огромному измерению с миллионами строк. Если требуется высокая степень детализации, обычно хорошей идеей является разбиение даты и времени на два или более отдельных измерения. Измерение времени с точностью до секунд в сутках будет иметь всего 86400 строк. Более или менее подробную степень детализации для измерений даты/времени можно выбрать в зависимости от потребностей. Например, измерения даты могут быть точными до года, квартала, месяца или дня, а измерения времени могут быть точными до часов, минут или секунд.
Как правило, измерение времени суток следует создавать только в том случае, если необходимы иерархические группировки или если имеются содержательные текстовые описания периодов времени в течение дня (например, «вечерний пик» или «первая смена»).
Если строки в таблице фактов поступают из нескольких часовых поясов, может быть полезно хранить дату и время как по местному времени, так и по стандартному времени. Это можно сделать, имея два измерения для каждого необходимого измерения даты/времени — одно для местного времени и одно для стандартного времени. Хранение даты/времени как по местному, так и по стандартному времени позволит анализировать, когда факты создаются в локальной настройке, а также в глобальной настройке. Выбранное стандартное время может быть глобальным стандартным временем (например, UTC ), это может быть местное время головного офиса компании (например, CET ) или любой другой часовой пояс, который имеет смысл использовать.