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

При обработке измерения в службах Microsoft SQL Server 2005 Analysis Services (SSAS) все отдельные значения из базовых столбцов таблицы или представления из представления источника данных заполняют атрибуты этого измерения. Если во время обработки службами Analysis Services обнаруживается значение NULL, по умолчанию оно преобразуется в нуль для числовых столбцов или в пустую строку для строковых столбцов, таким образом исключая ошибку. Пользователь может изменить эти значения по умолчанию или преобразовать значения NULL в своем фрагменте, а также преобразовать или загрузить процесс (если таковой имеется) из базового реляционного хранилища данных. Значению NULL можно присвоить какое-либо нужное значение путем настройки трех свойств служб Analysis Service: свойства UnknownMember и UnknownMemberName используются для измерений, а свойство NullProcessing — для ключевых атрибутов измерений.

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

ms170707.note(ru-ru,SQL.90).gifПримечание.
Значение по умолчанию для неизвестного элемента — «Unknown». Можно указать иное значение, задав значение свойства UnknownMemberName.

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

Как видно из следующей задачи, когда службы Analysis Services обрабатывают связанное по схеме «снежинка» измерение, они удаляют те элементы атрибута, значение которых равно NULL для столбца, который связывает связанные по схеме «снежинка» таблицы, если только не были изменены настройки некоторых свойств. Ошибка при этом не возникает, так как по умолчанию службы Analysis Services не обрабатывают такой тип ошибок. По умолчанию для свойства NullKeyCovertedToUnknown указано значение IgnoreError. Службы Analysis Services удаляют элемент атрибут со значением NULL, поскольку осуществляют внутреннее соединение между двумя таблицами, связанными по схеме «снежинка».

Выполнив следующие ниже действия, можно управлять обработкой в службах Analysis Services в такой ситуации:

  • включение свойства UnknownMember для этого измерения;
  • указание для измерения значения свойства UnknownMemberName;
  • установка связей атрибутов таким образом, чтобы атрибуты измерения были связаны;
  • определение пользовательской обработки ошибок для ключевого столбца, который связывает таблицы, связанные по схеме «снежинка».

В задачах этого раздела будут добавлены атрибуты категории и подкатегории товара в измерение Product из таблиц, связанных по схеме «снежинка», которые, в свою очередь, будут добавлены в представление источника данных Adventure Works DW. Затем необходимо включить свойство UnknownMember для измерения Product, для свойства UnknownMemberName указать значение Assembly Components, связать атрибуты Subcategory и Category с атрибутом названия продукта, а затем определить пользовательскую обработку ошибок для ключевого атрибута элемента, который связывает таблицы по схеме «снежинка».

ms170707.note(ru-ru,SQL.90).gifПримечание.
Если изначально куб учебника по службам Analysis Services был определен с помощью мастера кубов, то при добавлении атрибутов Subcategory и Category эти шаги будут выполнены автоматически.

Просмотр свойств «Обработка ошибок» и «Неизвестный элемент» в измерении Product

Просмотр свойств обработки ошибок и неизвестного элемента в измерении Product

  1. Переключитесь в конструктор измерений на измерение Product, перейдите на вкладку Структура измерения и выберите в области Attribute элемент Product.

    Теперь можно просматривать и изменять свойства самого измерения.

  2. В окне «Свойства» просмотрите свойства UnknownMember и UnknownMemberName.

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

  3. В окне свойств в ячейке свойств ErrorConfiguration выберите (пользовательский) и раскройте коллекцию свойств ErrorConfiguration.

    Выбор значения (Пользовательский) для свойства ErrorConfiguration позволяет просмотреть используемые по умолчанию настройки конфигурации обработки ошибок; изменения настроек при этом не происходит.

  4. Просмотрите свойства конфигурации ошибок ключа и ошибок ключа NULL, однако не вносите изменения.

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

    На следующем рисунке показаны параметры свойств в коллекции свойств ErrorConfiguration.

    Коллекция свойств ErrorConfiguration

  5. Перейдите на вкладку Обозреватель и убедитесь, что в списке Иерархия выбран параметр Product Model Lines, а затем раскройте узел All Products.

    Обратите внимание на пять элементов уровня Product Line.

  6. Раскройте узел Components, а затем раскройте немаркированный элемент уровня Model Name.

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

    Компоненты сборки для создания других компонентов

