Иерархия типа "родители-потомки" представляет собой стандартное измерение, содержащее родительский атрибут. Родительский атрибут описывает связь, ссылающуюся на себя, или самосоединение в пределах главной таблицы измерения. Иерархии типа "родители-потомки" создаются из одного родительского атрибута. Иерархии типа "родители-потомки" присваивается только один уровень, поскольку присутствующие в ней уровни наследуют связи типа "родители-потомки" между элементами, связанными с родительским атрибутом. Положение элемента в пределах иерархии типа "родители-потомки" определяется свойствами KeyColumns и RootMemberIf родительского атрибута, в то время как положение элемента в пределах уровня определяется свойством OrderBy родительского атрибута.
Из-за связей типа "родители-потомки" между уровнями в иерархии типа "родители-потомки" некоторые неконечные элементы, помимо данных, статистически вычисленных из дочерних элементов, могут также иметь данные, наследуемые из базовых источников данных.
Схема измерения иерархии типа "родители-потомки" зависит от связи, ссылающейся на себя, присутствующей в главной таблице измерения. Например, на
рисунок 9.1 показана главная таблица измерения DimOrganization в образце базы данных AdventureWorksDW.
(рис 9.1) Таблица измерения DimOrganizationВ этой таблице измерения столбец ParentOrganizationKey имеет связь по внешнему ключу со столбцом первичного ключа OrganizationKey. Другими словами, каждая запись в этой таблице может быть соотнесена посредством связи типа "родители-потомки" с другой записью в таблице. Подобный тип самосоединения обычно используется для представления данных сущности организации (например, структуры управления сотрудниками в отделе).
Измерения, не имеющие связи типа "родители-потомки", образуют иерархии путем группирования и упорядочивания атрибутов. Эти измерения получают имена уровней для своих иерархий из имен атрибутов.
Однако измерения типа "родители-потомки" формируют иерархии типа "родители-потомки" путем проверки данных, которые содержатся в главной таблице измерения, и последующей оценки связей типа "родители-потомки" между записями в таблице.
Иерархии типа "родители-потомки" не создают имена для уровней в иерархии типа "родители-потомки" на основе атрибутов, используемых для создания иерархии. Вместо этого такие измерения автоматически создают имена уровней по шаблону именования - строкового выражения, которое может быть задано на уровне родительского атрибута, управляющего процессом формирования иерархии атрибута.
Обычно конечные элементы в измерении содержат данные, получаемые непосредственно из базовых источников данных, а неконечные элементы содержат данные, получаемые в результате статистических вычислений, применяемых к дочерним элементам.
Однако иерархии типа "родители-потомки" могут содержать некоторые неконечные элементы, данные которых выводятся из базовых источников данных в дополнение к данным, статистически вычисленным из дочерних элементов. Для этих неконечных элементов в иерархии типа "родители-потомки" можно создавать специальные дочерние элементы, формируемые системой, которые содержат данные базовых таблиц фактов. Они называются элементами данных и содержат значение, которое непосредственно связано с неконечным элементом и независимо от сводного значения, вычисленного на основе наследников неконечного элемента.
При просмотре куба обычно выполняется распределение по измерениям элементов одной иерархии атрибута на основе элементов другой иерархии атрибута. Например, можно сгруппировать продажи по таким признакам, как город, приобретенный товар или пол. Однако при работе с некоторыми типами атрибутов лучше группировать их элементы автоматически с использованием служб SSAS, основываясь на распределении элементов в рамках иерархии атрибута. Например, с помощью служб SSAS можно объединить заказчиков в группы на основе их годового дохода. При этом пользователь, просматривающий иерархию атрибута, будет видеть названия и значения групп вместо самих элементов групп. Данный подход ограничивает количество отображаемых уровней, что упрощает анализ данных.
Группа элементов является созданным системой набором последовательных элементов измерения. В службах SSAS элементы атрибута могут группироваться в различные группы элементов в ходе процесса, называемого дискретизацией. Уровень в иерархии содержит либо группы элементов, либо элементы, но не и то, и другое сразу. Когда пользователи выполняют обзор уровня, содержащего группы элементов, они видят имена и значения ячеек групп элементов. Элементы, формируемые службами SSAS для поддержания групп членов, называются элементами группирования и выглядят как обычные элементы.
Свойство DiscretizationMethod определяет, создают ли службы SSAS группирования, а также определяет тип выполняемого группирования. По умолчанию в службах Analysis Services группирование не выполняется. Возможные значения свойства DiscretizationMethod приведены в Таблица 9.1.
Значение 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 определяет, является ли иерархия атрибута видимой независимо от пользовательской иерархии.
Если иерархия атрибута включена, может возникнуть необходимость указать значения следующих трех дополнительных свойств:
IsAggregatable. По умолчанию для всех иерархий атрибутов задается уровень "( All )". Чтобы отключить уровень "( All )" для включенной иерархии атрибута, задайте для этого свойства значение False. Атрибут, свойство IsAggregatable которого установлено в значение false, может использоваться только в качестве корневого элемента многоуровневой иерархии, и для него должен быть указан элемент по умолчанию (в противном случае элемент по умолчанию будет выбран ядром служб SSAS).AttributeHierarchyOrdered. По умолчанию в службах SSAS элементы включенных иерархий атрибутов сортируются при обработке, а затем сохраняются в зависимости от значения свойства OrderBy, например "Имя" или "Ключ". Если сортировка не важна, производительность обработки можно повысить, указав для этого свойства значение False.AttributeHierarchyOptimizedState. По умолчанию в службах SSAS создается индекс для каждой включенной иерархии атрибута при обработке, чтобы повысить производительность выполнения запросов. Если не планируется использовать иерархию атрибута для просмотра, можно повысить производительность обработки, задав в качестве значения этого свойства NotOptimized. Тем не менее, если скрытая иерархия используется в качестве ключевого атрибута измерения, создание индекса элементов атрибута позволит повысить производительность.Эти свойства неприменимы, если иерархия атрибута отключена.
Иногда может оказаться необходимым отсортировать элементы атрибута по вторичному атрибуту. Например, если ни имя, ни значение ключа первичного атрибута не обеспечивают нужного порядка сортировки, можно использовать вторичный атрибут. Однако вторичный атрибут, по имени или ключу которого будет производиться сортировка, должен быть связан с первичным.
Связи атрибутов определяют связи или зависимости между атрибутами. В измерении, основанном на единственной реляционной таблице, все атрибуты обычно связаны друг с другом через ключевой атрибут. Причиной этого является то, что все атрибуты измерения предоставляют сведения об элементах, связанных ключевым атрибутом измерения с фактами таблицы фактов для каждой связанной группы мер. В измерении, которое основано на нескольких таблицах, атрибуты обычно связаны посредством ключа соединения между таблицами.
Однако пользователю могут оказаться интересны дополнительные сведения об элементах на конкретном уровне иерархии. Конструктор измерений позволяет определить дополнительные связи атрибутов или изменить установленные по умолчанию связи в целях повышения производительности. Основное ограничение при создании связи атрибутов состоит в необходимости обеспечить, чтобы упоминаемый атрибут имел только одно значение для каждого элемента атрибута, с которым он связан. При определении связи двух атрибутов ее можно сделать жесткой или гибкой в зависимости от того, могут ли связи между элементами со временем меняться. Например, сотрудник может быть переведен в другой регион продаж, однако город не переместится в другой регион. Если связь определена как жесткая, статистические выражения для атрибутов не будут повторно вычисляться каждый раз при инкрементной обработке измерения. Тем не менее, если связь между элементами изменяется, измерение должно обрабатываться полностью.
Иерархии атрибутов внутри пользовательских иерархий можно упорядочивать по уровням, чтобы предоставлять пользователям пути перемещения в кубе. Пользовательская иерархия может отражать естественную иерархию, такую как города, область и страна, или просто путь перемещения, например фамилию сотрудника, его должность и название отдела. Для пользователя, перемещающегося по иерархии, нет разницы между этими двумя типами пользовательских иерархий.
В естественной иерархии, если определены связи между атрибутами, составляющими уровни, службы SSAS могут использовать статистические вычисления по одному атрибуту для получения результатов из связанного атрибута. Если связи атрибутов не определены, в службах SSAS будут выполняться статистические вычисления по всем неключевым атрибутам из ключевого атрибута. Таким образом, если базовые данные позволяют, необходимо определить связи между атрибутами. Это повышает производительность обработки измерений, секций и выполнения запросов.
При определении связи атрибутов можно указать ее тип: гибкая или жесткая. Если связь определена как жесткая, агрегаты в службах SSAS сохраняются при обновлении измерения. Если изменяется связь, определенная как жесткая, а измерение обработано не полностью, в службах SSAS формируется ошибка при обработке. Верное определение связей и свойств связей повышает скорость запросов и обработки.
В процессе обработки измерения службами SSAS его атрибуты заполняются всеми уникальными значениями, полученными из базовых столбцов представлений и таблиц в представлении источника данных. Если при обработке службы SSAS обнаруживают значение NULL, по умолчанию оно преобразуется в нулевое значение для числовых столбцов или в пустую строку - для строковых. Можно изменить значения по умолчанию или преобразовывать значения NULL в процессе извлечения, преобразования или загрузки (если они выполняются) данных из базового реляционного хранилища данных. Кроме того, службы SSAS могут быть настроены для преобразования значения NULL в указанное значение настройкой трех свойств: UnknownMember и UnknownMemberName для измерения и свойства NullProcessing для ключевого атрибута измерения.
Мастер измерений и мастер кубов включают эти свойства в том случае, если ключевой атрибут измерения допускает значения NULL или корневой атрибут измерения, связанного по схеме "снежинка", основан на столбце, который допускает значения NULL. В этих случаях свойству NullProcessing ключевого атрибута будет присвоено значение UnknownMember, а свойству UnknownMember - значение Visible.
Однако при добавочном построении измерений, связанных по схеме "снежинка" (как в измерении " Product " в этом цикле лабораторных работ), или при определении измерений с помощью конструктора измерений и их последующей интеграции в куб может потребоваться ручная установка свойств UnknownMember и NullProcessing.
В меню "Файл" выберите команду "Закрыть проект".
В меню "Файл" выберите команду "Открыть", а затем команду "Проект или решение".
Перейдите в папку " C:\Program Files\Microsoft SQL Server\100\Samples\Analysis Services\Tutorials\Lesson4 Start " и дважды щелкните файл Analysis Services Tutorial.sln (рисунок 9.3).
(рис 9.3) Открытие проекта Analysis Services Tutorial из папки SamplesРазверните улучшенную версию проекта Analysis Services Tutorial на локальном экземпляре служб Analysis Services. Перед началом развертывания появится сообщение о перезаписи существующей базы (рисунок 9.4). Убедитесь, что обработка завершена успешно ( рисунок 9.5).

