Самостоятельная работа 5:

Определение расширенных свойств атрибутов и измерений

Аннотация: Данная лабораторная работа посвящена использованию расширенных свойств атрибутов, иерархий атрибутов и свойств измерений. Будет произведено определение ссылочной связи измерений, элементов порядка атрибутов (с использованием составных ключей) и пользовательской обработки ошибок.

Теоретическое введение

Определение иерархии типа "родители-потомки"

Иерархия типа "родители-потомки" представляет собой стандартное измерение, содержащее родительский атрибут. Родительский атрибут описывает связь, ссылающуюся на себя, или самосоединение в пределах главной таблицы измерения. Иерархии типа "родители-потомки" создаются из одного родительского атрибута. Иерархии типа "родители-потомки" присваивается только один уровень, поскольку присутствующие в ней уровни наследуют связи типа "родители-потомки" между элементами, связанными с родительским атрибутом. Положение элемента в пределах иерархии типа "родители-потомки" определяется свойствами KeyColumns и RootMemberIf родительского атрибута, в то время как положение элемента в пределах уровня определяется свойством OrderBy родительского атрибута.

Из-за связей типа "родители-потомки" между уровнями в иерархии типа "родители-потомки" некоторые неконечные элементы, помимо данных, статистически вычисленных из дочерних элементов, могут также иметь данные, наследуемые из базовых источников данных.

Схема измерения иерархии типа "родители-потомки" зависит от связи, ссылающейся на себя, присутствующей в главной таблице измерения. Например, на рисунок 9.1 показана главная таблица измерения DimOrganization в образце базы данных AdventureWorksDW.

 Таблица измерения DimOrganization

Рис. 9.1. Таблица измерения DimOrganization

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

Измерения, не имеющие связи типа "родители-потомки", образуют иерархии путем группирования и упорядочивания атрибутов. Эти измерения получают имена уровней для своих иерархий из имен атрибутов.

Однако измерения типа "родители-потомки" формируют иерархии типа "родители-потомки" путем проверки данных, которые содержатся в главной таблице измерения, и последующей оценки связей типа "родители-потомки" между записями в таблице.

Иерархии типа "родители-потомки" не создают имена для уровней в иерархии типа "родители-потомки" на основе атрибутов, используемых для создания иерархии. Вместо этого такие измерения автоматически создают имена уровней по шаблону именования - строкового выражения, которое может быть задано на уровне родительского атрибута, управляющего процессом формирования иерархии атрибута.

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

Однако иерархии типа "родители-потомки" могут содержать некоторые неконечные элементы, данные которых выводятся из базовых источников данных в дополнение к данным, статистически вычисленным из дочерних элементов. Для этих неконечных элементов в иерархии типа "родители-потомки" можно создавать специальные дочерние элементы, формируемые системой, которые содержат данные базовых таблиц фактов. Они называются элементами данных и содержат значение, которое непосредственно связано с неконечным элементом и независимо от сводного значения, вычисленного на основе наследников неконечного элемента.

Группирование элементов атрибутов

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

Группа элементов является созданным системой набором последовательных элементов измерения. В службах SSAS элементы атрибута могут группироваться в различные группы элементов в ходе процесса, называемого дискретизацией. Уровень в иерархии содержит либо группы элементов, либо элементы, но не и то, и другое сразу. Когда пользователи выполняют обзор уровня, содержащего группы элементов, они видят имена и значения ячеек групп элементов. Элементы, формируемые службами SSAS для поддержания групп членов, называются элементами группирования и выглядят как обычные элементы.

Свойство DiscretizationMethod определяет, создают ли службы SSAS группирования, а также определяет тип выполняемого группирования. По умолчанию в службах Analysis Services группирование не выполняется. Возможные значения свойства DiscretizationMethod приведены в Таблица 9.1.

Таблица 9.1. Значения свойства DiscretizationMethod
Значение DiscretizationMethod Описание
None Позволяет отобразить элементы.
Automatic Выбирает метод, наилучшим образом представляющий данные: метод EqualAreas или метод Clusters.
EqualAreas Пытается разделить элементы в атрибуте на группы, содержащие равное количество элементов.
Clusters Пытается разделить элементы в атрибуте на группы с помощью выборки обучающих данных, инициализии для определенного количества случайных точек и выполнения нескольких итераций алгоритма кластеризации максимизации ожидания (EM). Метод полезен, т.к. он работает с любой кривой распределения, но для его выполнения требуется больше времени.

После выбора метода группирования необходимо указать количество групп, используя свойство DiscretizationBucketCount.

Свойство DiscretizationNumber атрибута определяет количество отображаемых групп. Если свойству задано значение по умолчанию 0, службы SSAS определяют количество групп с помощью выборки или чтения данных, в зависимости от настройки свойства DiscretizationMethod ).

Порядок сортировки элементов в группах элементов контролируется при помощи свойства OrderBy атрибута. Последовательное построение элементов групп основано на этом порядке сортировки.

Группы элементов обычно используются для детализации с уровня с немногими элементами до уровня со многими элементами. Чтобы пользователи имели возможность выполнять детализацию между уровнями, измените свойство DiscretizationMethod атрибута для уровня, содержащего много элементов, с None на один из методов дискретизации, описанных в предыдущей таблице.

Например, пусть измерение Client содержит иерархию атрибутов Client Name с 500 000 элементов. Можно переименовать атрибут Client Groups и задать свойству DiscretizationMethod значение Automatic для отображения групп элементов на уровне элементов иерархии атрибутов.

