Поделиться через


Урок 4–5. Сортировка элементов атрибута на основе дополнительного атрибута

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

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

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

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

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

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

  1. Откройте измерение Date в конструкторе измерений и в окне свойств просмотрите свойство OrderBy для атрибута Название месяца .

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

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

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

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

  4. На панели Атрибуты выберите атрибут Номер месяца годаи в окне "Свойства" установите для свойства AttributeHierarchyEnabled значение False , для свойства AttributeHierarchyOptimizedState — значение NotOptimized, а для свойства AttributeHierarchyOrdered — значение False.

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

    Примечание

    Сортировка по алфавиту свойств в окне «Свойства» упростит задачу, поскольку эти три свойства будут отсортированы и помещены рядом друг с другом.

  5. Перейдите на вкладку Связи атрибутов .

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

  6. На диаграмме щелкните правой кнопкой мыши атрибут Название месяца и выберите команду Создать связь атрибутов.

  7. В диалоговом окне Создание связи атрибутов поле Исходный атрибут имеет значение Название месяца. Задайте для свойства Связанный атрибут значение Номер месяца года.

  8. В списке Тип связи выберите тип Жесткая.

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

  9. Нажмите кнопку ОК.

  10. Перейдите на вкладку Структура измерения .

  11. Выберите Название месяца в области Атрибуты, а затем измените значение свойства OrderBy в окно свойств на AttributeKey и измените значение свойства OrderByAttribute на Номер месяца года.

  12. В меню Сборка выберите команду Развернуть Analysis Services Tutorial.

  13. После успешного завершения развертывания перейдите на вкладку Браузер измерения Date, нажмите кнопку Повторное соединениеи просмотрите пользовательские иерархии Календарная дата и Финансовая дата , чтобы убедиться в том, что месяцы отсортированы в хронологическом порядке.

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

    Измененная иерархия пользователей в хронологическом порядке

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

  1. Перейдите в конструкторе измерений на вкладку Браузер измерения "Заказчик" и просмотрите элементы иерархии атрибута Commute Distance .

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

    На рисунке ниже показаны элементы иерархии атрибута Commute Distance , отсортированные по ASCII-значению ключа элемента.

    Поездки Иерархия атрибутов Distance

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

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

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

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

    Установка этих значений скроет атрибут от пользователей и сократит время обработки. Этот атрибут не будет использоваться для просмотра. Он может быть использован только для упорядочивания элементов другого атрибута. Так как атрибут Geography имеет свойства элемента, его свойство AttributeHierarchyEnabled должно иметь значение True. Таким образом, чтобы скрыть атрибут, необходимо присвоить его свойству AttributeHierarchyVisible значение False.

  5. Перейдите на вкладку Связи атрибутов .

  6. В списке атрибутов щелкните правой кнопкой мыши атрибут Commute Distance и выберите команду Создать связь атрибутов.

  7. В диалоговом окне Создание связи атрибутов свойство Исходный атрибут имеет значение Commute Distance. Задайте для свойства Связанный атрибут значение Commute Distance Sort.

  8. В списке Тип связи выберите тип Жесткая.

    Связь между элементами атрибута Commute Distance и Commute Distance Sort не меняется со временем.

  9. Нажмите кнопку ОК.

    Теперь можно приступить к определению порядка сортировки атрибута Commute Distance .

  10. Перейдите на вкладку Структура измерения .

  11. На панели Атрибуты выберите атрибут Commute Distance, после чего в окне свойств измените значение свойства OrderBy на AttributeKey, а значение свойства OrderByAttribute — на Commute Distance Sort.

  12. В меню Сборка выберите команду Развернуть Analysis Services Tutorial.

  13. После успешного завершения развертывания перейдите на вкладку Браузер конструктора измерений для измерения "Заказчик", нажмите кнопку Повторное соединениеи просмотрите иерархию атрибута Commute Distance .

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

    Пересортированная иерархия атрибутов Поездки Distance

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

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