(рис 9.5) Предупреждение о перезаписи существующей БД Analysis Services Tutorial(рис 9.4) Сообщение об успешном завершении развертывания
Улучшенная версия проекта отличается от той версии проекта Analysis Services Tutorial, которая была завершена на первых четырех лабораторных работах.
Представление источника данных в улучшенной версии проекта содержит одну дополнительную таблицу фактов и четыре дополнительные таблицы измерений из базы данных AdventureWorksDW2008 (рисунок 9.6).
(рис 9.6) Дополнительные таблица фактов и таблицы измеренийОбратите внимание, что, поскольку представление источника данных содержит уже десять таблиц, схема <Все таблицы> выглядит переполненной. Это затрудняет нахождение нужных таблиц и понимание связей между ними. Для разрешения этой проблемы таблицы поделены между двумя логическими схемами: Internet Sales и Reseller Sales (рисунок 9.7).
(рис 9.7) Дополнительные логические схемыКаждая из диаграмм построена на основе одной таблицы фактов. Создание логических схем позволяет просматривать определенные подмножества таблиц в представлении источника данных и работать с ними, вместо того чтобы всегда просматривать все таблицы и их связи в единой схеме.
Схема Internet Sales содержит таблицы, которые относятся к продаже продуктов Adventure Works напрямую покупателям через Интернет. В этой диаграмме содержится четыре таблицы измерений и одна таблица фактов, которые были добавлены в представление источника данных во второй лабораторной работе. Это таблицы Geography, Customer, Date, Product и InternetSales (рисунок 9.7).
(рис 9.7) Схема Internet SalesСхема Reseller Sales содержит таблицы, относящиеся к продаже продуктов компании Adventure Works при помощи посредников. Эта схема содержит семь следующих таблиц измерений и одну таблицу фактов из базы данных AdventureWorksDW2008: Reseller, Promotion, SalesTerritory, Geography, Date, Product, Employee, ResellerSales (рисунок 9.8).
(рис 9.8) Схема Reseller SalesОбратите внимание, что таблицы DimGeography, DimDate и DimProduct используются как в схеме Internet Sales, так и в схеме Reseller Sales. Таблицы измерений могут быть связаны с несколькими таблицами фактов.
Проект Analysis Services Tutorial содержит пять новых измерений баз данных, куб Analysis Services Tutorial содержит те же пять измерений в качестве измерений куба. Эти измерения были определены таким образом, чтобы включать пользовательские иерархии и атрибуты, которые были изменены с использованием именованных вычислений, составных ключей элементов и папок отображения. Новые измерения описаны в следующем списке:
Reseller основано на таблице Reseller в представлении источника данных Adventure Works DW;Promotion основано на таблице Promotion ;Sales Territory основано на таблице SalesTerritory ;Employee основано на таблице Employee ;Geography основано на таблице Geography.Куб Analysis Services Tutorial теперь содержит две группы мер: исходную группу мер, основанную на таблице InternetSales, и вторую группу мер, основанную на таблице ResellerSales в представлении источника данных Adventure Works DW.
Иерархия типа "родители-потомки" представляет собой иерархию в измерении, которая основана на двух столбцах таблицы. Вместе эти столбцы определяют иерархическую связь между элементами измерения. Первый столбец, называемый ключевым столбцом элемента, идентифицирует каждый элемент измерения. Второй столбец, называемый родительским столбцом, идентифицирует родителя для каждого из элементов измерения. Свойство NamingTemplate родительского атрибута определяет имя каждого уровня в иерархии типа "родители-потомки", а свойство MembersWithData - будут ли отображаться данные для родительских элементов.
При выполнении задач этого раздела будет создан шаблон именования, определяющий имя каждого из уровней в иерархии типа "родители-потомки" в измерении Employee. Затем этот родительский атрибут будет настроен таким образом, чтобы все данные о родителях были скрыты и отображались только данные по продажам для элементов конечного уровня.
В обозревателе решений дважды щелкните значок Employee.dim в папке "Измерения", чтобы открыть конструктор измерений для измерения Employee (рисунок 9.9).
(рис 9.9) Конструктор измерений для измерения EmployeeПерейдите на вкладку "Обозреватель", убедитесь, что в списке "Иерархия" выбран элемент Employees, а затем разверните элемент All Employees (рисунок 9.10).
(рис 9.10) Содержимое измерения EmployeesОбратите внимание, что сотрудник Ken J. Sanchez - менеджер высшего уровня в этой иерархии типа "родители-потомки". Выберите элемент Ken J. Sanchez. Обратите внимание, что имя уровня для этого элемента - Level 02. (Имя уровня указано сразу после надписи "Текущий уровень:" над элементом All Employees.) Далее будут определены более понятные имена для каждого уровня.
Раскройте элемент Ken J. Sanchez, чтобы увидеть имена всех сотрудников, подчиняющихся этому менеджеру, а затем выберите элемент Brian S. Welcker, чтобы узнать имя этого уровня. Обратите внимание, что имя уровня для этого элемента - Level 03.
В обозревателе решений в папке "Кубы" дважды щелкните значок Analysis Services Tutorial.cube, чтобы открыть конструктор кубов для куба Analysis Services Tutorial. Перейдите на вкладку "Обозреватель" (рисунок 9.11).
(рис 9.11) Вкладка "Обозреватель" конструктора кубов для куба Analysis Services TutorialНа панели метаданных последовательно раскройте элементы " Measures " и " Reseller Sales ", щелкните правой кнопкой мыши пункт " Reseller Sales-Sales Amount " и в контекстном меню выберите пункт "Добавить в область данных" (рисунок 9.12).
(рис 9.12) Контекстное меню меры "Reseller Sales-Sales Amount"В области метаданных разверните измерение " Employee " и перетащите иерархию " Employees " в область "Перетащите сюда поля строк" в области данных (рисунок 9.13).
(рис 9.13) Добавленная иерархия "Employees" измерения "Employee"Все элементы иерархии " Employees " будут добавлены на панель данных в свернутом виде. На панели данных раскройте столбец " Level02 " иерархии "Employees", затем поочередно раскройте остальные уровни, чтобы просмотреть элементы уровней от 02 до 05 (рисунок 9.14).
(рис 9.14) Вложенные элементыОбратите внимание, что продажи, совершенные каждым менеджером уровня 04, отображаются и на уровне 05. Это связано с тем, что каждый менеджер является также подчиненным другого менеджера. Далее предстоит скрыть эти суммы продаж.
В конструкторе измерений откройте измерение " Employee ". Перейдите на вкладку "Структура измерения", а затем выберите иерархию атрибута " Employees " на панели "Атрибуты" (рисунок 9.15).
(рис 9.15) Атрибут "Employees" измерения "Employee"Обратите внимание на уникальный значок атрибута. Этот значок указывает, что атрибут является ключом родителя в иерархии типа "родители-потомки". Обратите внимание, что в окне свойств свойство " Usage " (Использование) для этого атрибута определено как " Parent " (Родитель) (рисунок 9.16).
(рис 9.16) Свойство "Usage" атрибута "Employees"Это свойство устанавливается мастером измерений во время создания измерения. Мастер автоматически выявляет связи типа "родители-потомки".
В окне свойств в ячейке свойства " NamingTemplate " нажмите кнопку с многоточием (...).В диалоговом окне "Шаблон именования уровней" (рисунок 9.17) необходимо задать шаблон именования уровней, который определяет имена уровней в иерархии типа "родители-потомки", отображаемых при просмотре кубов.
(рис 9.17) Диалоговое окно "Шаблон именования уровней"Во второй строке (*) в столбце Имя введите "Уровень сотрудника *", а затем щелкните третью строку (рисунок 9.18).
(рис 9.18) Введенный шаблон именования уровнейОбратите внимание, что под полем "Результат" каждый уровень теперь называется "Уровень сотрудника", за которым следует последовательно увеличивающееся число. Нажмите кнопку ОК.
В окне "Свойства" для атрибута " Employees " в ячейке значения свойства " MembersWithData " выберите " NonLeafDataHidden ", чтобы изменить это значение для атрибута " Employees " (рисунок 9.19).
(рис 9.19) Свойства MembersWithData атрибута EmployeesДанные в иерархии типа "родители-потомки", которые относятся к элементам уровня, не являющегося конечными, будут скрыты.
В меню "Построение" среды BI Dev Studio выберите команду "Развернуть Analysis Services Tutorial". После успешного завершения развертывания перейдите в конструктор кубов и откройте куб Analysis Services Tutorial. Затем на панели инструментов вкладки "Обозреватель" нажмите кнопку "Повторное соединение".
В левой панели конструктора в измерении " Employee " выберите " Employees " и перетащите эту иерархию в область "Перетащите сюда поля строк". Раскройте иерархию несколько раз, чтобы открыть рисунок 9.20
(рис 9.20) Измененная иерархия EmployessОбратите внимание, что имена уровней теперь более наглядны и значения продаж по каждому из менеджеров больше не отображаются. Однако обратите внимание, что итог для каждого уровня отображает итог по каждому из сотрудников, включая скрытую сумму для менеджера. В последующих лабораторных работах будет изучено включение такого отображения итогов, при котором в итоге для уровня "Уровень сотрудника 05" отображаются только видимые пользователю значения.
В ходе выполнения задач данного раздела будут опробованы следующие критерии группирования: значение годового дохода в измерении " Customer ", количество часов отсутствия по болезни в измерении " Employees ", данные о количестве часов отпуска сотрудников в измерении " Employees ". Затем предстоит выполнить обработку куба Analysis Services Tutorial и просмотреть результаты группирования элементов. На конечной стадии будут изменены свойства групп элементов, чтобы выявить эффект от изменения типа группирования.
В обозревателе решений дважды щелкните элемент " Customer " в папке "Измерения". Будет открыт конструктор измерений для измерения " Customer ". В области "Представление источника данных" щелкните правой кнопкой мыши таблицу " Customer " и в контекстном меню (рисунок 9.21) выберите команду "Просмотр данных" (рисунок 9.22).

(рис 9.22) Контекстное меню таблицы "Customer" в конструкторе измерения "Customer"(рис 9.21) Просмотр данных таблицы "Customer"Обратите внимание на диапазон данных в столбце YearlyIncome. Указанные значения используются для заполнения иерархии атрибута Yearly Income, если не включено группирование элементов.
Закройте вкладку "Просмотр" таблицы "Customer". В области "Атрибуты" выберите атрибут " Yearly Income ". В окне свойств измените значение свойства DiscretizationMethod на Automatic, а значение свойства DiscretizationBucketCount - на 5 (рисунок 9.23).
(рис 9.23) Окно свойств атрибута "Yearly Income"
В конструкторе измерений откройте измерение " Employee ". В области "Представление источника данных" щелкните правой кнопкой мыши таблицу " Employee " и выберите команду "Просмотр данных" (рисунок 9.24).
(рис 9.24) Данные таблицы "Employee"Обратите внимание на значения столбцов " SickLeaveHours " и " VacationHours ". Закройте вкладку "Просмотр" таблицы " Employee ".
В области "Атрибуты" выберите атрибут " Sick Leave Hours ". В окне свойств измените значение свойства DiscretizationMethod на Clusters, а значение свойства DiscretizationBucketCount - на 5.
(рис 9.25) Свойства атрибута "Sick Leave Hours"В области "Атрибуты" выберите атрибут " Vacation Hours " .В окне свойств измените значение свойства DiscretizationMethod на EqualAreas, а значение свойства DiscretizationBucketCount - на 5.
(рис 9.26) Свойства атрибута "Vacation Hours"
В меню "Построение" среды BI Dev Studio выберите команду "Развернуть Analysis Services Tutorial". После завершения развертывания переключитесь в конструктор кубов на куб Analysis Services Tutorial, а затем нажмите кнопку "Повторное соединение" на вкладке "Обозреватель".
Удалите из области данных все меры и все уровни иерархии " Employees " из области полей строк. Для этого щелкните область данных правой кнопкой мыши и выберите команду "Очистить результаты".
В раздел данных области "Данные" добавьте меру " Internet Sales-Sales Amount ". Для этого щелкните правой кнопкой мыши меру " Internet Sales-Sales Amount " и выберите команду "Добавить в область данных".
В области метаданных разверните измерение "Product", а затем перетащите пользовательскую иерархию " Product Model Lines " в область "Перетащите сюда поля строк в области данных".
В области Метаданные раскройте измерение " Customer ", разверните папку отображения " Demographic " и перетяните иерархию атрибута " Yearly Income " в область "Перетащите сюда поля столбцов" (рисунок 9.27).
(рис 9.27) Данные о продажах через Интернет по клиентам, автоматически распределенным по группам на основе годового доходаТеперь элементы иерархии атрибута " Yearly Income " сгруппированы в шесть сегментов, один из которых содержит данные о клиентах с неизвестным годовым доходом. Отображаются не все сегменты.
Удалите иерархию атрибута " Yearly Income " из области столбца и удалите меру " Internet Sales-Sales Amount " из области данных. Добавьте меру " Reseller Sales-Sales Amount " в область данных. В области метаданных разверните измерение " Employee ", затем узел " Organization ", щелкните правой кнопкой мыши элемент " Sick Leave Hours " и выберите команду "Добавить в область столбцов" (рисунок 9.28).
(рис 9.28) Зависимость объемов продаж от количества часов отпуска по болезниОбратите внимание, что все продажи были сделаны сотрудниками, включенными в одну из двух групп. Чтобы просмотреть остальные три группы, в которых находятся данные о сотрудниках без продаж, щелкните правой кнопкой мыши область данных и выберите пункт "Показывать пустые ячейки". Кроме того, обратите внимание, что сотрудники, отсутствовавшие по болезни от 32 до 42 часов, сделали существенно больше продаж, чем сотрудники, отсутствовавшие от 20 часов до 31 часа.
Удалите иерархию атрибута " Sick Leave Hours " из раздела столбцов области данных. Добавьте столбец " Vacation Hours " в зону столбцов области данных (рисунок 9.29).
(рис 9.29) Зависимость продаж от количества часов выходныхОбратите внимание, что отображаются две группы, созданные с помощью метода группирования по равным областям. Остальные три группы не показаны, так как не содержат значений.
Измените свойство DiscretizationBucketCount для атрибута Vacation Hours на значение 10. Разверните заново проект Analysis Services Tutorial. После завершения развертывания переключитесь в конструктор кубов на куб Analysis Services Tutorial. На вкладке "Обозреватель" нажмите кнопку "Повторное подключение" и просмотрите результаты изменения метода группирования.
(рис 9.30) Зависимость продаж от количества часов выходных при свойстве DiscretizationBucketCount=10Обратите внимание, что созданы три группы элементов атрибута " Vacation Hours ", в которых содержатся данные об объемах продаж продукции. В остальных 7 группах содержатся элементы без данных о продажах.
В этом разделе необходимо отключить номера социального страхования и другие атрибуты в измерении " Employee ", которые не будут использоваться для просмотра. Затем предстоит скрыть иерархии атрибутов имени заказчика и почтового кода в измерении " Customer ". Если у этих иерархий много элементов атрибутов, их просмотр будет достаточно медленным вне зависимости от пользовательской иерархии.
Откройте конструктор измерений для измерения " Employee " и откройте вкладку "Обозреватель". Проверьте, присутствуют ли в раскрывающемся списке "Иерархия" следующие иерархии атрибутов (рисунок 9.31):
Base Rate (Базовая ставка);Birth Date (Дата рождения);Login ID (Имя входа);Manager SSN (ИНН менеджера);SSN (ИНН).
(рис 9.31) Иерархии атрибутов измерения "Employee"Перейдите на вкладку "Структура измерения", а затем выберите следующие атрибуты в области "Атрибуты" (несколько атрибутов можно выбрать путем удерживания клавиши CTRL при их выборе) ( рисунок 9.32):
Base Rate (Базовая ставка);Birth Date (Дата рождения);Login ID (Имя входа);Manager SSN (ИНН менеджера);SSN (ИНН).
(рис 9.32) Выбранные атрибуты на вкладке "Структура"В окне свойств установите для свойства AttributeHierarchyEnabled выбранных атрибутов значение False (рисунок 9.33).
(рис 9.33) Свойство AttributeHierarchyEnabledОбратите внимание, что в области "Атрибуты" значок каждого из атрибутов изменился и указывает, что этот атрибут отключен (рисунок 9.34).
(рис 9.34) Отключенные атрибуты в области "Атрибуты"Разверните проект Analysis Services Tutorial. После успешного окончания развертывания перейдите на вкладку "Обозреватель", нажмите кнопку "Повторное соединение" и просмотрите измененные иерархии атрибутов (рисунок 935).
(рис 9.35) Измененный перечень иерархий атрибутовОбратите внимание, что элементы измененных атрибутов недоступны для просмотра в качестве иерархий атрибутов в списке "Иерархия". При попытке добавления отключенной иерархии атрибута в качестве уровня пользовательской иерархии будет выведено сообщение об ошибке, уведомляющее о том, что для включения в пользовательскую иерархию необходимо активировать иерархию атрибута (рисунок 9.36).
(рис 9.36) Сообщение об ошибке при добавлении в иерархию отключенного атрибута
Откройте конструктор измерений для измерения " Customer " и откройте вкладку "Обозреватель". Проверьте, входят ли в раскрывающийся список "Иерархия" следующие иерархии атрибутов (рисунок 9.38):
Full Name (Полное имя);Postal Code (Почтовый индекс).
(рис 9.38) Иерархии атрибутов измерения "Customer"Перейдите на вкладку "Структура измерения" и выберите одновременно следующие атрибуты на панели "Атрибуты":
Full Name (Полное имя);Postal Code (Почтовый индекс).В окне свойств установите для свойства AttributeHierarchyVisible выбранных атрибутов значение False. Поскольку элементы этих иерархий атрибутов будут использоваться для разделения данных фактов по измерениям, их сортировка и оптимизация повысит производительность. Таким образом, свойство AttributeHierarchyEnabled этих атрибутов изменять не следует.
Перетащите атрибут с панели "Атрибуты" в пользовательскую иерархию " Customer Geography " заказчика панели "Иерархии и уровни" непосредственно под уровень " City " (рисунок 9.38).
(рис 9.38) Атрибут "Postal Code", добавленный в иерархию "CustomerGeography"Обратите внимание, что скрытый атрибут по-прежнему может быть уровнем пользовательской иерархии.
Разверните проет Analysis Services Tutorial. После успешного окончания развертывания перейдите на вкладку "Обозреватель" измерения " Customer " и нажмите кнопку Повторное соединение. Попробуйте выбрать одну из измененных иерархий атрибутов в списке "Иерархия" (рисунок 9.39).
(рис 9.39) Измененный перечень иерархий измерения "Customer"Обратите внимание, что ни одна из измененных иерархий атрибутов не отображается в списке "Иерархия". В списке "Иерархия" выберите значение " Customer Geography " и просмотрите каждый из уровней на панели обозревателя.
(рис 9.40) Иерархия "Customer Geography"Обратите внимание, что скрытые уровни " " и " Full Name " видны в пользовательской иерархии.
Далее будет определен новый атрибут в измерении " Date " на основе существующего столбца базовой таблицы измерения. Созданный атрибут будет использован для сортировки элементов календарного месяца хронологически, а не по алфавиту. Кроме того, будет определен новый атрибут в измерении " Customer " на основе именованного вычисления, которое будет использовано для сортировки элементов атрибута " ". В задачах следующего раздела будет изучено, как использовать связи атрибутов для повышения производительности запросов.
Откройте измерение " Date " в конструкторе измерений и в окне свойств просмотрите свойство " OrderBy " для атрибута " Month Name " (рисунок 9.41).
(рис 9.41) Свойство "OrderBy" для атрибута "Month Name"Обратите внимание, что элементы атрибута " Month Name " отсортированы по ключевым значениям.
Перейдите на вкладку "Обозреватель", убедитесь, что в списке "Иерархии" выбрано значение " Calendar Date ", после чего раскройте уровни пользовательской иерархии и просмотрите порядок сортировки календарных месяцев (рисунок 9.42).
(рис 9.42) Уровни иерархии Calendar DateОбратите внимание, что элементы иерархии атрибута отсортированы по ASCII-значениям ключей их элементов, то есть месяца и года. В этом случае сортировка по имени атрибута или ключу не сортирует календарные месяцы хронологически. Для решения этой проблемы элементы иерархии атрибута будут отсортированы на основе нового атрибута " MonthNumberOfYear ". Этот атрибут будет создан на основе столбца, который содержится в таблице измерения " Date ".
Перейдите на вкладку "Структура измерения" для измерения даты, щелкните правой кнопкой мыши пункт " MonthNumberOfYear " в области "Представление источника данных" и в контекстном меню выберите команду "Создать атрибут из столбца" (рисунок 9.43).
(рис 9.43) Контекстное меню столбца "MonthNumberOfYear"В области "Атрибуты" выберите атрибут " MonthNumberOfYear " и в окне "Свойства" установите для свойства AttributeHierarchyEnabled значение False. Укажите для свойства AttributeHierarchyOptimizedState значение NotOptimized, а для свойства AttributeHierarchyOrdered - значение False (рисунок 9.44).
(рис 9.44) Свойства атрибута "MonthNumberOfYear"Установка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он будет использован только для упорядочивания элементов другого атрибута.
Перейдите на вкладку "Связи атрибутов" (рисунок 9.45).
(рис 9.45) Вкладка "Связи атрибутов" конструктора измерения "Date"Обратите внимание, что все атрибуты в измерении " Date " связаны непосредственно с атрибутом " Date ", который является ключевым элементом, связывающим элементы измерения с фактами в связанных группах мер. Между атрибутами " Month Name " и " Month Number of Year " связи не определены.
На схеме щелкните правой кнопкой мыши атрибут " Month Name " и в контекстном меню выберите команду "Создать связь атрибутов" (рисунок 9.46).
(рис 9.46) Контекстное меню атрибута "Month Name"В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " Month Name ". Задайте в поле "Связанный атрибут" значение " Month Number of Year " (рисунок 9.47).
(рис 9.47) Диалоговое окно "Создать связь атрибутов"В списке "Тип связи" выберите тип связи "Жесткая". Связи между элементами атрибута " Month Name " и " Month Number of Year " не будут меняться со временем. В результате службы SSAS не удалят статистические выражения для этой связи во время добавочной обработки. Если происходит изменение, возникнет ошибка изменений во время добавочной обработки, и нужно будет выполнить полную обработку измерения. Нажмите кнопку ОК.
Теперь можно приступить к выбору порядка сортировки элементов атрибута " Month Name ".
Перейдите на вкладку "Структура измерения". Выберите атрибут " Month Name " в области "Атрибуты", после чего измените значение свойства " OrderBy " в окне свойств на " AttributeKey ", а свойства " OrderByAttribute " - на " Month Number of Year " (рисунок 9.48).
(рис 9.48) Свойства атрибута "Month Name"Разверните проект Analysis Services Tutorial. После успешного завершения развертывания перейдите на вкладку "Обозреватель" измерения "Date", нажмите кнопку "Повторное соединение" и просмотрите пользовательские иерархии " Calendar Date " (рисунок 9.49) и " Fiscal Date " (рисунок 9.50), чтобы убедиться, что месяцы отсортированы в хронологическом порядке.

