Изменение измерения времени
Для атрибутов можно определить составные ключи, чтобы управлять элементами, возвращаемыми запросом обработки SELECT DISTINCT. При использовании составных ключей порядок сортировки элементов атрибута определяется порядком элементов составного ключа. В задачах этого раздела предстоит изменить имя пользовательской иерархии, имена элементов, отображаемые для атрибутов Date, Month, Calendar Quarter и Calendar Semester, определить составные ключи для атрибутов EnglishMonthName, CalendarQuarter и CalendarSemester, а затем изменить порядок элементов составных ключей, чтобы управлять порядком сортировки элементов измерения.
Изменение пользовательской иерархии
Изменение пользовательской иерархии
Перейдите в конструктор измерений на измерение Time в среде Business Intelligence Development Studio и откройте вкладку Структура измерения.
В области Иерархии и уровни выберите иерархию CalendarYear — CalendarSemester — CalendarQuarter — EnglishMonthName — FullDateAlternateKey, а затем в окне свойств измените значение свойства Имя на Календарное время.
Новое имя этой пользовательской иерархии — Календарное время.
В пользовательской иерархии Calendar Time измените уровень English Month Name на Calendar Month, а уровень Full Date Alternate Key — на Date соответственно.
В конструкторе представлений источника данных переключитесь на представление источника данных Adventure Works DW, щелкните правой кнопкой мыши пункт Время (dbo.DimTime) в области Таблицы и выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления в поле Имя столбца введите SimpleDate, а затем в поле Выражение введите следующий сценарий SQL:
DATENAME(mm, FullDateAlternateKey) + ' ' + DATENAME(dd, FullDateAlternateKey) + ', ' + DATENAME(yy, FullDateAlternateKey)
Этот сценарий SQL получает значения года, месяца и дня из столбца FullDateAlternateKey. Требуется изменить уровень атрибута Date в иерархии Calendar Time измерения Time, чтобы вывести значение этого нового столбца вместо первоначального значения, хранящегося в столбце FullDateAlternateKey таблицы DimTime.
Нажмите кнопку ОК, а затем в конструкторе измерений переключитесь на измерение Time.
Выберите строку Дата в иерархии Календарное время и просмотрите свойства уровня «Дата» в окне свойств.
Обратите внимание, что уровень иерархии Дата основан на атрибуте FullDateAlternateKey. На следующих этапах предстоит изменить атрибут, на котором основан этот уровень, на атрибут TimeKey, а затем изменить свойства атрибута TimeKey таким образом, чтобы имена его элементов были основаны на значениях только что определенного столбца SimpleDate. Можно было также сохранить FullDateAlternateKey в качестве атрибута, на котором основан уровень «Дата», и изменить его таким образом, чтобы имена его элементов были основаны на столбце SimpleDate. Однако первый метод более эффективен, поскольку устраняет необходимость одновременного наличия атрибутов TimeKey и FullDateAlternateKey. Теперь атрибут FullDateAlternateKey можно удалить.
В пользовательской иерархии Календарное время измените значение свойства SourceAttribute уровня Дата на TimeKey, а затем в области Атрибуты удалите атрибут FullDateAlternateKey.
Выберите в области Атрибуты элемент TimeKey и в окне свойств раскройте коллекцию свойств NameColumn, а затем — коллекцию свойств Source. Измените значение свойства ColumnID на SimpleDate.
Обратите внимание, что свойство OrderBy атрибута TimeKey указывает на то, что упорядочение элементов иерархии атрибута будет основано на значениях их ключей.
В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного развертывания перейдите в конструкторе измерений на вкладку Обозреватель для измерения Time и нажмите кнопку Повторное соединение на панели инструментов.
Раскройте уровни в иерархии Календарное время, чтобы просмотреть элементы уровня Дата.
Обратите внимание, что элементы уровня «Дата» более понятны, чем были раньше. Однако для элементов «Полугодие», «Квартал» и «Месяц» не указан год, к которому они относятся.
На следующем рисунке показаны элементы уровня «Дата».
В списке Иерархия выберите пункт EnglishMonthName и раскройте элемент Все.
Обратите внимание, что каждый из месяцев в измерении Time отображается только один раз, а не отдельно для каждого года. В следующей задаче этого раздела предстоит создать уникальные имена для каждого месяца каждого года.
В списке Иерархия выберите значение CalendarQuarter и раскройте элемент Все.
Обратите внимание, что каждый из кварталов в измерении Time показан только один раз, а не отдельно для каждого года. Обратите внимание на то, что месяцы сортируются в алфавитном порядке. В следующей задаче этого раздела предстоит создать уникальные имена для каждого календарного квартала каждого года. На занятии 4 будет рассмотрено, как выполнять сортировку месяцев в хронологическом порядке.
Создание уникальных имен для элементов измерения
Создание уникальных имен для элементов измерения
В конструкторе представлений источника данных переключитесь на представление источника данных Adventure Works DW, щелкните правой кнопкой мыши пункт Время (dbo.DimTime) в области Таблицы и выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления в поле Имя столбца введите MonthName, а затем в поле Выражение — следующий сценарий SQL:
EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)
Этот сценарий SQL помещает в новый столбец сцепление месяца и года по каждому месяцу в таблице DimTime.
Нажмите кнопку ОК.
Щелкните правой кнопкой мыши элемент Time (dbo.DimTime) в области Таблицы и выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления введите CalendarQuarterDesc в поле Имя столбца, а затем в поле Выражение введите следующий сценарий SQL:
'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' + CONVERT(CHAR (4), CalendarYear)
Этот сценарий SQL помещает в новый столбец сцепление календарного квартала и года по каждому кварталу в таблице DimTime.
Нажмите кнопку ОК.
Щелкните правой кнопкой мыши элемент Время в области Таблицы и выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления в поле Имя столбца введите CalendarSemesterDesc, а затем в поле Выражение введите следующий сценарий SQL:
CASE WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) ELSE 'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) END
Этот сценарий SQL помещает в новый столбец связку календарного полугодия и года по каждому полугодию в таблице DimTime.
Нажмите кнопку ОК, а затем переключитесь в конструкторе измерений на измерение Time и выберите вкладку Структура измерения.
Требуется изменить атрибуты EnglishMonthName, CalendarQuarter и CalendarSemester в измерении Time, чтобы использовать эти значения в новых столбцах как значения элементов.
На панели Атрибуты выберите элемент EnglishMonthName. В окне свойств раскройте свойства NameColumn и Source, а затем измените значение свойства ColumnID на MonthName.
Повторив эти действия, измените значение свойства ColumnID для атрибута Calendar Quarter и атрибута Calendar Semester следующим образом.
- Calendar Quarter — измените значение свойства ColumnID на CalendarQuarterDesc.
- Calendar Semester — измените значение свойства ColumnID на CalendarSemesterDesc.
В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Обозреватель и выберите измерение Time.
На панели инструментов вкладки Обозреватель нажмите кнопку Повторное соединение и просмотрите элементы иерархии атрибута Calendar Quarter.
Обратите внимание, что, хотя имена элементов иерархии атрибута CalendarQuarter стали более понятны, иерархия атрибутов по-прежнему содержит четыре элемента, а не по отдельному элементу для каждого сочетания года и квартала. В иерархиях атрибута EnglishMonthName и CalendarSemester элементы представлены таким же образом. В следующей задаче этого раздела поведение этих иерархий атрибутов будет изменено с использованием составных ключей.
Определение значений составных ключей
Определение значений составных ключей
Выберите на вкладке «Структура измерения» конструктора измерений измерение Time, выделите атрибут EnglishMonthName и нажмите кнопку с многоточием (…) в ячейке свойства KeyColumns окна «Свойства», чтобы изменить значение этого атрибута.
Будет открыт Редактор коллекции DataItem, в котором будет отображен ключевой столбец элемента для этого атрибута. При обработке измерения в службах Analysis Services выдается запрос SELECT DISTINCT, чтобы определить элементы измерения. В окне Редактор коллекции DataItem можно указать для атрибута составной ключ вместо ключа, состоящего из одного столбца, чтобы получить дополнительные элементы измерения.
Нажмите кнопку Добавить, чтобы указать второй ключ-элемент для атрибута измерения.
В списке элементов будет отображен новый ключ-элемент. Необходимо определить свойства этого нового ключа-элемента.
В поле Создать привязки для свойств (WChar) нажмите кнопку с многоточием (...) в ячейке свойства Источник, чтобы изменить его значение.
Будет открыто диалоговое окно Привязка объекта. В этом диалоговом окне укажите существующий столбец в заданной таблице либо укажите тип столбца, который необходимо создать, если разработка реляционной схемы ведется методом нисходящего проектирования.
В списке Тип привязки выберите значение Привязка к столбцу.
Убедитесь, что в списке Исходная таблица выбрана таблица Время.
В списке Исходный столбец выберите значение CalendarYear.
На следующем рисунке показано диалоговое окно Привязка объекта.
Нажмите кнопку ОК, чтобы закрыть диалоговое окно Привязка объекта, и еще раз нажмите кнопку ОК, чтобы закрыть окно Редактор коллекции DataItem.
Обратите внимание, что свойство KeyColumns теперь имеет значение (Collection).
Выберите атрибут CalendarQuarter и нажмите кнопку с многоточием (...) в ячейке свойства KeyColumns окна «Свойства», чтобы изменить значение этого атрибута.
Будет открыто окно Редактор коллекции DataItem.
Нажмите кнопку Добавить, чтобы указать второй элемент свойства KeyColumns.
В поле Создать привязки для свойств (WChar) нажмите кнопку с многоточием (...) в ячейке свойства Источник, чтобы изменить его значение.
Будет открыто диалоговое окно Привязка объекта.
В списке Тип привязки выберите значение Привязка к столбцу.
Убедитесь, что в списке Исходная таблица выбрана таблица Время.
В списке Исходный столбец выберите значение CalendarYear.
Нажмите кнопку ОК, затем нажмите кнопку ОК еще раз.
Выберите атрибут CalendarSemester, а затем нажмите кнопку с многоточием (...) в ячейке свойства KeyColumns окна свойств, чтобы изменить значение этого атрибута.
Будет открыто диалоговое окно Редактор коллекции DataItem.
Нажмите кнопку Добавить, чтобы указать второй элемент свойства KeyColumns.
В поле Создать привязки для свойств (WChar) нажмите кнопку с многоточием (...) в ячейке свойства Источник, чтобы изменить его значение.
Будет открыто диалоговое окно Привязка объекта.
В списке Тип привязки выберите значение Привязка к столбцу.
Убедитесь, что в списке Исходная таблица выбрана таблица Время.
В списке Исходный столбец выберите значение CalendarYear.
Нажмите кнопку ОК, затем нажмите кнопку ОК еще раз.
В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Обозреватель и выберите измерение Time.
На панели инструментов вкладки Обозреватель нажмите кнопку Повторное соединение и просмотрите элементы иерархии атрибута Calendar Quarter.
Обратите внимание, что, хотя в иерархии атрибута CalendarQuarter теперь есть элементы для каждого квартала каждого года, эти элементы не отсортированы в хронологическом порядке. Вместо этого они отсортированы сначала по кварталам, а затем по годам. В следующей задаче этого раздела требуется изменить поведение этой иерархии атрибута, чтобы отсортировать ее элементы сначала по годам, а затем по кварталам.
На следующем рисунке показана текущая структура иерархии атрибута CalendarQuarter.
Просмотрите элементы иерархий атрибутов EnglishMonthName и CalendarSemester.
Обратите внимание, что элементы этих иерархий также не отсортированы в хронологическом порядке. Вместо этого они отсортированы сначала соответственно по месяцам или полугодиям, а затем — по годам. В следующей задаче этого раздела поведение этих иерархий атрибутов будет изменено, чтобы изменить порядок сортировки.
Изменение порядка сортировки путем изменения порядка элементов составных ключей
Изменение порядка элементов составных ключей
Перейдите в конструкторе измерений на вкладку Структура измерения измерения Time и выберите на панели Атрибуты атрибут CalendarSemester.
В окне свойств просмотрите значение свойства OrderBy.
Элементы иерархии атрибута CalendarSemester отсортированы по значению их ключа. При составном ключе сортировка ключей элементов ведется сначала по значению первого ключа элемента, а затем — по значению второго ключа элемента. Иными словами, элементы иерархии атрибута CalendarSemester сортируются сначала по полугодиям, а затем по годам.
В окне свойств нажмите кнопку с многоточием (...), чтобы изменить значения свойства KeyColumns.
Будет открыто окно Редактор коллекции DataItem.
Убедитесь, что в таблице Элементы окна Редактор коллекции DataItem выбран атрибут DimTime.CalendarSemester (UnsignedTinyInt), а затем щелкните указывающую вниз стрелку, чтобы изменить порядок элементов этого составного ключа на обратный. Нажмите кнопку ОК.
Теперь элементы этой иерархии атрибута отсортированы сначала по годам, а затем по полугодиям.
Выберите в области Атрибуты элемент CalendarQuarter и нажмите кнопку с многоточием (...) для свойства KeyColumns в окне свойств.
Убедитесь, что в таблице Элементы окна Редактор коллекции DataItem выбран атрибут DimTime.CalendarQuarter (UnsignedTinyInt), а затем щелкните указывающую вниз стрелку, чтобы изменить порядок элементов этого составного ключа на обратный. Нажмите кнопку ОК.
Теперь элементы этой иерархии атрибута отсортированы сначала по годам, а затем по кварталам.
В области Атрибуты выберите элемент EnglishMonthName, а затем в окне свойств нажмите кнопку с многоточием (...) для свойства KeyColumns.
Убедитесь, что в таблице Элементы окна Редактор коллекции DataItem выбран атрибут DimTime.EnglishMonthName (WChar), а затем щелкните указывающую вниз стрелку, чтобы изменить порядок элементов этого составного ключа на обратный. Нажмите кнопку ОК.
Теперь элементы этой иерархии атрибута отсортированы сначала по годам, а затем по месяцам.
В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Обозреватель и выберите измерение Time.
На панели инструментов вкладки Обозреватель нажмите Повторное соединение, а затем просмотрите указанные элементы в иерархии атрибутов CalendarQuarter.
Обратите внимание, что теперь элементы этих иерархий атрибутов сортируются в хронологическом порядке, по годам, а затем по полугодиям или кварталам соответственно.
Просмотрите элементы иерархии атрибута EnglishMonthName.
Обратите внимание, что элементы иерархии теперь сортируются сначала по году, а затем в алфавитном порядке по месяцам (это происходит потому, что тип данных для столбца EnglishCalendarMonth в представлении источника данных является строковым, основанным на типе данных nvarchar в базовой реляционной базе данных). Однако было бы полезнее, если бы месяцы каждого года сортировались в хронологическом порядке. Это изменение будет сделано на Занятии 4.
На следующем рисунке показана иерархия атрибута EnglishMonthName.
В меню Файл среды BI Development Studio выберите команду Сохранить все, чтобы сохранить изменения, внесенные к настоящему моменту в проект Tutorial служб Analysis Services, что позволит при желании остановить процесс обучения и продолжить его позднее.
Элементы иерархий атрибутов, входящих в измерение времени, стали более удобными для работы благодаря созданию именованных вычислений в представлении источника данных и их последующему использованию в качестве имен элементов атрибутов. Кроме того, работа стала удобнее благодаря определению составных ключей и установке соответствующего порядка элементов составных ключей для управления порядком сортировки элементов измерения.
Следующая задача занятия
См. также
Другие ресурсы
Определение и настройка измерений, атрибутов и иерархий