Для детализации до отдельных клиентов в каждой группе можно создать другую иерархию атрибутов Client Name, привязанную к тому же столбцу в таблице. Затем создайте новую пользовательскую иерархию на основе двух атрибутов. Верхний уровень будет основываться на атрибуте Client Groups, нижний уровень - на атрибуте Client Name. Свойство IsAggregatable будет True на обоих атрибутах. После этого пользователь может раскрыть уровень ( All ) в иерархии для просмотра элементов группы, а также раскрыть элементы группы для просмотра конечных элементов иерархии. Чтобы скрыть уровень группы или клиента, можно задать свойству AttributeHierarchyVisible значение False для соответствующего атрибута.

Скрытие и отключение иерархий атрибутов

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

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

Значение свойства AttributeHierarchyEnabled определяет, создана ли иерархия атрибута. Если значением свойства является False, иерархия атрибутов не создана, и атрибут нельзя использовать в качестве уровня пользовательской иерархии, то есть иерархия атрибутов существует только как свойство элемента. Однако отключенную иерархию атрибута можно использовать для сортировки элементов другого атрибута. Если значением свойства AttributeHierarchyEnabled является True, значение свойства AttributeHierarchyVisible определяет, является ли иерархия атрибута видимой независимо от пользовательской иерархии.

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

  1. IsAggregatable. По умолчанию для всех иерархий атрибутов задается уровень "( All )". Чтобы отключить уровень "( All )" для включенной иерархии атрибута, задайте для этого свойства значение False. Атрибут, свойство IsAggregatable которого установлено в значение false, может использоваться только в качестве корневого элемента многоуровневой иерархии, и для него должен быть указан элемент по умолчанию (в противном случае элемент по умолчанию будет выбран ядром служб SSAS).
  2. AttributeHierarchyOrdered. По умолчанию в службах SSAS элементы включенных иерархий атрибутов сортируются при обработке, а затем сохраняются в зависимости от значения свойства OrderBy, например "Имя" или "Ключ". Если сортировка не важна, производительность обработки можно повысить, указав для этого свойства значение False.
  3. AttributeHierarchyOptimizedState. По умолчанию в службах SSAS создается индекс для каждой включенной иерархии атрибута при обработке, чтобы повысить производительность выполнения запросов. Если не планируется использовать иерархию атрибута для просмотра, можно повысить производительность обработки, задав в качестве значения этого свойства NotOptimized. Тем не менее, если скрытая иерархия используется в качестве ключевого атрибута измерения, создание индекса элементов атрибута позволит повысить производительность.

Эти свойства неприменимы, если иерархия атрибута отключена.

Сортировка элементов атрибута по вторичному атрибуту

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

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

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

Определение связей атрибутов в определенной пользователем иерархии

Иерархии атрибутов внутри пользовательских иерархий можно упорядочивать по уровням, чтобы предоставлять пользователям пути перемещения в кубе. Пользовательская иерархия может отражать естественную иерархию, такую как города, область и страна, или просто путь перемещения, например фамилию сотрудника, его должность и название отдела. Для пользователя, перемещающегося по иерархии, нет разницы между этими двумя типами пользовательских иерархий.

В естественной иерархии, если определены связи между атрибутами, составляющими уровни, службы SSAS могут использовать статистические вычисления по одному атрибуту для получения результатов из связанного атрибута. Если связи атрибутов не определены, в службах SSAS будут выполняться статистические вычисления по всем неключевым атрибутам из ключевого атрибута. Таким образом, если базовые данные позволяют, необходимо определить связи между атрибутами. Это повышает производительность обработки измерений, секций и выполнения запросов.

При определении связи атрибутов можно указать ее тип: гибкая или жесткая. Если связь определена как жесткая, агрегаты в службах SSAS сохраняются при обновлении измерения. Если изменяется связь, определенная как жесткая, а измерение обработано не полностью, в службах SSAS формируется ошибка при обработке. Верное определение связей и свойств связей повышает скорость запросов и обработки.

Определение свойств Unknown Member и Null Processing

В процессе обработки измерения службами SSAS его атрибуты заполняются всеми уникальными значениями, полученными из базовых столбцов представлений и таблиц в представлении источника данных. Если при обработке службы SSAS обнаруживают значение NULL, по умолчанию оно преобразуется в нулевое значение для числовых столбцов или в пустую строку - для строковых. Можно изменить значения по умолчанию или преобразовывать значения NULL в процессе извлечения, преобразования или загрузки (если они выполняются) данных из базового реляционного хранилища данных. Кроме того, службы SSAS могут быть настроены для преобразования значения NULL в указанное значение настройкой трех свойств: UnknownMember и UnknownMemberName для измерения и свойства NullProcessing для ключевого атрибута измерения.

Мастер измерений и мастер кубов включают эти свойства в том случае, если ключевой атрибут измерения допускает значения NULL или корневой атрибут измерения, связанного по схеме "снежинка", основан на столбце, который допускает значения NULL. В этих случаях свойству NullProcessing ключевого атрибута будет присвоено значение UnknownMember, а свойству UnknownMember - значение Visible.

Однако при добавочном построении измерений, связанных по схеме "снежинка" (как в измерении " Product " в этом цикле лабораторных работ), или при определении измерений с помощью конструктора измерений и их последующей интеграции в куб может потребоваться ручная установка свойств UnknownMember и NullProcessing.

Ксения Кожанова
Ксения Кожанова

Здравствуйте! Я прошла 1 лекцию и 1 самостоятельную работу. В конце контрольные вопросы, их надо для как-то ответить или куда-то отослать?

Андрей Павлов
Андрей Павлов