(рис 9.50) Элементы иерархии "Calendar Date"(рис 9.49) Элементы иерархии Fiscal Date
Перейдите в конструкторе измерений на вкладку "Обозреватель" измерения " Customer " и просмотрите элементы иерархии атрибута " " (Расстояние до работы,рисунок 9.51).
(рис 9.51) Элементы иерархии атрибута "Commute Distance"Обратите внимание, что элементы иерархии атрибута отсортированы по ASCII-значениям ключа элементов. В этом случае сортировка по имени или ключу атрибута не сортирует расстояние до работы по принципу "от меньшего к большему". Далее будет выполнена сортировка элементов иерархии атрибута на основе именованного вычисления "CommuteDistanceSort", которое присваивает подходящий номер сортировки каждому значению столбца. В целях экономии времени это именованное вычисление уже добавлено в таблицу " Customer " в представлении источника данных Adventure Works DW (рисунок 9.52).
(рис 9.52) Именованное вычисление "CommuteDistanceSort" в таблице "Customer"Чтобы просмотреть сценарий SQL, используемый в этом именованном вычислении, в окне свойств для этого вычисления просмотрите значение свойства Expression (рисунок 9.53).
(рис 9.53) Значение свойства Expression вычисления CommuteDistanceSortПерейдите на вкладку "Структура измерения" конструктора измерений для измерения " Customer ", щелкните правой кнопкой пункт " CommuteDistanceSort " в таблице " Customer " в области "Представление источника данных" и в контекстном меню выберите команду "Создать атрибут из столбца" (
рисунок 9.54).
(рис 9.54) Контекстное меню вычисления CommuteDistanceSortВ области "Атрибуты" выберите атрибут " CommuteDistanceSort ", затем укажите для свойства AttributeHierarchyEnabled этого атрибута значение False. В окне свойств укажите для свойства AttributeHierarchyOptimizedState значение NotOptimized, а для свойства AttributeHierarchyOrdered - значение False (рисунок 9.55).
(рис 9.55) Свойства атрибута CommuteDistanceSortУстановка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он будет использован только для упорядочивания элементов другого атрибута.
Выберите атрибут " Geography ", в окне свойств задайте для его свойства AttributeHierarchyVisible значение False, для свойства AttributeHierarchyOptimizedState - значение NotOptimized, а для свойства AttributeHierarchyOrdered - значение False.
Установка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он может быть использован только для упорядочивания элементов другого атрибута. Поскольку атрибут " Geography " имеет свойства элемента, его свойство AttributeHierarchyEnabled должно иметь значение True. Таким образом, чтобы скрыть атрибут, необходимо присвоить его свойству AttributeHierarchyVisible значение False.
Перейдите на вкладку "Связи атрибутов". В списке атрибутов щелкните правой кнопкой мыши атрибут " " и в его контекстном меню выберите команду "Создать связь атрибутов" (
рисунок 9.56).
(рис 9.56) Контекстное меню атрибута "Commute Distance"В диалоговом окне "Создать связи атрибутов" свойство "Исходный атрибут" имеет значение " ". Задайте для свойства "Связанный атрибут" значение " " (рисунок 9.57).
(рис 9.57) Диалоговое окно "Создать связи атрибутов"В списке "Тип связи" выберите тип связи "Жесткая". Связь между элементами атрибута " " и " " не меняется со временем. Нажмите кнопку ОК.
Теперь можно приступить к определению порядка сортировки атрибута " ". Перейдите на вкладку "Структура измерения". В области "Атрибуты" выберите атрибут " ", затем в окне свойств измените значение свойства OrderBy на AttributeKey, а значение свойства OrderByAttribute на (рисунок 9.58).
(рис 9.58) Свойства атрибута "Commute Distance"Разверните проект Analysis Services Tutorial. После успешного завершения развертывания перейдите на вкладку "Обозреватель" конструктора измерений для измерения " Customer ", нажмите кнопку "Повторное соединение" и просмотрите иерархию атрибута " " (рисунок 9.59).
(рис 9.59) Элементы иерархии атрибута "Commute Distance"Обратите внимание, что элементы иерархии атрибута теперь отсортированы в логическом порядке, основанном на увеличении расстояния.
Далее будут определены связи атрибутов, входящих в естественные пользовательские иерархии в проекте Analysis Services Tutorial. В их число входит иерархия " Customer Geography " измерения " Customer ", иерархия " Sales Territories " измерения " Sales Territory ", иерархия " Product Model Lines " измерения " Product " и иерархии " Fiscal Date " и " Calendar Date " измерения " Date ". Все эти пользовательские иерархии являются естественными иерархиями.
Откройте конструктор измерений для измерения " Customer ", затем откройте вкладку "Структура измерения" (рисунок 9.60).
(рис 9.60) Вкладка "Структура измерения" для измерения "Customer"В области "Иерархии" обратите внимание на уровни определяемой пользователем иерархии " Customer Geography ". Эта иерархия в настоящий момент представляет для пользователя только набор уровней детализации, так как между уровнями и атрибутами никакие связи не определены.
Перейдите на вкладку "Связи атрибутов" (рисунок 9.61).
(рис 9.61) Вкладка "Связи атрибутов" для измерения "Customer"Обратите внимание на четыре связи атрибутов, которые связывают неключевые атрибуты из таблицы " Geography " с ключевым атрибутом из таблицы " Geography ". Обратите внимание, что атрибут " Geography " связан с атрибутом " Full Name ". Атрибут " " косвенно связан с атрибутом " Full Name " через атрибут " Geography ", поскольку " " связан с атрибутом " Geography ", а атрибут " Geography " связан с атрибутом " Full Name ". Далее необходимо изменить связи атрибутов таким образом, чтобы исключить использование атрибута " Geography ".
На схеме щелкните правой кнопкой мыши атрибут " Full Name " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" свойство "Исходный атрибут" имеет значение " Full Name ". Задайте для свойства "Связанный атрибут значение " ". В списке "Тип связи" оставьте выбранным тип "Гибкая", поскольку связи между элементами могут измениться с течением времени (рисунок 9.62).
(рис 9.62) Диалоговое окно "Создать связь атрибутов"Нажмите кнопку ОК. На схеме появляется значок предупреждения, поскольку эта связь избыточна (рисунок 9.63).
(рис 9.63) Предупреждение об избыточности связиСвязь " Full Name" -> "Geography" -> " " уже существует, и создается связь " Full Name" -> " ". Теперь связь " Geography " - > " " является избыточной, поэтому удалим ее. В области "Связи атрибутов" щелкните правой кнопкой мыши связь " Geography " -> " " и в контекстном меню выберите команду "Удалить" (рисунок 9.64).
(рис 9.64) Контекстное меню связи "Geography" -> "Postal Code"В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.65).
(рис 9.65) Диалоговое окно "Удаление объектов"На схеме щелкните правой кнопкой мыши атрибут " " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " ". Задайте для поля "Связанный атрибут" значение " City ". В списке "Тип связи" оставьте выбранным тип "Гибкая". Нажмите кнопку ОК (рисунок 9.66).
(рис 9.66) Связь "Postal Code"->"City"Теперь связь " Geography " -> " City " является избыточной, поэтому удалим ее. В области "Связи атрибутов" щелкните правой кнопкой мыши связь " Geography " - > " City " и выберите команду "Удалить". В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.67).
(рис 9.67) Схема после удаления связи "Geography" -> "City"На схеме щелкните правой кнопкой мыши атрибут " City " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " City ". Для поля "Связанный атрибут" задайте значение " State-Province ". В списке "Тип связи" задайте тип связи "Жесткая", поскольку связь между городом и штатом со временем не изменится. Нажмите кнопку ОК (рисунок 9.68).
(рис 9.68) Добавленная связь "City"->"State-Province"Щелкните правой кнопкой мыши стрелку между элементами " Geography "и " State-Province ", а затем в контекстном меню выберите команду "Удалить". В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.69).
(рис 9.69) Схема после удаления связи "Geography"->"State-Province"На схеме щелкните правой кнопкой мыши атрибут " State-Province " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " State-Province ". Задайте для поля "Связанный атрибут" значение " Country-Region ". В списке "Тип связи" выберите тип связи "Жесткая", поскольку связь между штатом и страной (регионом) со временем не изменится. Нажмите кнопку ОК.
В области "Связи атрибутов" щелкните правой кнопкой мыши связь " Geography " -> " Country-Region ", а затем выберите команду "Удалить". В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.70).
(рис 9.70) Схема после добавления связи "State-Province"->"Country-Region"и удаления связи "Geography" -> "Country-Region"Перейдите на вкладку "Структура измерения". В области "Атрибуты" щелкните правой кнопкой мыши атрибут " Geography " и в контекстном меню выберите команду "Удалить" (рисунок 9.71).
(рис 9.71) Контекстное меню атрибута "Geography"Этот атрибут больше не нужен. В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК. В меню "Файл" выберите команду "Сохранить все".
Откройте измерение " Sales Territory " в конструкторе измерений и перейдите на вкладку "Связи атрибутов" (рисунок 9.72).
(рис 9.72) Схема связи атрибутов измерения "Sales Territory"На схеме щелкните правой кнопкой мыши атрибут " Sales Territory Country " и в контекстном меню выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" свойство "Исходный атрибут" имеет значение " Sales Territory Country ". Задайте для свойства "Связанный атрибут" значение " Sales Territory Group ". В списке "Тип связи" оставьте выбранным тип "Гибкая". Нажмите кнопку ОК (рисунок 9.73).
(рис 9.73) Измененная схема связи атрибутов измерения "Sales Territory"Атрибут Sales Territory Group теперь связан с атрибутом Sales Territory Country, а он, в свою очередь, с атрибутом Sales Territory Region. Свойству RelationshipType для каждой из этих связей должно быть присвоено значение "Гибкая", поскольку со временем распределение регионов по стране и стран по группам может измениться.
Откройте в конструкторе измерений измерение "Product" и перейдите на вкладку "Связи атрибутов" (рисунок 9.74).
(рис 9.74) Схема связи атрибутов иерархии Product Model LinesНа схеме щелкните правой кнопкой мыши атрибут " Model Name " и в контекстном меню выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " Model Name ". Задайте для поля "Связанный атрибут" значение " Product Line ". В списке "Тип связи" оставьте выбранным тип "Гибкая". Нажмите кнопку ОК (рисунок 9.75).
(рис 9.75) Измененная схема связи атрибутов иерархии Product Model Lines
Откройте в конструкторе измерений измерение "Date" и перейдите на вкладку "Связи атрибутов" (рисунок 9.76).
(рис 9.76) Схема связей атрибутов измерения "Date"На схеме щелкните правой кнопкой мыши атрибут " Month Name " и в контекстном меню выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " Month Name ". Установите поле "Связанный атрибут" в значение " Fiscal Quarter ". В списке "Тип связи" выберите тип связи "Жесткая". Нажмите кнопку ОК (рисунок 9.77).
(рис 9.77) Добавленная связь "Month Name"->"Fiscal Quarter"На схеме щелкните правой кнопкой мыши атрибут " Fiscal Quarter " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" свойство "Исходный атрибут имеет" значение " Fiscal Quarter ". Задайте для свойства "Связанный атрибут" значение " Fiscal Semester ". В списке "Тип связи" выберите тип связи "Жесткая". Нажмите кнопку ОК ().
(рис 9.78) Добавленная связь "Fiscal Quarter"->"Fiscal Semester"Самостоятельно создайте жесткую связь " Fiscal Semester" -> "Fiscal Year" (рисунок 9.79).
(рис 9.79) Добавленная связь"Fiscal Semester" -> "Fiscal Year"
Самостоятельно создайте жесткие связи "Month Name"-> "Calendar Quarter", " Calendar Quarter" -> "Calendar Semester", "Calendar Semester" -> "Calendar Year" (рисунок 9.80)
(рис 9.80) Окончательная структура иерархии "Calendar Date"
Откройте в конструкторе измерений измерение " Geography " и перейдите на вкладку "Связи атрибутов" (рисунок 9.81).
(рис 9.81) Схема связей атрибутов измерения "Geography"Создайте гибкую связь " (рисунок 9.82).
(рис 9.82) Измененная схема связей атрибутов измерения "Geography"На схеме щелкните правой кнопкой мыши атрибут " Geography Key и выберите пункт Свойства.
Установите для атрибута " Geography Key " свойство AttributeHierarchyOptimizedState в значение NotOptimized, а свойства AttributeHierarchyOrdered и AttributeHierarchyVisible - в значение False.
В меню "Файл" выберите команду "Сохранить все". Разверните проект Analysis Services Tutorial.
Далее будут добавлены атрибуты категории и подкатегории товара в измерение " Product " из таблиц, связанных по схеме "снежинка", которые, в свою очередь, будут добавлены в представление источника данных Adventure Works DW. Затем необходимо включить свойство UnknownMember для измерения " Product ", для свойства UnknownMemberName - указать значение Assembly Components, связать атрибуты и Category с атрибутом названия продукта, а затем определить пользовательскую обработку ошибок для ключевого атрибута элемента, который связывает таблицы, связанные по схеме "снежинка".
Если изначально куб Analysis Services Tutorial был определен с помощью мастера кубов, при добавлении атрибутов и Category эти шаги будут выполнены автоматически.
Откройте конструктор измерений для измерения " Product ", перейдите на вкладку "Структура измерения" и выберите в области "Атрибуты" элемент " Product " (рисунок 9.83).
(рис 9.83) Структура измерения "Product"Теперь можно просматривать и изменять свойства самого измерения. В окне "Свойства" просмотрите свойства UnknownMember и UnknownMemberName (рисунок 9.84).
(рис 9.84) Свойства измерения "Product"Обратите внимание, что свойство UnknownMember отключено, поскольку для него указано значение " None " вместо " Visible " или " Hidden ", и что для свойства UnknownMemberName никакое имя не задано.
В окне свойств в ячейке свойств ErrorConfiguration выберите "(пользовательский)" (рисунок 9.85) и раскройте ErrorConfiguration (рисунок 9.86).

