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

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

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

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

В задачах данного раздела будет определен новый атрибут в измерении Time на основании существующего столбца базовой таблицы измерения. Созданный атрибут будет использован для сортировки элементов календарного месяца хронологически, а не по алфавиту. Кроме того, предстоит определить новый атрибут в измерении Customer на основании именованного вычисления, которое будет использовано для сортировки элементов атрибута «Расстояние до работы». В задачах следующего раздела будет изучено, как использовать связи атрибутов для повышения производительности запросов.

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

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

  1. Откройте конструктор измерений для измерения Time и в окне свойств просмотрите свойство OrderBy атрибута Month Name.

    Обратите внимание, что элементы атрибута Month Name отсортированы по ключевым значениям.

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

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

  3. Перейдите на вкладку Структура измерения для измерения Time, щелкните правой кнопкой мыши пункт MonthNumberOfYear в области Представление источника данных и выберите команду Создать атрибут из столбца.

  4. В области Атрибуты выберите атрибут Month Number Of Year и в окне «Свойства» установите для свойства AttributeHierarchyEnabled значение False. Укажите для свойства AttributeHierarchyOptimizedState значение NotOptimized, а для свойства AttributeHierarchyOrdered — значение False.

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

ms166763.note(ru-ru,SQL.90).gifПримечание.
Сортировка по алфавиту свойств в окне «Свойства» упростит задачу, поскольку эти три свойства будут отсортированы и помещены рядом друг с другом.
  1. Раскройте узел Дата в области Атрибуты.
    Обратите внимание, что все атрибуты в измерении Time связаны непосредственно с атрибутом «Дата», который является ключевым элементом, связывающим элементы измерения с фактами в связанных группах мер.
  2. Раскройте элемент Month Namе.
    Обратите внимание, что связь атрибутов Month Namе и Month Number Of Year не определена.
  3. Перетяните атрибут Month Number Of Year в тег <создать связь атрибутов> атрибута Month Name.
    Хотя можно определить дополнительную связь, перемещение существующей связи приведет к повышению производительности обработки и снижению избыточности. Теперь связь атрибутов Month Number Of Yea и Month Name определена. В окне свойств обратите внимание, что значением по умолчанию для свойства RelationshipType атрибута Month Number Of Year является Гибкая.
  4. В окне свойств измените значение свойства RelationshipType на Жесткая.
    Связи между элементами атрибутов Month Name и Month Number Of Year не будут меняться со временем. В результате службы Analysis Services не удалят статистические выражения для этой связи во время добавочной обработки. Если происходит изменение, возникнет ошибка изменений во время добавочной обработки, и нужно будет выполнить полную обработку измерения. Теперь можно приступить к выбору порядка сортировки элементов атрибута Month Name.
    На следующем рисунке показано, что для свойства RelationshipType связи атрибутов Month Number Of Year и Month Name указано значение Жесткая.
    Значение Rigid свойства RelationshipType
  5. Выберите атрибут Month Name в области Атрибуты, после чего измените значение свойства OrderBy в окне свойств на AttributeKey, а свойства OrderByAttribute — на Month Number Of Year.
    На следующем рисунке показано изменение свойств в окне свойств.
    Изменения свойств OrderBy и OrderByAttribute
  6. В меню Сборка выберите команду Развернуть «Учебник по службам Analysis Services».
  7. После успешного завершения развертывания перейдите на вкладку Обозреватель для измерения Time, нажмите кнопку Повторное соединение и перейдите к пользовательским иерархиям «Календарное время» и «Финансовые периоды», чтобы убедиться, что месяцы теперь сортируются в хронологическом порядке.
    Обратите внимание, что месяцы теперь отсортированы в хронологическом порядке, как показано на следующем рисунке.
    Измененная иерархия пользователей в хронологическом порядке

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

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

  1. Перейдите на вкладку Структура измерения конструктора измерений для измерения Customer.

  2. В области Атрибуты выберите атрибут Расстояние до работы и в окне свойств просмотрите свойство OrderBy.

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

    Обратите внимание, что элементы иерархии атрибута отсортированы по ASCII-значениям ключа элементов. В этом случае сортировка по имени или ключу атрибута не сортирует расстояние до работы от меньшего к большему. В этой задаче предстоит отсортировать элементы иерархии атрибута на основе именованного вычисления «CommuteDistanceSort», которое присваивает подходящий номер сортировки каждому значению столбца. Это именованное вычисление уже добавлено к таблице Customer представления источника данных Adventure Works DW в целях экономии времени. Переключитесь на это представление источника данных, чтобы просмотреть сценарий SQL, используемый в данном именованном вычислении. Дополнительные сведения см. в разделе Определение именованных вычислений в представлении источника данных (службы Analysis Services).

    На следующем рисунке показаны элементы иерархии атрибута Расстояние до работы, отсортированные по ASCII-значению ключа элементов.

    Иерархия атрибута Commute Distance

  4. Чтобы перейти на вкладку Структура измерения конструктора измерений для измерения Customer щелкните правой кнопкой пункт CommuteDistanceSort в таблице Заказчик в области Представление источника данных и выберите команду Создать атрибут из столбца.

  5. В области Атрибуты выберите атрибут Сортировка по расстоянию до работы, затем укажите для свойства AttributeHierarchyEnabled этого атрибута значение False. В окне свойств укажите для свойства AttributeHierarchyOptimizedState значение NotOptimized, а для свойства AttributeHierarchyOrdered — значение False.

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

  6. В области Атрибуты раскройте атрибут Full Name.

    Обратите внимание, что все атрибуты измерения Customer, которые получены из таблицы Customer представления источника данных учебника по службам Analysis Services, связаны посредством этого атрибута.

  7. Раскройте элемент Geography.

    Обратите внимание, что все атрибуты измерения Customer, полученные из таблицы Geography представления источника данных учебника по службам Analysis Services, связаны посредством атрибута Geography.

  8. Выберите атрибут Geography, в окне свойств укажите для его свойства AttributeHierarchyVisible значение False, для свойства AttributeHierarchyOptimized значение NotOptimized, а для свойства AttributeHierarchyOrdered — значение False.

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

  9. В области Атрибуты раскройте атрибут Расстояние до работы.

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

  10. Перетяните атрибут Сортировка по расстоянию до работы на тег <создать связь атрибутов> атрибута Расстояние до работы.

    Теперь связь атрибутов Расстояние до работы и Сортировка по расстоянию до работы определена. В окне свойств обратите внимание, что значением по умолчанию для свойства RelationshipType элемента Сортировка по расстоянию до работы атрибута Расстояние до работы является Гибкая.

  11. В окне свойств измените значение свойства RelationshipType на Жесткая.

    Связь между элементами атрибутов Расстояние до работы и Сортировка по расстоянию до работы не меняется со временем. Теперь можно приступить к определению порядка сортировки атрибута Расстояние до работы.

  12. В области Атрибуты выберите атрибут Расстояние до работы, затем в окне свойств измените значение свойства OrderBy на AttributeKey, а значение свойства OrderByAttribute на Сортировка по расстоянию до работы.

  13. В меню Сборка выберите команду Развернуть «Учебник по службам Analysis Services».

  14. После успешного завершения развертывания перейдите на вкладку Обозреватель конструктора измерений для измерения Customer, нажмите кнопку Повторное соединение и просмотрите иерархию атрибута Расстояние до работы.

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

    Повторно отсортированная иерархия атрибута «Расстояние до работы»

Следующая задача занятия

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