Определение атрибутов из связанных по схеме «снежинка» таблиц и пользовательской иерархии Product Category

Определение атрибутов из связанных по схеме «снежинка» таблиц и пользовательской иерархии Product Category

  1. Откройте конструктор представления источника данных на представлении источника данных Adventure Works DW, в области Организатор диаграмм выберите Reseller Sales, а затем выберите команду Добавить или удалить таблицы в меню Представление источника данных среды Business Intelligence Development Studio.

    Откроется диалоговое окно Добавление или удаление таблиц.

  2. В списке Включенные объекты выберите dbo.DimProduct, а затем нажмите кнопку Добавить связанные таблицы.

    Таблица dbo.DimProductSubcategory будет добавлена в список Включенные объекты.

  3. Повторно нажмите кнопку Добавить связанные таблицы. При этом таблица dbo.DimProductSubcategory должна быть выбрана по умолчанию как последняя добавленная.

    Таблица dbo.DimProductSubcategory будет добавлена в список Включенные объекты.

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

  5. В меню Формат среды BI Development Studio последовательно выберите команды Автоматический макет и Диаграмма.

    Обратите внимание, что таблицы dbo.DimProductSubcategory и dbo.DimProductCategory связаны друг с другом, а также с таблицей ResellerSales через таблицу Product, как показано на рисунке.

    Диаграмма, показывающая связи между таблицами

  6. Перейдите в конструктор измерений на измерение Product и откройте вкладку Dimension Structure.

  7. Щелкните правой кнопкой мыши область Представление источника данных и выберите команду Показать все таблицы.

  8. В области Представление источника данных найдите таблицу DimProductCategory, щелкните правой кнопкой мыши столбец ProductCategoryKey в этой таблице и выберите команду Создать атрибут из столбца.

  9. В области Атрибуты измените имя нового атрибута на Category.

  10. В окне Свойства щелкните ячейку свойства NameColumn, выберите (новое), а затем укажите значение DimProductCategory в поле Исходная таблица и значение EnglishProductCategoryName в поле Исходный столбец в диалоговом окне Привязка объекта, после чего нажмите кнопку ОК.

  11. В области Представление источника данных найдите таблицу DimProductCategory, щелкните правой кнопкой мыши столбец ProductCategoryKey в этой таблице и выберите команду Создать атрибут из столбца.

  12. В области Атрибуты измените имя нового атрибута на Subcategory.

  13. В окне Свойства щелкните ячейку свойства NameColumn, выберите значение (новое), а затем укажите значение DimProductSubcategory в поле Исходная таблица и EnglishProductSubcategoryName в поле Исходный столбец в диалоговом окне Привязка объекта, после чего нажмите кнопку ОК.

  14. Создайте новую пользовательскую иерархию пользователей под названием Product Categories со следующими уровнями (сверху вниз): Category, Subcategory и Product Name.

  15. Укажите для свойства AllMemberName пользовательской иерархии Product Categories значение All Products.

Просмотр пользовательских иерархий в измерении Product

Просмотр пользовательских иерархий в измерении Product

  1. На панели инструментов вкладки Структура измерения в окне Конструктор измерений для измерения Product нажмите кнопку Обработка.

  2. Нажмите кнопку Да, чтобы создать и развернуть проект, а затем нажмите кнопку Выполнить, чтобы выполнить обработку измерения Product.

  3. По завершении обработки раскройте узел Обработка измерения Product завершена успешно в диалоговом окне Ход обработки, раскройте узел Обработка атрибута измерения Product Name завершена успешно, а затем раскройте узел Запросы SQL 1.

  4. Щелкните запрос SELECT DISTINCT, а затем — Просмотреть подробности.

    Обратите внимание, что к предложению SELECT DISTINCT было добавлено предложение WHERE, удаляющее продукты, для которых не задано значение в столбце ProductSubcategoryKey, как показано на следующем рисунке.

    Предложение SELECT DISTINCT, показывающее предложение WHERE

  5. Три раза нажмите кнопку Закрыть, чтобы закрыть все диалоговые окна.

  6. Перейдите на вкладку Обозреватель конструктора измерений для измерения Product и нажмите кнопку Повтор соединения.

  7. Убедитесь, что значение Product Model Lines появляется в списке Иерархия, и последовательно раскройте узлы All Products и Components.

    Обратите внимание, что список компонентов сборки пуст из-за предложения WHERE в инструкции SELECT DISTINCT, как показано на следующем рисунке.

    Иерархический список отсутствующих компонентов

  8. В списке Иерархия выберите значение Product Categories и последовательно раскройте узлы All Products и Компоненты.

    Обратите внимание, что не отображается ни один из компонентов сборки.