(рис 9.86) Свойство ErrorConfiguration измерения "Product"(рис 9.85) Коллекция свойств ErrorConfigurationВыбор значения "(пользовательский)" для свойства ErrorConfiguration позволяет просмотреть используемые по умолчанию настройки конфигурации обработки ошибок; настройки при этом не изменяются. Просмотрите свойства конфигурации ошибок ключа и ошибок ключа NULL, однако не вносите изменения. Обратите внимание, что по умолчанию при преобразовании ключа NULL в неизвестный элемент ошибка обработки, связанная с этим преобразованием, пропускается (свойство NullKeyConvertToUnknown ).
Перейдите на вкладку "Обозреватель" и убедитесь, что в списке "Иерархия" выбран параметр " Product Model Lines ", а затем раскройте узел " All Products ".
(рис 9.87) Элементы узла "All Products"Обратите внимание на пять элементов уровня " Product Line ". Раскройте узел " Components ", а затем раскройте немаркированный элемент уровня " Model Name " (рисунок 9.88).
(рис 9.88) Компоненты сборки для создания других компонентовЭтот уровень содержит компоненты сборки, используемые при построении других компонентов, начиная с продукта " Adjustable ".
Откройте конструктор представления источника данных для представления источника данных "Adventure Works DW", в области "Организатор схем" выберите " Reseller Sales ", а затем выберите команду "Добавить или удалить таблицы" в меню "Представление источника данных" среды BI Dev Studio (рисунок 9.89).
(рис 9.89) Конструктор представления источника данныхОткроется диалоговое окно "Добавление или удаление таблиц" (рисунок 9.90).
(рис 9.90) Диалоговое окно "Добавление или удаление таблиц"В списке "Включенные объекты" выберите " dbo.DimProduct ", а затем нажмите кнопку "Добавить связанные таблицы" (рисунок 9.91).
(рис 9.91) Добавленная таблица dbo.DimProductSubcategoryТаблица " dbo.DimProductSubcategory " будет добавлена в список "Включенные объекты". Повторно нажмите кнопку "Добавить связанные таблицы". При этом таблица " dbo.DimProductSubcategory " должна быть выбрана по умолчанию как последняя добавленная. Таблица " dbo.DimProductСategory " будет добавлена в список "Включенные объекты". Нажмите кнопку ОК.
В меню "Формат" среды BI Dev Studio последовательно выберите команды "Автоматический макет" и "Диаграмма" (рисунок 9.92).
(рис 9.92) Схема "Reseller Sales"Обратите внимание, что таблицы " dbo.DimProductSubcategory " и " dbo.DimProductCategory " связаны друг с другом, а также с таблицей " ResellerSales " через таблицу " Product ".
Откройте конструктор измерений для измерения " Product " и откройте вкладку "Структура измерения". Щелкните правой кнопкой мыши область "Представление источника данных" и в контекстном меню выберите команду "Показать все таблицы" (рисунок 9.93).
(рис 9.93) Контекстное меню области "Представление источника данных"В области "Представление источника данных" найдите таблицу " DimProductCategory ", щелкните правой кнопкой мыши столбец " ProductCategoryKey " в этой таблице и в контекстном меню выберите команду "Создать атрибут из столбца" (рисунок 9.94).
(рис 9.94) Контекстное меню столбца "ProductCategoryKey" В области "Атрибуты" измените имя нового атрибута на " Category " (рисунок 9.95).
(рис 9.95) Изменение имени атрибута "ProductCategoryKey" на "Category"В окне "Свойства" щелкните в поле свойства NameColumn, а затем нажмите кнопку обзора (…) (рисунок 9.96), чтобы открыть диалоговое окно "Столбец имени" (рисунок 9.97).

(рис 9.97) Свойства атрибута "Category"(рис 9.96) Диалоговое окно "Столбец имени"В списке "Исходный столбец" выберите " EnglishProductSubCategoryName " и нажмите кнопку ОК.
В области "Представление источника данных" найдите таблицу " DimProductSubCategory ", щелкните правой кнопкой мыши столбец " ProductSubCategoryKey " в этой таблице и в контекстном меню выберите команду "Создать атрибут из столбца".
В области "Атрибуты" измените имя нового атрибута на . В окне свойств щелкните поле свойства " NameColumn ", затем нажмите кнопку обзора (…), чтобы открыть диалоговое окно "Столбец имени". В списке "Исходный столбец" выберите " EnglishProductSubcategoryName " и нажмите кнопку ОК.
Создайте новую пользовательскую иерархию под названием " Product Categories " со следующими уровнями (сверху вниз): " Category ", " " и " Product Name " (,рисунок 9.98).
(рис 9.98) Новая иерархия "Product Categories"Укажите для свойства " AllMemberName " пользовательской иерархии " Product Categories " значение " All Products " (рисунок 9.99).
(рис 9.99) Свойство "AllMemberName" пользовательской иерархии "Product Categories"
На панели инструментов вкладки "Структура измерения" в окне "Конструктор измерений" для измерения " Product " нажмите кнопку "Обработка" (рисунок 9.100).
(рис 9.100) Кнопка "Обработка" панели инструментовВ сообщении о начале выполнения сборки (рисунок 9.101) нажмите кнопку "Да", чтобы создать и развернуть проект, а затем нажмите кнопку "Выполнить", чтобы выполнить обработку измерения " Product " (
рисунок 9.102).

(рис 9.102) Сообщение о начале выполнения сборки(рис 9.101) Диалоговое окно обработки измерения "Product"По завершении обработки раскройте узел "Обработка измерения " Product " завершена успешно" в диалоговом окне "Ход обработки", раскройте узел "Обработка Атрибут измерения " Product Name " завершена", а затем раскройте узел "Запросы SQL 1" (рисунок 9.103).
(рис 9.103) Результаты хода обработкиЩелкните запрос SELECT DISTINCT, а затем нажмите кнопку "Просмотреть" (рисунок 9.104).
(рис 9.104) Запрос SELECT DISTINCTОбратите внимание, что к предложению SELECT DISTINCT было добавлено предложение WHERE, удаляющее продукты, для которых не задано значение в столбце " ProductSubcategoryKey ".
Три раза нажмите кнопку "Закрыть", чтобы закрыть все диалоговые окна.
Перейдите на вкладку "Обозреватель" конструктора измерений для измерения " Product " и нажмите кнопку "Повтор соединения". Убедитесь, что значение " Product Model Lines " появляется в списке "Иерархия", и последовательно раскройте узлы " All Products " и" Components " (рисунок 9.105).
(рис 9.105) Элементы иерархии "Product Model Lines"Обратите внимание, что список компонентов сборки пуст из-за предложения WHERE в инструкции SELECT DISTINCT.
В списке "Иерархия" выберите значение " Product Categories " и последовательно раскройте узлы " All Products " и " Components ".
(рис 9.106) Обратите внимание, что не отображается ни один из компонентов сборки.
Чтобы изменить характер работы, описанный в предыдущей задаче, в измерении " Products " следует включить свойство " UnknownMember ", установить значение свойства " UnknownMemberName ", установить параметр " NullProcessing " в значение " UnknownMember " для атрибутов " " и" Model Name ", связать атрибут " Category " с атрибутом " " и атрибут " Product Line " с атрибутом " Model Name ". В результате выполнения этих действий службы SSAS станут использовать значение имени неизвестного элемента для товаров, не имеющих значений в столбце " SubcategoryKey ", как будет показано далее.
В конструкторе измерений для измерения " Product " перейдите на вкладку "Структура измерения", затем в области "Атрибуты" выберите атрибут " Product ".
В окне "Свойства" задайте для свойства " UnknownMember " значение "Visible", а для свойства " UnknownMemberName " - значение " Assembly Components " (рисунок 9.107).
(рис 9.107) Свойства измерения "Product"Перейдите на вкладку "Связи атрибутов". На схеме щелкните правой кнопкой мыши атрибут " " и выберите команду "Создать связь атрибутов".
(рис 9.108) В диалоговом окне "Создать связь атрибутов" свойство "Исходный" атрибут имеет значение " ". Задайте для свойства "Связанный атрибут" значение " Category ". Оставьте для типа связи значение "Гибкая" (рисунок 9.109).
(рис 9.109) Создание связи атрибутов "Subcategory" и "Category"Нажмите кнопку ОК.
В области "Атрибуты" выберите элемент " ". В окне "Свойства" разверните свойство " KeyColumns ", затем свойство " DimProductSubcategory. ProductSubcategoryKey (Integer) ". Установите для свойства " NullProcessing " значение " UnknownMember " (
рисунок 9.110).
(рис 9.110) Свойства атрибута SubcategoryВ области "Атрибуты" выберите элемент " Model Name ". В окне "Свойства" разверните свойство " KeyColumns ", затем свойство " Product.ModelName (WChar) ". Установите для свойства " NullProcessing " значение " UnknownMember " (рисунок 9.111).
(рис 9.111) Свойства атрибута Model NameПосле внесения этих изменений, если во время обработки в службах SSAS для атрибута " " или " Model Name " встретится значение NULL, значение неизвестного элемента будет заменено значением ключа и определенные пользователем иерархии будут созданы правильно.
Разверните Analysis Services Tutorial. После успешного развертывания перейдите на вкладку "Обозреватель" в конструкторе измерений для измерения " Product " и нажмите кнопку "Повтор соединения". Убедитесь, что в списке "Иерархия" выбран параметр " Product Categories " и раскройте узел " All Products " (рисунок 9.112).
(рис 9.112) Содержимое иерархии "Product Categories"Обратите внимание, что элемент " Assembly Components " отображается в качестве нового элемента на уровне категории. Раскройте элемент " Assembly Components " на уровне " Category ", а затем раскройте элемент " Assembly Components " на уровне " ". Обратите внимание, что все компоненты сборки отображаются на уровне " Product Name ".
Выберите элемент " Product Model Lines " в списке "Иерархия", раскройте узел " All Products ", раскройте элемент " Assembly Components " на уровне " Product Line ", а затем раскройте элемент " Assembly Components " на уровне " Model Name " (рисунок 9.113).
(рис 9.113) Содержимое иерархии "Product Model Lines"Обратите внимание, что все компоненты сборки теперь отображаются на уровне " Product Name ".
Иерархия типа "родители-потомки" представляет собой стандартное измерение, содержащее родительский атрибут. Родительский атрибут описывает связь, ссылающуюся на себя, или самосоединение в пределах главной таблицы измерения. Иерархии типа "родители-потомки" создаются из одного родительского атрибута. Иерархии типа "родители-потомки" присваивается только один уровень, поскольку присутствующие в ней уровни наследуют связи типа "родители-потомки" между элементами, связанными с родительским атрибутом. Положение элемента в пределах иерархии типа "родители-потомки" определяется свойствами KeyColumns и RootMemberIf родительского атрибута, в то время как положение элемента в пределах уровня определяется свойством OrderBy родительского атрибута.
Из-за связей типа "родители-потомки" между уровнями в иерархии типа "родители-потомки" некоторые неконечные элементы, помимо данных, статистически вычисленных из дочерних элементов, могут также иметь данные, наследуемые из базовых источников данных.
Схема измерения иерархии типа "родители-потомки" зависит от связи, ссылающейся на себя, присутствующей в главной таблице измерения. Например, на
рисунок 9.1 показана главная таблица измерения DimOrganization в образце базы данных AdventureWorksDW.
(рис 9.1) Таблица измерения DimOrganizationВ этой таблице измерения столбец ParentOrganizationKey имеет связь по внешнему ключу со столбцом первичного ключа OrganizationKey. Другими словами, каждая запись в этой таблице может быть соотнесена посредством связи типа "родители-потомки" с другой записью в таблице. Подобный тип самосоединения обычно используется для представления данных сущности организации (например, структуры управления сотрудниками в отделе).
Измерения, не имеющие связи типа "родители-потомки", образуют иерархии путем группирования и упорядочивания атрибутов. Эти измерения получают имена уровней для своих иерархий из имен атрибутов.
Однако измерения типа "родители-потомки" формируют иерархии типа "родители-потомки" путем проверки данных, которые содержатся в главной таблице измерения, и последующей оценки связей типа "родители-потомки" между записями в таблице.
Иерархии типа "родители-потомки" не создают имена для уровней в иерархии типа "родители-потомки" на основе атрибутов, используемых для создания иерархии. Вместо этого такие измерения автоматически создают имена уровней по шаблону именования - строкового выражения, которое может быть задано на уровне родительского атрибута, управляющего процессом формирования иерархии атрибута.
Обычно конечные элементы в измерении содержат данные, получаемые непосредственно из базовых источников данных, а неконечные элементы содержат данные, получаемые в результате статистических вычислений, применяемых к дочерним элементам.
Однако иерархии типа "родители-потомки" могут содержать некоторые неконечные элементы, данные которых выводятся из базовых источников данных в дополнение к данным, статистически вычисленным из дочерних элементов. Для этих неконечных элементов в иерархии типа "родители-потомки" можно создавать специальные дочерние элементы, формируемые системой, которые содержат данные базовых таблиц фактов. Они называются элементами данных и содержат значение, которое непосредственно связано с неконечным элементом и независимо от сводного значения, вычисленного на основе наследников неконечного элемента.
При просмотре куба обычно выполняется распределение по измерениям элементов одной иерархии атрибута на основе элементов другой иерархии атрибута. Например, можно сгруппировать продажи по таким признакам, как город, приобретенный товар или пол. Однако при работе с некоторыми типами атрибутов лучше группировать их элементы автоматически с использованием служб SSAS, основываясь на распределении элементов в рамках иерархии атрибута. Например, с помощью служб SSAS можно объединить заказчиков в группы на основе их годового дохода. При этом пользователь, просматривающий иерархию атрибута, будет видеть названия и значения групп вместо самих элементов групп. Данный подход ограничивает количество отображаемых уровней, что упрощает анализ данных.
Группа элементов является созданным системой набором последовательных элементов измерения. В службах SSAS элементы атрибута могут группироваться в различные группы элементов в ходе процесса, называемого дискретизацией. Уровень в иерархии содержит либо группы элементов, либо элементы, но не и то, и другое сразу. Когда пользователи выполняют обзор уровня, содержащего группы элементов, они видят имена и значения ячеек групп элементов. Элементы, формируемые службами SSAS для поддержания групп членов, называются элементами группирования и выглядят как обычные элементы.
Свойство DiscretizationMethod определяет, создают ли службы SSAS группирования, а также определяет тип выполняемого группирования. По умолчанию в службах Analysis Services группирование не выполняется. Возможные значения свойства DiscretizationMethod приведены в Таблица 9.1.
Значение 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 определяет, является ли иерархия атрибута видимой независимо от пользовательской иерархии.
Если иерархия атрибута включена, может возникнуть необходимость указать значения следующих трех дополнительных свойств:
IsAggregatable. По умолчанию для всех иерархий атрибутов задается уровень "( All )". Чтобы отключить уровень "( All )" для включенной иерархии атрибута, задайте для этого свойства значение False. Атрибут, свойство IsAggregatable которого установлено в значение false, может использоваться только в качестве корневого элемента многоуровневой иерархии, и для него должен быть указан элемент по умолчанию (в противном случае элемент по умолчанию будет выбран ядром служб SSAS).AttributeHierarchyOrdered. По умолчанию в службах SSAS элементы включенных иерархий атрибутов сортируются при обработке, а затем сохраняются в зависимости от значения свойства OrderBy, например "Имя" или "Ключ". Если сортировка не важна, производительность обработки можно повысить, указав для этого свойства значение False.AttributeHierarchyOptimizedState. По умолчанию в службах SSAS создается индекс для каждой включенной иерархии атрибута при обработке, чтобы повысить производительность выполнения запросов. Если не планируется использовать иерархию атрибута для просмотра, можно повысить производительность обработки, задав в качестве значения этого свойства NotOptimized. Тем не менее, если скрытая иерархия используется в качестве ключевого атрибута измерения, создание индекса элементов атрибута позволит повысить производительность.Эти свойства неприменимы, если иерархия атрибута отключена.
Иногда может оказаться необходимым отсортировать элементы атрибута по вторичному атрибуту. Например, если ни имя, ни значение ключа первичного атрибута не обеспечивают нужного порядка сортировки, можно использовать вторичный атрибут. Однако вторичный атрибут, по имени или ключу которого будет производиться сортировка, должен быть связан с первичным.
Связи атрибутов определяют связи или зависимости между атрибутами. В измерении, основанном на единственной реляционной таблице, все атрибуты обычно связаны друг с другом через ключевой атрибут. Причиной этого является то, что все атрибуты измерения предоставляют сведения об элементах, связанных ключевым атрибутом измерения с фактами таблицы фактов для каждой связанной группы мер. В измерении, которое основано на нескольких таблицах, атрибуты обычно связаны посредством ключа соединения между таблицами.
Однако пользователю могут оказаться интересны дополнительные сведения об элементах на конкретном уровне иерархии. Конструктор измерений позволяет определить дополнительные связи атрибутов или изменить установленные по умолчанию связи в целях повышения производительности. Основное ограничение при создании связи атрибутов состоит в необходимости обеспечить, чтобы упоминаемый атрибут имел только одно значение для каждого элемента атрибута, с которым он связан. При определении связи двух атрибутов ее можно сделать жесткой или гибкой в зависимости от того, могут ли связи между элементами со временем меняться. Например, сотрудник может быть переведен в другой регион продаж, однако город не переместится в другой регион. Если связь определена как жесткая, статистические выражения для атрибутов не будут повторно вычисляться каждый раз при инкрементной обработке измерения. Тем не менее, если связь между элементами изменяется, измерение должно обрабатываться полностью.
Иерархии атрибутов внутри пользовательских иерархий можно упорядочивать по уровням, чтобы предоставлять пользователям пути перемещения в кубе. Пользовательская иерархия может отражать естественную иерархию, такую как города, область и страна, или просто путь перемещения, например фамилию сотрудника, его должность и название отдела. Для пользователя, перемещающегося по иерархии, нет разницы между этими двумя типами пользовательских иерархий.
В естественной иерархии, если определены связи между атрибутами, составляющими уровни, службы SSAS могут использовать статистические вычисления по одному атрибуту для получения результатов из связанного атрибута. Если связи атрибутов не определены, в службах SSAS будут выполняться статистические вычисления по всем неключевым атрибутам из ключевого атрибута. Таким образом, если базовые данные позволяют, необходимо определить связи между атрибутами. Это повышает производительность обработки измерений, секций и выполнения запросов.
При определении связи атрибутов можно указать ее тип: гибкая или жесткая. Если связь определена как жесткая, агрегаты в службах SSAS сохраняются при обновлении измерения. Если изменяется связь, определенная как жесткая, а измерение обработано не полностью, в службах SSAS формируется ошибка при обработке. Верное определение связей и свойств связей повышает скорость запросов и обработки.
В процессе обработки измерения службами SSAS его атрибуты заполняются всеми уникальными значениями, полученными из базовых столбцов представлений и таблиц в представлении источника данных. Если при обработке службы SSAS обнаруживают значение NULL, по умолчанию оно преобразуется в нулевое значение для числовых столбцов или в пустую строку - для строковых. Можно изменить значения по умолчанию или преобразовывать значения NULL в процессе извлечения, преобразования или загрузки (если они выполняются) данных из базового реляционного хранилища данных. Кроме того, службы SSAS могут быть настроены для преобразования значения NULL в указанное значение настройкой трех свойств: UnknownMember и UnknownMemberName для измерения и свойства NullProcessing для ключевого атрибута измерения.
Мастер измерений и мастер кубов включают эти свойства в том случае, если ключевой атрибут измерения допускает значения NULL или корневой атрибут измерения, связанного по схеме "снежинка", основан на столбце, который допускает значения NULL. В этих случаях свойству NullProcessing ключевого атрибута будет присвоено значение UnknownMember, а свойству UnknownMember - значение Visible.
Однако при добавочном построении измерений, связанных по схеме "снежинка" (как в измерении " Product " в этом цикле лабораторных работ), или при определении измерений с помощью конструктора измерений и их последующей интеграции в куб может потребоваться ручная установка свойств UnknownMember и NullProcessing.
В меню "Файл" выберите команду "Закрыть проект".
В меню "Файл" выберите команду "Открыть", а затем команду "Проект или решение".
Перейдите в папку " C:\Program Files\Microsoft SQL Server\100\Samples\Analysis Services\Tutorials\Lesson4 Start " и дважды щелкните файл Analysis Services Tutorial.sln (рисунок 9.3).
(рис 9.3) Открытие проекта Analysis Services Tutorial из папки SamplesРазверните улучшенную версию проекта Analysis Services Tutorial на локальном экземпляре служб Analysis Services. Перед началом развертывания появится сообщение о перезаписи существующей базы (рисунок 9.4). Убедитесь, что обработка завершена успешно ( рисунок 9.5).