Чтобы изменить характер работы, описанный в предыдущей задаче, в измерении Products следует включить свойство UnknownMember, установить значение свойства UnknownMemberName, установить параметр NullProcessing в значение UnknownMember для атрибутов Subcategory и Model Name, связать атрибут Category с атрибутом Subcategory и атрибут Product Line с атрибутом Model Name. В результате выполнения этих действий службы Analysis Services станут использовать значение имени неизвестного элемента для товаров, не имеющих значений в столбце SubcategoryKey, как будет показано в следующей задаче.

Включение неизвестного элемента, определение связей атрибутов и указание свойств пользовательской обработки для значений NULL

Включение неизвестного элемента, определение связи атрибутов и указание свойства пользовательской обработки для значений NULL

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

  2. В окне Свойства измените значение свойства UnknownMember для измерения Product на Видимый, а затем измените значение свойства UnknownMemberName для этого измерения на Assembly Components.

    Смена значения свойства UnknownMember на Видимый или Скрытый включит свойство UnknownMember для этого измерения.

  3. В области Атрибуты раскройте следующие атрибуты:

    • Product Name
    • Subcategory
    • Model Name

    Обратите внимание, что атрибут Product Line связан с атрибутом Model Name и, таким образом, косвенно связан с атрибутом Product Name. Обратите внимание, что для атрибута Subcategory не были определены связи атрибутов, а атрибут Category связан с атрибутом Product Name напрямую через ключевой атрибут.

  4. Перетяните связь атрибутов Category с атрибута Product Name на атрибут Subcategory.

    Атрибут Category теперь связан со строками в таблице фактов через атрибут Subcategory, который, в свою очередь, связан со строками в таблице фактов через атрибут Product Name.

  5. В области Атрибуты выберите Subcategory, а затем в ячейке свойства KeyColumns в окне свойств нажмите кнопку с многоточием (...).

  6. В диалоговом окне Редактор коллекции DataItem измените свойство NullProcessing на UnknownMember, как показано на следующем рисунке.

    Диалоговое окно «Редактор коллекции DataItem»

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

  8. На панели Атрибуты выберите атрибут Model Name, а затем в ячейке свойства KeyColumns в окне свойств нажмите кнопку с многоточием (...).

  9. В диалоговом окне Редактор коллекции DataItem измените значение свойства NullProcessing на UnknownMember и нажмите кнопку ОК.

    Если после внесения этих изменений во время обработки в службах Analysis Services встретится значение NULL для атрибута Subcategory или Model Name, значение неизвестного элемента будет замещено ключевым значением и пользовательские иерархии будут созданы правильно.

Повторный просмотр измерения Product

Выполнение просмотра измерения Product

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

  2. После успешного развертывания перейдите на вкладку Обозреватель в конструкторе измерений для измерения Product и нажмите кнопку Повтор соединения.

  3. Убедитесь, что в списке Иерархия выбран параметр Product Categories и раскройте узел All Products.

    Обратите внимание, что элемент Assembly Components отображается в качестве нового элемента на уровне Category.

  4. Раскройте элемент Assembly Components на уровне Category, а затем раскройте элемент Assembly Components на уровне Subcategory.

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

    Уровень «Название продукта» с компонентами сборки

  5. Выберите элемент Product Model Lines в списке Иерархия, раскройте узел All Products, раскройте элемент Assembly Components на уровне Product Line, а затем раскройте элемент Assembly Components на уровне Model Name.

    Обратите внимание, что все компоненты сборки теперь отображаются на уровне Product Name.

ms170707.note(ru-ru,SQL.90).gifПримечание.
Завершенный проект, созданный на занятии 4, доступен при установке и загрузке обновленных образцов. Дополнительные сведения см. в подразделе «Получение обновленных образцов» раздела Установка образцов.

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

Занятие 5. Определение связей между измерениями и группами мер