(рис 9.5) Предупреждение о перезаписи существующей БД Analysis Services Tutorial(рис 9.4) Сообщение об успешном завершении развертывания
Улучшенная версия проекта отличается от той версии проекта Analysis Services Tutorial, которая была завершена на первых четырех лабораторных работах.
Представление источника данных в улучшенной версии проекта содержит одну дополнительную таблицу фактов и четыре дополнительные таблицы измерений из базы данных AdventureWorksDW2008 (рисунок 9.6).
(рис 9.6) Дополнительные таблица фактов и таблицы измеренийОбратите внимание, что, поскольку представление источника данных содержит уже десять таблиц, схема <Все таблицы> выглядит переполненной. Это затрудняет нахождение нужных таблиц и понимание связей между ними. Для разрешения этой проблемы таблицы поделены между двумя логическими схемами: Internet Sales и Reseller Sales (рисунок 9.7).
(рис 9.7) Дополнительные логические схемыКаждая из диаграмм построена на основе одной таблицы фактов. Создание логических схем позволяет просматривать определенные подмножества таблиц в представлении источника данных и работать с ними, вместо того чтобы всегда просматривать все таблицы и их связи в единой схеме.
Схема Internet Sales содержит таблицы, которые относятся к продаже продуктов Adventure Works напрямую покупателям через Интернет. В этой диаграмме содержится четыре таблицы измерений и одна таблица фактов, которые были добавлены в представление источника данных во второй лабораторной работе. Это таблицы Geography, Customer, Date, Product и InternetSales (рисунок 9.7).
(рис 9.7) Схема Internet SalesСхема Reseller Sales содержит таблицы, относящиеся к продаже продуктов компании Adventure Works при помощи посредников. Эта схема содержит семь следующих таблиц измерений и одну таблицу фактов из базы данных AdventureWorksDW2008: Reseller, Promotion, SalesTerritory, Geography, Date, Product, Employee, ResellerSales (рисунок 9.8).
(рис 9.8) Схема Reseller SalesОбратите внимание, что таблицы DimGeography, DimDate и DimProduct используются как в схеме Internet Sales, так и в схеме Reseller Sales. Таблицы измерений могут быть связаны с несколькими таблицами фактов.
Проект Analysis Services Tutorial содержит пять новых измерений баз данных, куб Analysis Services Tutorial содержит те же пять измерений в качестве измерений куба. Эти измерения были определены таким образом, чтобы включать пользовательские иерархии и атрибуты, которые были изменены с использованием именованных вычислений, составных ключей элементов и папок отображения. Новые измерения описаны в следующем списке:
Reseller основано на таблице Reseller в представлении источника данных Adventure Works DW;Promotion основано на таблице Promotion ;Sales Territory основано на таблице SalesTerritory ;Employee основано на таблице Employee ;Geography основано на таблице Geography.Куб Analysis Services Tutorial теперь содержит две группы мер: исходную группу мер, основанную на таблице InternetSales, и вторую группу мер, основанную на таблице ResellerSales в представлении источника данных Adventure Works DW.
Иерархия типа "родители-потомки" представляет собой иерархию в измерении, которая основана на двух столбцах таблицы. Вместе эти столбцы определяют иерархическую связь между элементами измерения. Первый столбец, называемый ключевым столбцом элемента, идентифицирует каждый элемент измерения. Второй столбец, называемый родительским столбцом, идентифицирует родителя для каждого из элементов измерения. Свойство NamingTemplate родительского атрибута определяет имя каждого уровня в иерархии типа "родители-потомки", а свойство MembersWithData - будут ли отображаться данные для родительских элементов.
При выполнении задач этого раздела будет создан шаблон именования, определяющий имя каждого из уровней в иерархии типа "родители-потомки" в измерении Employee. Затем этот родительский атрибут будет настроен таким образом, чтобы все данные о родителях были скрыты и отображались только данные по продажам для элементов конечного уровня.
В обозревателе решений дважды щелкните значок Employee.dim в папке "Измерения", чтобы открыть конструктор измерений для измерения Employee (рисунок 9.9).
(рис 9.9) Конструктор измерений для измерения EmployeeПерейдите на вкладку "Обозреватель", убедитесь, что в списке "Иерархия" выбран элемент Employees, а затем разверните элемент All Employees (рисунок 9.10).
(рис 9.10) Содержимое измерения EmployeesОбратите внимание, что сотрудник Ken J. Sanchez - менеджер высшего уровня в этой иерархии типа "родители-потомки". Выберите элемент Ken J. Sanchez. Обратите внимание, что имя уровня для этого элемента - Level 02. (Имя уровня указано сразу после надписи "Текущий уровень:" над элементом All Employees.) Далее будут определены более понятные имена для каждого уровня.
Раскройте элемент Ken J. Sanchez, чтобы увидеть имена всех сотрудников, подчиняющихся этому менеджеру, а затем выберите элемент Brian S. Welcker, чтобы узнать имя этого уровня. Обратите внимание, что имя уровня для этого элемента - Level 03.
В обозревателе решений в папке "Кубы" дважды щелкните значок Analysis Services Tutorial.cube, чтобы открыть конструктор кубов для куба Analysis Services Tutorial. Перейдите на вкладку "Обозреватель" (рисунок 9.11).
(рис 9.11) Вкладка "Обозреватель" конструктора кубов для куба Analysis Services TutorialНа панели метаданных последовательно раскройте элементы " Measures " и " Reseller Sales ", щелкните правой кнопкой мыши пункт " Reseller Sales-Sales Amount " и в контекстном меню выберите пункт "Добавить в область данных" (рисунок 9.12).
(рис 9.12) Контекстное меню меры "Reseller Sales-Sales Amount"В области метаданных разверните измерение " Employee " и перетащите иерархию " Employees " в область "Перетащите сюда поля строк" в области данных (рисунок 9.13).
(рис 9.13) Добавленная иерархия "Employees" измерения "Employee"Все элементы иерархии " Employees " будут добавлены на панель данных в свернутом виде. На панели данных раскройте столбец " Level02 " иерархии "Employees", затем поочередно раскройте остальные уровни, чтобы просмотреть элементы уровней от 02 до 05 (рисунок 9.14).
(рис 9.14) Вложенные элементыОбратите внимание, что продажи, совершенные каждым менеджером уровня 04, отображаются и на уровне 05. Это связано с тем, что каждый менеджер является также подчиненным другого менеджера. Далее предстоит скрыть эти суммы продаж.
В конструкторе измерений откройте измерение " Employee ". Перейдите на вкладку "Структура измерения", а затем выберите иерархию атрибута " Employees " на панели "Атрибуты" (рисунок 9.15).
(рис 9.15) Атрибут "Employees" измерения "Employee"Обратите внимание на уникальный значок атрибута. Этот значок указывает, что атрибут является ключом родителя в иерархии типа "родители-потомки". Обратите внимание, что в окне свойств свойство " Usage " (Использование) для этого атрибута определено как " Parent " (Родитель) (рисунок 9.16).
(рис 9.16) Свойство "Usage" атрибута "Employees"Это свойство устанавливается мастером измерений во время создания измерения. Мастер автоматически выявляет связи типа "родители-потомки".
В окне свойств в ячейке свойства " NamingTemplate " нажмите кнопку с многоточием (...).В диалоговом окне "Шаблон именования уровней" (рисунок 9.17) необходимо задать шаблон именования уровней, который определяет имена уровней в иерархии типа "родители-потомки", отображаемых при просмотре кубов.
(рис 9.17) Диалоговое окно "Шаблон именования уровней"Во второй строке (*) в столбце Имя введите "Уровень сотрудника *", а затем щелкните третью строку (рисунок 9.18).
(рис 9.18) Введенный шаблон именования уровнейОбратите внимание, что под полем "Результат" каждый уровень теперь называется "Уровень сотрудника", за которым следует последовательно увеличивающееся число. Нажмите кнопку ОК.
В окне "Свойства" для атрибута " Employees " в ячейке значения свойства " MembersWithData " выберите " NonLeafDataHidden ", чтобы изменить это значение для атрибута " Employees " (рисунок 9.19).
(рис 9.19) Свойства MembersWithData атрибута EmployeesДанные в иерархии типа "родители-потомки", которые относятся к элементам уровня, не являющегося конечными, будут скрыты.
В меню "Построение" среды BI Dev Studio выберите команду "Развернуть Analysis Services Tutorial". После успешного завершения развертывания перейдите в конструктор кубов и откройте куб Analysis Services Tutorial. Затем на панели инструментов вкладки "Обозреватель" нажмите кнопку "Повторное соединение".
В левой панели конструктора в измерении " Employee " выберите " Employees " и перетащите эту иерархию в область "Перетащите сюда поля строк". Раскройте иерархию несколько раз, чтобы открыть рисунок 9.20
(рис 9.20) Измененная иерархия EmployessОбратите внимание, что имена уровней теперь более наглядны и значения продаж по каждому из менеджеров больше не отображаются. Однако обратите внимание, что итог для каждого уровня отображает итог по каждому из сотрудников, включая скрытую сумму для менеджера. В последующих лабораторных работах будет изучено включение такого отображения итогов, при котором в итоге для уровня "Уровень сотрудника 05" отображаются только видимые пользователю значения.
В ходе выполнения задач данного раздела будут опробованы следующие критерии группирования: значение годового дохода в измерении " Customer ", количество часов отсутствия по болезни в измерении " Employees ", данные о количестве часов отпуска сотрудников в измерении " Employees ". Затем предстоит выполнить обработку куба Analysis Services Tutorial и просмотреть результаты группирования элементов. На конечной стадии будут изменены свойства групп элементов, чтобы выявить эффект от изменения типа группирования.
В обозревателе решений дважды щелкните элемент " Customer " в папке "Измерения". Будет открыт конструктор измерений для измерения " Customer ". В области "Представление источника данных" щелкните правой кнопкой мыши таблицу " Customer " и в контекстном меню (рисунок 9.21) выберите команду "Просмотр данных" (рисунок 9.22).

(рис 9.22) Контекстное меню таблицы "Customer" в конструкторе измерения "Customer"(рис 9.21) Просмотр данных таблицы "Customer"Обратите внимание на диапазон данных в столбце YearlyIncome. Указанные значения используются для заполнения иерархии атрибута Yearly Income, если не включено группирование элементов.
Закройте вкладку "Просмотр" таблицы "Customer". В области "Атрибуты" выберите атрибут " Yearly Income ". В окне свойств измените значение свойства DiscretizationMethod на Automatic, а значение свойства DiscretizationBucketCount - на 5 (рисунок 9.23).
(рис 9.23) Окно свойств атрибута "Yearly Income"
В конструкторе измерений откройте измерение " Employee ". В области "Представление источника данных" щелкните правой кнопкой мыши таблицу " Employee " и выберите команду "Просмотр данных" (рисунок 9.24).
(рис 9.24) Данные таблицы "Employee"Обратите внимание на значения столбцов " SickLeaveHours " и " VacationHours ". Закройте вкладку "Просмотр" таблицы " Employee ".
В области "Атрибуты" выберите атрибут " Sick Leave Hours ". В окне свойств измените значение свойства DiscretizationMethod на Clusters, а значение свойства DiscretizationBucketCount - на 5.
(рис 9.25) Свойства атрибута "Sick Leave Hours"В области "Атрибуты" выберите атрибут " Vacation Hours " .В окне свойств измените значение свойства DiscretizationMethod на EqualAreas, а значение свойства DiscretizationBucketCount - на 5.
(рис 9.26) Свойства атрибута "Vacation Hours"
В меню "Построение" среды BI Dev Studio выберите команду "Развернуть Analysis Services Tutorial". После завершения развертывания переключитесь в конструктор кубов на куб Analysis Services Tutorial, а затем нажмите кнопку "Повторное соединение" на вкладке "Обозреватель".
Удалите из области данных все меры и все уровни иерархии " Employees " из области полей строк. Для этого щелкните область данных правой кнопкой мыши и выберите команду "Очистить результаты".
В раздел данных области "Данные" добавьте меру " Internet Sales-Sales Amount ". Для этого щелкните правой кнопкой мыши меру " Internet Sales-Sales Amount " и выберите команду "Добавить в область данных".
В области метаданных разверните измерение "Product", а затем перетащите пользовательскую иерархию " Product Model Lines " в область "Перетащите сюда поля строк в области данных".
В области Метаданные раскройте измерение " Customer ", разверните папку отображения " Demographic " и перетяните иерархию атрибута " Yearly Income " в область "Перетащите сюда поля столбцов" (рисунок 9.27).
(рис 9.27) Данные о продажах через Интернет по клиентам, автоматически распределенным по группам на основе годового доходаТеперь элементы иерархии атрибута " Yearly Income " сгруппированы в шесть сегментов, один из которых содержит данные о клиентах с неизвестным годовым доходом. Отображаются не все сегменты.
Удалите иерархию атрибута " Yearly Income " из области столбца и удалите меру " Internet Sales-Sales Amount " из области данных. Добавьте меру " Reseller Sales-Sales Amount " в область данных. В области метаданных разверните измерение " Employee ", затем узел " Organization ", щелкните правой кнопкой мыши элемент " Sick Leave Hours " и выберите команду "Добавить в область столбцов" (рисунок 9.28).
(рис 9.28) Зависимость объемов продаж от количества часов отпуска по болезниОбратите внимание, что все продажи были сделаны сотрудниками, включенными в одну из двух групп. Чтобы просмотреть остальные три группы, в которых находятся данные о сотрудниках без продаж, щелкните правой кнопкой мыши область данных и выберите пункт "Показывать пустые ячейки". Кроме того, обратите внимание, что сотрудники, отсутствовавшие по болезни от 32 до 42 часов, сделали существенно больше продаж, чем сотрудники, отсутствовавшие от 20 часов до 31 часа.
Удалите иерархию атрибута " Sick Leave Hours " из раздела столбцов области данных. Добавьте столбец " Vacation Hours " в зону столбцов области данных (рисунок 9.29).
(рис 9.29) Зависимость продаж от количества часов выходныхОбратите внимание, что отображаются две группы, созданные с помощью метода группирования по равным областям. Остальные три группы не показаны, так как не содержат значений.
Измените свойство DiscretizationBucketCount для атрибута Vacation Hours на значение 10. Разверните заново проект Analysis Services Tutorial. После завершения развертывания переключитесь в конструктор кубов на куб Analysis Services Tutorial. На вкладке "Обозреватель" нажмите кнопку "Повторное подключение" и просмотрите результаты изменения метода группирования.
(рис 9.30) Зависимость продаж от количества часов выходных при свойстве DiscretizationBucketCount=10Обратите внимание, что созданы три группы элементов атрибута " Vacation Hours ", в которых содержатся данные об объемах продаж продукции. В остальных 7 группах содержатся элементы без данных о продажах.
В этом разделе необходимо отключить номера социального страхования и другие атрибуты в измерении " Employee ", которые не будут использоваться для просмотра. Затем предстоит скрыть иерархии атрибутов имени заказчика и почтового кода в измерении " Customer ". Если у этих иерархий много элементов атрибутов, их просмотр будет достаточно медленным вне зависимости от пользовательской иерархии.
Откройте конструктор измерений для измерения " Employee " и откройте вкладку "Обозреватель". Проверьте, присутствуют ли в раскрывающемся списке "Иерархия" следующие иерархии атрибутов (рисунок 9.31):
Base Rate (Базовая ставка);Birth Date (Дата рождения);Login ID (Имя входа);Manager SSN (ИНН менеджера);SSN (ИНН).
(рис 9.31) Иерархии атрибутов измерения "Employee"Перейдите на вкладку "Структура измерения", а затем выберите следующие атрибуты в области "Атрибуты" (несколько атрибутов можно выбрать путем удерживания клавиши CTRL при их выборе) ( рисунок 9.32):
Base Rate (Базовая ставка);Birth Date (Дата рождения);Login ID (Имя входа);Manager SSN (ИНН менеджера);SSN (ИНН).
(рис 9.32) Выбранные атрибуты на вкладке "Структура"В окне свойств установите для свойства AttributeHierarchyEnabled выбранных атрибутов значение False (рисунок 9.33).
(рис 9.33) Свойство AttributeHierarchyEnabledОбратите внимание, что в области "Атрибуты" значок каждого из атрибутов изменился и указывает, что этот атрибут отключен (рисунок 9.34).
(рис 9.34) Отключенные атрибуты в области "Атрибуты"Разверните проект Analysis Services Tutorial. После успешного окончания развертывания перейдите на вкладку "Обозреватель", нажмите кнопку "Повторное соединение" и просмотрите измененные иерархии атрибутов (рисунок 935).
(рис 9.35) Измененный перечень иерархий атрибутовОбратите внимание, что элементы измененных атрибутов недоступны для просмотра в качестве иерархий атрибутов в списке "Иерархия". При попытке добавления отключенной иерархии атрибута в качестве уровня пользовательской иерархии будет выведено сообщение об ошибке, уведомляющее о том, что для включения в пользовательскую иерархию необходимо активировать иерархию атрибута (рисунок 9.36).
(рис 9.36) Сообщение об ошибке при добавлении в иерархию отключенного атрибута
Откройте конструктор измерений для измерения " Customer " и откройте вкладку "Обозреватель". Проверьте, входят ли в раскрывающийся список "Иерархия" следующие иерархии атрибутов (рисунок 9.38):
Full Name (Полное имя);Postal Code (Почтовый индекс).
(рис 9.38) Иерархии атрибутов измерения "Customer"Перейдите на вкладку "Структура измерения" и выберите одновременно следующие атрибуты на панели "Атрибуты":
Full Name (Полное имя);Postal Code (Почтовый индекс).В окне свойств установите для свойства AttributeHierarchyVisible выбранных атрибутов значение False. Поскольку элементы этих иерархий атрибутов будут использоваться для разделения данных фактов по измерениям, их сортировка и оптимизация повысит производительность. Таким образом, свойство AttributeHierarchyEnabled этих атрибутов изменять не следует.
Перетащите атрибут с панели "Атрибуты" в пользовательскую иерархию " Customer Geography " заказчика панели "Иерархии и уровни" непосредственно под уровень " City " (рисунок 9.38).
(рис 9.38) Атрибут "Postal Code", добавленный в иерархию "CustomerGeography"Обратите внимание, что скрытый атрибут по-прежнему может быть уровнем пользовательской иерархии.
Разверните проет Analysis Services Tutorial. После успешного окончания развертывания перейдите на вкладку "Обозреватель" измерения " Customer " и нажмите кнопку Повторное соединение. Попробуйте выбрать одну из измененных иерархий атрибутов в списке "Иерархия" (рисунок 9.39).
(рис 9.39) Измененный перечень иерархий измерения "Customer"Обратите внимание, что ни одна из измененных иерархий атрибутов не отображается в списке "Иерархия". В списке "Иерархия" выберите значение " Customer Geography " и просмотрите каждый из уровней на панели обозревателя.
(рис 9.40) Иерархия "Customer Geography"Обратите внимание, что скрытые уровни " " и " Full Name " видны в пользовательской иерархии.
Далее будет определен новый атрибут в измерении " Date " на основе существующего столбца базовой таблицы измерения. Созданный атрибут будет использован для сортировки элементов календарного месяца хронологически, а не по алфавиту. Кроме того, будет определен новый атрибут в измерении " Customer " на основе именованного вычисления, которое будет использовано для сортировки элементов атрибута " ". В задачах следующего раздела будет изучено, как использовать связи атрибутов для повышения производительности запросов.
Откройте измерение " Date " в конструкторе измерений и в окне свойств просмотрите свойство " OrderBy " для атрибута " Month Name " (рисунок 9.41).
(рис 9.41) Свойство "OrderBy" для атрибута "Month Name"Обратите внимание, что элементы атрибута " Month Name " отсортированы по ключевым значениям.
Перейдите на вкладку "Обозреватель", убедитесь, что в списке "Иерархии" выбрано значение " Calendar Date ", после чего раскройте уровни пользовательской иерархии и просмотрите порядок сортировки календарных месяцев (рисунок 9.42).
(рис 9.42) Уровни иерархии Calendar DateОбратите внимание, что элементы иерархии атрибута отсортированы по ASCII-значениям ключей их элементов, то есть месяца и года. В этом случае сортировка по имени атрибута или ключу не сортирует календарные месяцы хронологически. Для решения этой проблемы элементы иерархии атрибута будут отсортированы на основе нового атрибута " MonthNumberOfYear ". Этот атрибут будет создан на основе столбца, который содержится в таблице измерения " Date ".
Перейдите на вкладку "Структура измерения" для измерения даты, щелкните правой кнопкой мыши пункт " MonthNumberOfYear " в области "Представление источника данных" и в контекстном меню выберите команду "Создать атрибут из столбца" (рисунок 9.43).
(рис 9.43) Контекстное меню столбца "MonthNumberOfYear"В области "Атрибуты" выберите атрибут " MonthNumberOfYear " и в окне "Свойства" установите для свойства AttributeHierarchyEnabled значение False. Укажите для свойства AttributeHierarchyOptimizedState значение NotOptimized, а для свойства AttributeHierarchyOrdered - значение False (рисунок 9.44).
(рис 9.44) Свойства атрибута "MonthNumberOfYear"Установка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он будет использован только для упорядочивания элементов другого атрибута.
Перейдите на вкладку "Связи атрибутов" (рисунок 9.45).
(рис 9.45) Вкладка "Связи атрибутов" конструктора измерения "Date"Обратите внимание, что все атрибуты в измерении " Date " связаны непосредственно с атрибутом " Date ", который является ключевым элементом, связывающим элементы измерения с фактами в связанных группах мер. Между атрибутами " Month Name " и " Month Number of Year " связи не определены.
На схеме щелкните правой кнопкой мыши атрибут " Month Name " и в контекстном меню выберите команду "Создать связь атрибутов" (рисунок 9.46).
(рис 9.46) Контекстное меню атрибута "Month Name"В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " Month Name ". Задайте в поле "Связанный атрибут" значение " Month Number of Year " (рисунок 9.47).
(рис 9.47) Диалоговое окно "Создать связь атрибутов"В списке "Тип связи" выберите тип связи "Жесткая". Связи между элементами атрибута " Month Name " и " Month Number of Year " не будут меняться со временем. В результате службы SSAS не удалят статистические выражения для этой связи во время добавочной обработки. Если происходит изменение, возникнет ошибка изменений во время добавочной обработки, и нужно будет выполнить полную обработку измерения. Нажмите кнопку ОК.
Теперь можно приступить к выбору порядка сортировки элементов атрибута " Month Name ".
Перейдите на вкладку "Структура измерения". Выберите атрибут " Month Name " в области "Атрибуты", после чего измените значение свойства " OrderBy " в окне свойств на " AttributeKey ", а свойства " OrderByAttribute " - на " Month Number of Year " (рисунок 9.48).
(рис 9.48) Свойства атрибута "Month Name"Разверните проект Analysis Services Tutorial. После успешного завершения развертывания перейдите на вкладку "Обозреватель" измерения "Date", нажмите кнопку "Повторное соединение" и просмотрите пользовательские иерархии " Calendar Date " (рисунок 9.49) и " Fiscal Date " (рисунок 9.50), чтобы убедиться, что месяцы отсортированы в хронологическом порядке.

(рис 9.50) Элементы иерархии "Calendar Date"(рис 9.49) Элементы иерархии Fiscal Date
Перейдите в конструкторе измерений на вкладку "Обозреватель" измерения " Customer " и просмотрите элементы иерархии атрибута " " (Расстояние до работы,рисунок 9.51).
(рис 9.51) Элементы иерархии атрибута "Commute Distance"Обратите внимание, что элементы иерархии атрибута отсортированы по ASCII-значениям ключа элементов. В этом случае сортировка по имени или ключу атрибута не сортирует расстояние до работы по принципу "от меньшего к большему". Далее будет выполнена сортировка элементов иерархии атрибута на основе именованного вычисления "CommuteDistanceSort", которое присваивает подходящий номер сортировки каждому значению столбца. В целях экономии времени это именованное вычисление уже добавлено в таблицу " Customer " в представлении источника данных Adventure Works DW (рисунок 9.52).
(рис 9.52) Именованное вычисление "CommuteDistanceSort" в таблице "Customer"Чтобы просмотреть сценарий SQL, используемый в этом именованном вычислении, в окне свойств для этого вычисления просмотрите значение свойства Expression (рисунок 9.53).
(рис 9.53) Значение свойства Expression вычисления CommuteDistanceSortПерейдите на вкладку "Структура измерения" конструктора измерений для измерения " Customer ", щелкните правой кнопкой пункт " CommuteDistanceSort " в таблице " Customer " в области "Представление источника данных" и в контекстном меню выберите команду "Создать атрибут из столбца" (
рисунок 9.54).
(рис 9.54) Контекстное меню вычисления CommuteDistanceSortВ области "Атрибуты" выберите атрибут " CommuteDistanceSort ", затем укажите для свойства AttributeHierarchyEnabled этого атрибута значение False. В окне свойств укажите для свойства AttributeHierarchyOptimizedState значение NotOptimized, а для свойства AttributeHierarchyOrdered - значение False (рисунок 9.55).
(рис 9.55) Свойства атрибута CommuteDistanceSortУстановка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он будет использован только для упорядочивания элементов другого атрибута.
Выберите атрибут " Geography ", в окне свойств задайте для его свойства AttributeHierarchyVisible значение False, для свойства AttributeHierarchyOptimizedState - значение NotOptimized, а для свойства AttributeHierarchyOrdered - значение False.
Установка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он может быть использован только для упорядочивания элементов другого атрибута. Поскольку атрибут " Geography " имеет свойства элемента, его свойство AttributeHierarchyEnabled должно иметь значение True. Таким образом, чтобы скрыть атрибут, необходимо присвоить его свойству AttributeHierarchyVisible значение False.
Перейдите на вкладку "Связи атрибутов". В списке атрибутов щелкните правой кнопкой мыши атрибут " " и в его контекстном меню выберите команду "Создать связь атрибутов" (
рисунок 9.56).
(рис 9.56) Контекстное меню атрибута "Commute Distance"В диалоговом окне "Создать связи атрибутов" свойство "Исходный атрибут" имеет значение " ". Задайте для свойства "Связанный атрибут" значение " " (рисунок 9.57).
(рис 9.57) Диалоговое окно "Создать связи атрибутов"В списке "Тип связи" выберите тип связи "Жесткая". Связь между элементами атрибута " " и " " не меняется со временем. Нажмите кнопку ОК.
Теперь можно приступить к определению порядка сортировки атрибута " ". Перейдите на вкладку "Структура измерения". В области "Атрибуты" выберите атрибут " ", затем в окне свойств измените значение свойства OrderBy на AttributeKey, а значение свойства OrderByAttribute на (рисунок 9.58).
(рис 9.58) Свойства атрибута "Commute Distance"Разверните проект Analysis Services Tutorial. После успешного завершения развертывания перейдите на вкладку "Обозреватель" конструктора измерений для измерения " Customer ", нажмите кнопку "Повторное соединение" и просмотрите иерархию атрибута " " (рисунок 9.59).
(рис 9.59) Элементы иерархии атрибута "Commute Distance"Обратите внимание, что элементы иерархии атрибута теперь отсортированы в логическом порядке, основанном на увеличении расстояния.
Далее будут определены связи атрибутов, входящих в естественные пользовательские иерархии в проекте Analysis Services Tutorial. В их число входит иерархия " Customer Geography " измерения " Customer ", иерархия " Sales Territories " измерения " Sales Territory ", иерархия " Product Model Lines " измерения " Product " и иерархии " Fiscal Date " и " Calendar Date " измерения " Date ". Все эти пользовательские иерархии являются естественными иерархиями.
Откройте конструктор измерений для измерения " Customer ", затем откройте вкладку "Структура измерения" (рисунок 9.60).
(рис 9.60) Вкладка "Структура измерения" для измерения "Customer"В области "Иерархии" обратите внимание на уровни определяемой пользователем иерархии " Customer Geography ". Эта иерархия в настоящий момент представляет для пользователя только набор уровней детализации, так как между уровнями и атрибутами никакие связи не определены.
Перейдите на вкладку "Связи атрибутов" (рисунок 9.61).
(рис 9.61) Вкладка "Связи атрибутов" для измерения "Customer"Обратите внимание на четыре связи атрибутов, которые связывают неключевые атрибуты из таблицы " Geography " с ключевым атрибутом из таблицы " Geography ". Обратите внимание, что атрибут " Geography " связан с атрибутом " Full Name ". Атрибут " " косвенно связан с атрибутом " Full Name " через атрибут " Geography ", поскольку " " связан с атрибутом " Geography ", а атрибут " Geography " связан с атрибутом " Full Name ". Далее необходимо изменить связи атрибутов таким образом, чтобы исключить использование атрибута " Geography ".
На схеме щелкните правой кнопкой мыши атрибут " Full Name " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" свойство "Исходный атрибут" имеет значение " Full Name ". Задайте для свойства "Связанный атрибут значение " ". В списке "Тип связи" оставьте выбранным тип "Гибкая", поскольку связи между элементами могут измениться с течением времени (рисунок 9.62).
(рис 9.62) Диалоговое окно "Создать связь атрибутов"Нажмите кнопку ОК. На схеме появляется значок предупреждения, поскольку эта связь избыточна (рисунок 9.63).
(рис 9.63) Предупреждение об избыточности связиСвязь " Full Name" -> "Geography" -> " " уже существует, и создается связь " Full Name" -> " ". Теперь связь " Geography " - > " " является избыточной, поэтому удалим ее. В области "Связи атрибутов" щелкните правой кнопкой мыши связь " Geography " -> " " и в контекстном меню выберите команду "Удалить" (рисунок 9.64).
(рис 9.64) Контекстное меню связи "Geography" -> "Postal Code"В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.65).
(рис 9.65) Диалоговое окно "Удаление объектов"На схеме щелкните правой кнопкой мыши атрибут " " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " ". Задайте для поля "Связанный атрибут" значение " City ". В списке "Тип связи" оставьте выбранным тип "Гибкая". Нажмите кнопку ОК (рисунок 9.66).
(рис 9.66) Связь "Postal Code"->"City"Теперь связь " Geography " -> " City " является избыточной, поэтому удалим ее. В области "Связи атрибутов" щелкните правой кнопкой мыши связь " Geography " - > " City " и выберите команду "Удалить". В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.67).
(рис 9.67) Схема после удаления связи "Geography" -> "City"На схеме щелкните правой кнопкой мыши атрибут " City " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " City ". Для поля "Связанный атрибут" задайте значение " State-Province ". В списке "Тип связи" задайте тип связи "Жесткая", поскольку связь между городом и штатом со временем не изменится. Нажмите кнопку ОК (рисунок 9.68).
(рис 9.68) Добавленная связь "City"->"State-Province"Щелкните правой кнопкой мыши стрелку между элементами " Geography "и " State-Province ", а затем в контекстном меню выберите команду "Удалить". В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.69).
(рис 9.69) Схема после удаления связи "Geography"->"State-Province"На схеме щелкните правой кнопкой мыши атрибут " State-Province " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " State-Province ". Задайте для поля "Связанный атрибут" значение " Country-Region ". В списке "Тип связи" выберите тип связи "Жесткая", поскольку связь между штатом и страной (регионом) со временем не изменится. Нажмите кнопку ОК.
В области "Связи атрибутов" щелкните правой кнопкой мыши связь " Geography " -> " Country-Region ", а затем выберите команду "Удалить". В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК (рисунок 9.70).
(рис 9.70) Схема после добавления связи "State-Province"->"Country-Region"и удаления связи "Geography" -> "Country-Region"Перейдите на вкладку "Структура измерения". В области "Атрибуты" щелкните правой кнопкой мыши атрибут " Geography " и в контекстном меню выберите команду "Удалить" (рисунок 9.71).
(рис 9.71) Контекстное меню атрибута "Geography"Этот атрибут больше не нужен. В открывшемся диалоговом окне "Удаление объектов" нажмите кнопку ОК. В меню "Файл" выберите команду "Сохранить все".
Откройте измерение " Sales Territory " в конструкторе измерений и перейдите на вкладку "Связи атрибутов" (рисунок 9.72).
(рис 9.72) Схема связи атрибутов измерения "Sales Territory"На схеме щелкните правой кнопкой мыши атрибут " Sales Territory Country " и в контекстном меню выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" свойство "Исходный атрибут" имеет значение " Sales Territory Country ". Задайте для свойства "Связанный атрибут" значение " Sales Territory Group ". В списке "Тип связи" оставьте выбранным тип "Гибкая". Нажмите кнопку ОК (рисунок 9.73).
(рис 9.73) Измененная схема связи атрибутов измерения "Sales Territory"Атрибут Sales Territory Group теперь связан с атрибутом Sales Territory Country, а он, в свою очередь, с атрибутом Sales Territory Region. Свойству RelationshipType для каждой из этих связей должно быть присвоено значение "Гибкая", поскольку со временем распределение регионов по стране и стран по группам может измениться.
Откройте в конструкторе измерений измерение "Product" и перейдите на вкладку "Связи атрибутов" (рисунок 9.74).
(рис 9.74) Схема связи атрибутов иерархии Product Model LinesНа схеме щелкните правой кнопкой мыши атрибут " Model Name " и в контекстном меню выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " Model Name ". Задайте для поля "Связанный атрибут" значение " Product Line ". В списке "Тип связи" оставьте выбранным тип "Гибкая". Нажмите кнопку ОК (рисунок 9.75).
(рис 9.75) Измененная схема связи атрибутов иерархии Product Model Lines
Откройте в конструкторе измерений измерение "Date" и перейдите на вкладку "Связи атрибутов" (рисунок 9.76).
(рис 9.76) Схема связей атрибутов измерения "Date"На схеме щелкните правой кнопкой мыши атрибут " Month Name " и в контекстном меню выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" поле "Исходный атрибут" имеет значение " Month Name ". Установите поле "Связанный атрибут" в значение " Fiscal Quarter ". В списке "Тип связи" выберите тип связи "Жесткая". Нажмите кнопку ОК (рисунок 9.77).
(рис 9.77) Добавленная связь "Month Name"->"Fiscal Quarter"На схеме щелкните правой кнопкой мыши атрибут " Fiscal Quarter " и выберите команду "Создать связь атрибутов". В диалоговом окне "Создать связь атрибутов" свойство "Исходный атрибут имеет" значение " Fiscal Quarter ". Задайте для свойства "Связанный атрибут" значение " Fiscal Semester ". В списке "Тип связи" выберите тип связи "Жесткая". Нажмите кнопку ОК ().
(рис 9.78) Добавленная связь "Fiscal Quarter"->"Fiscal Semester"Самостоятельно создайте жесткую связь " Fiscal Semester" -> "Fiscal Year" (рисунок 9.79).
(рис 9.79) Добавленная связь"Fiscal Semester" -> "Fiscal Year"
Самостоятельно создайте жесткие связи "Month Name"-> "Calendar Quarter", " Calendar Quarter" -> "Calendar Semester", "Calendar Semester" -> "Calendar Year" (рисунок 9.80)
(рис 9.80) Окончательная структура иерархии "Calendar Date"
Откройте в конструкторе измерений измерение " Geography " и перейдите на вкладку "Связи атрибутов" (рисунок 9.81).
(рис 9.81) Схема связей атрибутов измерения "Geography"Создайте гибкую связь " (рисунок 9.82).
(рис 9.82) Измененная схема связей атрибутов измерения "Geography"На схеме щелкните правой кнопкой мыши атрибут " Geography Key и выберите пункт Свойства.
Установите для атрибута " Geography Key " свойство AttributeHierarchyOptimizedState в значение NotOptimized, а свойства AttributeHierarchyOrdered и AttributeHierarchyVisible - в значение False.
В меню "Файл" выберите команду "Сохранить все". Разверните проект Analysis Services Tutorial.
Далее будут добавлены атрибуты категории и подкатегории товара в измерение " Product " из таблиц, связанных по схеме "снежинка", которые, в свою очередь, будут добавлены в представление источника данных Adventure Works DW. Затем необходимо включить свойство UnknownMember для измерения " Product ", для свойства UnknownMemberName - указать значение Assembly Components, связать атрибуты и Category с атрибутом названия продукта, а затем определить пользовательскую обработку ошибок для ключевого атрибута элемента, который связывает таблицы, связанные по схеме "снежинка".
Если изначально куб Analysis Services Tutorial был определен с помощью мастера кубов, при добавлении атрибутов и Category эти шаги будут выполнены автоматически.
Откройте конструктор измерений для измерения " Product ", перейдите на вкладку "Структура измерения" и выберите в области "Атрибуты" элемент " Product " (рисунок 9.83).
(рис 9.83) Структура измерения "Product"Теперь можно просматривать и изменять свойства самого измерения. В окне "Свойства" просмотрите свойства UnknownMember и UnknownMemberName (рисунок 9.84).
(рис 9.84) Свойства измерения "Product"Обратите внимание, что свойство UnknownMember отключено, поскольку для него указано значение " None " вместо " Visible " или " Hidden ", и что для свойства UnknownMemberName никакое имя не задано.
В окне свойств в ячейке свойств ErrorConfiguration выберите "(пользовательский)" (рисунок 9.85) и раскройте ErrorConfiguration (рисунок 9.86).

(рис 9.86) Свойство ErrorConfiguration измерения "Product"(рис 9.85) Коллекция свойств ErrorConfigurationВыбор значения "(пользовательский)" для свойства ErrorConfiguration позволяет просмотреть используемые по умолчанию настройки конфигурации обработки ошибок; настройки при этом не изменяются. Просмотрите свойства конфигурации ошибок ключа и ошибок ключа NULL, однако не вносите изменения. Обратите внимание, что по умолчанию при преобразовании ключа NULL в неизвестный элемент ошибка обработки, связанная с этим преобразованием, пропускается (свойство NullKeyConvertToUnknown ).
Перейдите на вкладку "Обозреватель" и убедитесь, что в списке "Иерархия" выбран параметр " Product Model Lines ", а затем раскройте узел " All Products ".
(рис 9.87) Элементы узла "All Products"Обратите внимание на пять элементов уровня " Product Line ". Раскройте узел " Components ", а затем раскройте немаркированный элемент уровня " Model Name " (рисунок 9.88).
(рис 9.88) Компоненты сборки для создания других компонентовЭтот уровень содержит компоненты сборки, используемые при построении других компонентов, начиная с продукта " Adjustable ".
Откройте конструктор представления источника данных для представления источника данных "Adventure Works DW", в области "Организатор схем" выберите " Reseller Sales ", а затем выберите команду "Добавить или удалить таблицы" в меню "Представление источника данных" среды BI Dev Studio (рисунок 9.89).
(рис 9.89) Конструктор представления источника данныхОткроется диалоговое окно "Добавление или удаление таблиц" (рисунок 9.90).
(рис 9.90) Диалоговое окно "Добавление или удаление таблиц"В списке "Включенные объекты" выберите " dbo.DimProduct ", а затем нажмите кнопку "Добавить связанные таблицы" (рисунок 9.91).
(рис 9.91) Добавленная таблица dbo.DimProductSubcategoryТаблица " dbo.DimProductSubcategory " будет добавлена в список "Включенные объекты". Повторно нажмите кнопку "Добавить связанные таблицы". При этом таблица " dbo.DimProductSubcategory " должна быть выбрана по умолчанию как последняя добавленная. Таблица " dbo.DimProductСategory " будет добавлена в список "Включенные объекты". Нажмите кнопку ОК.
В меню "Формат" среды BI Dev Studio последовательно выберите команды "Автоматический макет" и "Диаграмма" (рисунок 9.92).
(рис 9.92) Схема "Reseller Sales"Обратите внимание, что таблицы " dbo.DimProductSubcategory " и " dbo.DimProductCategory " связаны друг с другом, а также с таблицей " ResellerSales " через таблицу " Product ".
Откройте конструктор измерений для измерения " Product " и откройте вкладку "Структура измерения". Щелкните правой кнопкой мыши область "Представление источника данных" и в контекстном меню выберите команду "Показать все таблицы" (рисунок 9.93).
(рис 9.93) Контекстное меню области "Представление источника данных"В области "Представление источника данных" найдите таблицу " DimProductCategory ", щелкните правой кнопкой мыши столбец " ProductCategoryKey " в этой таблице и в контекстном меню выберите команду "Создать атрибут из столбца" (рисунок 9.94).
(рис 9.94) Контекстное меню столбца "ProductCategoryKey"В области "Атрибуты" измените имя нового атрибута на " Category " (рисунок 9.95).
(рис 9.95) Изменение имени атрибута "ProductCategoryKey" на "Category"В окне "Свойства" щелкните в поле свойства NameColumn, а затем нажмите кнопку обзора (…) (рисунок 9.96), чтобы открыть диалоговое окно "Столбец имени" (рисунок 9.97).

(рис 9.97) Свойства атрибута "Category"(рис 9.96) Диалоговое окно "Столбец имени"В списке "Исходный столбец" выберите " EnglishProductSubCategoryName " и нажмите кнопку ОК.
В области "Представление источника данных" найдите таблицу " DimProductSubCategory ", щелкните правой кнопкой мыши столбец " ProductSubCategoryKey " в этой таблице и в контекстном меню выберите команду "Создать атрибут из столбца".
В области "Атрибуты" измените имя нового атрибута на . В окне свойств щелкните поле свойства " NameColumn ", затем нажмите кнопку обзора (…), чтобы открыть диалоговое окно "Столбец имени". В списке "Исходный столбец" выберите " EnglishProductSubcategoryName " и нажмите кнопку ОК.
Создайте новую пользовательскую иерархию под названием " Product Categories " со следующими уровнями (сверху вниз): " Category ", " " и " Product Name " (,рисунок 9.98).
(рис 9.98) Новая иерархия "Product Categories"Укажите для свойства " AllMemberName " пользовательской иерархии " Product Categories " значение " All Products " (рисунок 9.99).
(рис 9.99) Свойство "AllMemberName" пользовательской иерархии "Product Categories"
На панели инструментов вкладки "Структура измерения" в окне "Конструктор измерений" для измерения " Product " нажмите кнопку "Обработка" (рисунок 9.100).
(рис 9.100) Кнопка "Обработка" панели инструментовВ сообщении о начале выполнения сборки (рисунок 9.101) нажмите кнопку "Да", чтобы создать и развернуть проект, а затем нажмите кнопку "Выполнить", чтобы выполнить обработку измерения " Product " (
рисунок 9.102).

(рис 9.102) Сообщение о начале выполнения сборки(рис 9.101) Диалоговое окно обработки измерения "Product"По завершении обработки раскройте узел "Обработка измерения " Product " завершена успешно" в диалоговом окне "Ход обработки", раскройте узел "Обработка Атрибут измерения " Product Name " завершена", а затем раскройте узел "Запросы SQL 1" (рисунок 9.103).
(рис 9.103) Результаты хода обработкиЩелкните запрос SELECT DISTINCT, а затем нажмите кнопку "Просмотреть" (рисунок 9.104).
(рис 9.104) Запрос SELECT DISTINCTОбратите внимание, что к предложению SELECT DISTINCT было добавлено предложение WHERE, удаляющее продукты, для которых не задано значение в столбце " ProductSubcategoryKey ".
Три раза нажмите кнопку "Закрыть", чтобы закрыть все диалоговые окна.
Перейдите на вкладку "Обозреватель" конструктора измерений для измерения " Product " и нажмите кнопку "Повтор соединения". Убедитесь, что значение " Product Model Lines " появляется в списке "Иерархия", и последовательно раскройте узлы " All Products " и" Components " (рисунок 9.105).
(рис 9.105) Элементы иерархии "Product Model Lines"Обратите внимание, что список компонентов сборки пуст из-за предложения WHERE в инструкции SELECT DISTINCT.
В списке "Иерархия" выберите значение " Product Categories " и последовательно раскройте узлы " All Products " и " Components ".
(рис 9.106) Обратите внимание, что не отображается ни один из компонентов сборки.
Чтобы изменить характер работы, описанный в предыдущей задаче, в измерении " Products " следует включить свойство " UnknownMember ", установить значение свойства " UnknownMemberName ", установить параметр " NullProcessing " в значение " UnknownMember " для атрибутов " " и" Model Name ", связать атрибут " Category " с атрибутом " " и атрибут " Product Line " с атрибутом " Model Name ". В результате выполнения этих действий службы SSAS станут использовать значение имени неизвестного элемента для товаров, не имеющих значений в столбце " SubcategoryKey ", как будет показано далее.
В конструкторе измерений для измерения " Product " перейдите на вкладку "Структура измерения", затем в области "Атрибуты" выберите атрибут " Product ".
В окне "Свойства" задайте для свойства " UnknownMember " значение "Visible", а для свойства " UnknownMemberName " - значение " Assembly Components " (рисунок 9.107).
(рис 9.107) Свойства измерения "Product"Перейдите на вкладку "Связи атрибутов". На схеме щелкните правой кнопкой мыши атрибут " " и выберите команду "Создать связь атрибутов".
(рис 9.108) В диалоговом окне "Создать связь атрибутов" свойство "Исходный" атрибут имеет значение " ". Задайте для свойства "Связанный атрибут" значение " Category ". Оставьте для типа связи значение "Гибкая" (рисунок 9.109).
(рис 9.109) Создание связи атрибутов "Subcategory" и "Category"Нажмите кнопку ОК.
В области "Атрибуты" выберите элемент " ". В окне "Свойства" разверните свойство " KeyColumns ", затем свойство " DimProductSubcategory. ProductSubcategoryKey (Integer) ". Установите для свойства " NullProcessing " значение " UnknownMember " (
рисунок 9.110).
(рис 9.110) Свойства атрибута SubcategoryВ области "Атрибуты" выберите элемент " Model Name ". В окне "Свойства" разверните свойство " KeyColumns ", затем свойство " Product.ModelName (WChar) ". Установите для свойства " NullProcessing " значение " UnknownMember " (рисунок 9.111).
(рис 9.111) Свойства атрибута Model NameПосле внесения этих изменений, если во время обработки в службах SSAS для атрибута " " или " Model Name " встретится значение NULL, значение неизвестного элемента будет заменено значением ключа и определенные пользователем иерархии будут созданы правильно.
Разверните Analysis Services Tutorial. После успешного развертывания перейдите на вкладку "Обозреватель" в конструкторе измерений для измерения " Product " и нажмите кнопку "Повтор соединения". Убедитесь, что в списке "Иерархия" выбран параметр " Product Categories " и раскройте узел " All Products " (рисунок 9.112).
(рис 9.112) Содержимое иерархии "Product Categories"Обратите внимание, что элемент " Assembly Components " отображается в качестве нового элемента на уровне категории. Раскройте элемент " Assembly Components " на уровне " Category ", а затем раскройте элемент " Assembly Components " на уровне " ". Обратите внимание, что все компоненты сборки отображаются на уровне " Product Name ".
Выберите элемент " Product Model Lines " в списке "Иерархия", раскройте узел " All Products ", раскройте элемент " Assembly Components " на уровне " Product Line ", а затем раскройте элемент " Assembly Components " на уровне " Model Name " (рисунок 9.113).
(рис 9.113) Содержимое иерархии "Product Model Lines"Обратите внимание, что все компоненты сборки теперь отображаются на уровне " Product Name ".
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.