Изменение измерения времени

Для атрибутов можно определить составные ключи, чтобы управлять элементами, возвращаемыми запросом обработки SELECT DISTINCT. При использовании составных ключей порядок сортировки элементов атрибута определяется порядком элементов составного ключа. В задачах этого раздела предстоит изменить имя пользовательской иерархии, имена элементов, отображаемые для атрибутов Date, Month, Calendar Quarter и Calendar Semester, определить составные ключи для атрибутов EnglishMonthName, CalendarQuarter и CalendarSemester, а затем изменить порядок элементов составных ключей, чтобы управлять порядком сортировки элементов измерения.

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

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

  1. Перейдите в конструктор измерений на измерение Time в среде Business Intelligence Development Studio и откройте вкладку Структура измерения.

  2. В области Иерархии и уровни выберите иерархию CalendarYear — CalendarSemester — CalendarQuarter — EnglishMonthName — FullDateAlternateKey, а затем в окне свойств измените значение свойства Имя на Календарное время.

    Новое имя этой пользовательской иерархии — Календарное время.

  3. В пользовательской иерархии Calendar Time измените уровень English Month Name на Calendar Month, а уровень Full Date Alternate Key — на Date соответственно.

  4. В конструкторе представлений источника данных переключитесь на представление источника данных Adventure Works DW, щелкните правой кнопкой мыши пункт Время (dbo.DimTime) в области Таблицы и выберите команду Создать именованное вычисление.

  5. В диалоговом окне Создание именованного вычисления в поле Имя столбца введите SimpleDate, а затем в поле Выражение введите следующий сценарий SQL:

    DATENAME(mm, FullDateAlternateKey) + ' ' +
    DATENAME(dd, FullDateAlternateKey) + ', ' +
    DATENAME(yy, FullDateAlternateKey)
    

    Этот сценарий SQL получает значения года, месяца и дня из столбца FullDateAlternateKey. Требуется изменить уровень атрибута Date в иерархии Calendar Time измерения Time, чтобы вывести значение этого нового столбца вместо первоначального значения, хранящегося в столбце FullDateAlternateKey таблицы DimTime.

  6. Нажмите кнопку ОК, а затем в конструкторе измерений переключитесь на измерение Time.

  7. Выберите строку Дата в иерархии Календарное время и просмотрите свойства уровня «Дата» в окне свойств.

    Обратите внимание, что уровень иерархии Дата основан на атрибуте FullDateAlternateKey. На следующих этапах предстоит изменить атрибут, на котором основан этот уровень, на атрибут TimeKey, а затем изменить свойства атрибута TimeKey таким образом, чтобы имена его элементов были основаны на значениях только что определенного столбца SimpleDate. Можно было также сохранить FullDateAlternateKey в качестве атрибута, на котором основан уровень «Дата», и изменить его таким образом, чтобы имена его элементов были основаны на столбце SimpleDate. Однако первый метод более эффективен, поскольку устраняет необходимость одновременного наличия атрибутов TimeKey и FullDateAlternateKey. Теперь атрибут FullDateAlternateKey можно удалить.

  8. В пользовательской иерархии Календарное время измените значение свойства SourceAttribute уровня Дата на TimeKey, а затем в области Атрибуты удалите атрибут FullDateAlternateKey.

  9. Выберите в области Атрибуты элемент TimeKey и в окне свойств раскройте коллекцию свойств NameColumn, а затем — коллекцию свойств Source. Измените значение свойства ColumnID на SimpleDate.

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

  10. В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного развертывания перейдите в конструкторе измерений на вкладку Обозреватель для измерения Time и нажмите кнопку Повторное соединение на панели инструментов.

  11. Раскройте уровни в иерархии Календарное время, чтобы просмотреть элементы уровня Дата.

    Обратите внимание, что элементы уровня «Дата» более понятны, чем были раньше. Однако для элементов «Полугодие», «Квартал» и «Месяц» не указан год, к которому они относятся.

    На следующем рисунке показаны элементы уровня «Дата».

    Элементы уровня «Дата»

  12. В списке Иерархия выберите пункт EnglishMonthName и раскройте элемент Все.

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

  13. В списке Иерархия выберите значение CalendarQuarter и раскройте элемент Все.

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

Создание уникальных имен для элементов измерения

Создание уникальных имен для элементов измерения

  1. В конструкторе представлений источника данных переключитесь на представление источника данных Adventure Works DW, щелкните правой кнопкой мыши пункт Время (dbo.DimTime) в области Таблицы и выберите команду Создать именованное вычисление.

  2. В диалоговом окне Создание именованного вычисления в поле Имя столбца введите MonthName, а затем в поле Выражение — следующий сценарий SQL:

    EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)
    

    Этот сценарий SQL помещает в новый столбец сцепление месяца и года по каждому месяцу в таблице DimTime.

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

  4. Щелкните правой кнопкой мыши элемент Time (dbo.DimTime) в области Таблицы и выберите команду Создать именованное вычисление.

  5. В диалоговом окне Создание именованного вычисления введите CalendarQuarterDesc в поле Имя столбца, а затем в поле Выражение введите следующий сценарий SQL:

    'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' +
    CONVERT(CHAR (4), CalendarYear)
    

    Этот сценарий SQL помещает в новый столбец сцепление календарного квартала и года по каждому кварталу в таблице DimTime.

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

  7. Щелкните правой кнопкой мыши элемент Время в области Таблицы и выберите команду Создать именованное вычисление.

  8. В диалоговом окне Создание именованного вычисления в поле Имя столбца введите CalendarSemesterDesc, а затем в поле Выражение введите следующий сценарий SQL:

    CASE
    WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' ' 
           + CONVERT(CHAR(4), CalendarYear)
    ELSE
    'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear)
    END
    

    Этот сценарий SQL помещает в новый столбец связку календарного полугодия и года по каждому полугодию в таблице DimTime.

  9. Нажмите кнопку ОК, а затем переключитесь в конструкторе измерений на измерение Time и выберите вкладку Структура измерения.

    Требуется изменить атрибуты EnglishMonthName, CalendarQuarter и CalendarSemester в измерении Time, чтобы использовать эти значения в новых столбцах как значения элементов.

  10. На панели Атрибуты выберите элемент EnglishMonthName. В окне свойств раскройте свойства NameColumn и Source, а затем измените значение свойства ColumnID на MonthName.

  11. Повторив эти действия, измените значение свойства ColumnID для атрибута Calendar Quarter и атрибута Calendar Semester следующим образом.

    • Calendar Quarter — измените значение свойства ColumnID на CalendarQuarterDesc.
    • Calendar Semester — измените значение свойства ColumnID на CalendarSemesterDesc.
  12. В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Обозреватель и выберите измерение Time.

  13. На панели инструментов вкладки Обозреватель нажмите кнопку Повторное соединение и просмотрите элементы иерархии атрибута Calendar Quarter.

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

Определение значений составных ключей

Определение значений составных ключей

  1. Выберите на вкладке «Структура измерения» конструктора измерений измерение Time, выделите атрибут EnglishMonthName и нажмите кнопку с многоточием () в ячейке свойства KeyColumns окна «Свойства», чтобы изменить значение этого атрибута.

    Будет открыт Редактор коллекции DataItem, в котором будет отображен ключевой столбец элемента для этого атрибута. При обработке измерения в службах Analysis Services выдается запрос SELECT DISTINCT, чтобы определить элементы измерения. В окне Редактор коллекции DataItem можно указать для атрибута составной ключ вместо ключа, состоящего из одного столбца, чтобы получить дополнительные элементы измерения.

  2. Нажмите кнопку Добавить, чтобы указать второй ключ-элемент для атрибута измерения.

    В списке элементов будет отображен новый ключ-элемент. Необходимо определить свойства этого нового ключа-элемента.

  3. В поле Создать привязки для свойств (WChar) нажмите кнопку с многоточием (...) в ячейке свойства Источник, чтобы изменить его значение.

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

  4. В списке Тип привязки выберите значение Привязка к столбцу.

  5. Убедитесь, что в списке Исходная таблица выбрана таблица Время.

  6. В списке Исходный столбец выберите значение CalendarYear.

    На следующем рисунке показано диалоговое окно Привязка объекта.

    Диалоговое окно «Привязка объекта»

  7. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Привязка объекта, и еще раз нажмите кнопку ОК, чтобы закрыть окно Редактор коллекции DataItem.

    Обратите внимание, что свойство KeyColumns теперь имеет значение (Collection).

  8. Выберите атрибут CalendarQuarter и нажмите кнопку с многоточием (...) в ячейке свойства KeyColumns окна «Свойства», чтобы изменить значение этого атрибута.

    Будет открыто окно Редактор коллекции DataItem.

  9. Нажмите кнопку Добавить, чтобы указать второй элемент свойства KeyColumns.

  10. В поле Создать привязки для свойств (WChar) нажмите кнопку с многоточием (...) в ячейке свойства Источник, чтобы изменить его значение.

    Будет открыто диалоговое окно Привязка объекта.

  11. В списке Тип привязки выберите значение Привязка к столбцу.

  12. Убедитесь, что в списке Исходная таблица выбрана таблица Время.

  13. В списке Исходный столбец выберите значение CalendarYear.

  14. Нажмите кнопку ОК, затем нажмите кнопку ОК еще раз.

  15. Выберите атрибут CalendarSemester, а затем нажмите кнопку с многоточием (...) в ячейке свойства KeyColumns окна свойств, чтобы изменить значение этого атрибута.

    Будет открыто диалоговое окно Редактор коллекции DataItem.

  16. Нажмите кнопку Добавить, чтобы указать второй элемент свойства KeyColumns.

  17. В поле Создать привязки для свойств (WChar) нажмите кнопку с многоточием (...) в ячейке свойства Источник, чтобы изменить его значение.

    Будет открыто диалоговое окно Привязка объекта.

  18. В списке Тип привязки выберите значение Привязка к столбцу.

  19. Убедитесь, что в списке Исходная таблица выбрана таблица Время.

  20. В списке Исходный столбец выберите значение CalendarYear.

  21. Нажмите кнопку ОК, затем нажмите кнопку ОК еще раз.

  22. В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Обозреватель и выберите измерение Time.

  23. На панели инструментов вкладки Обозреватель нажмите кнопку Повторное соединение и просмотрите элементы иерархии атрибута Calendar Quarter.

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

    На следующем рисунке показана текущая структура иерархии атрибута CalendarQuarter.

    Текущая структура иерархии CalendarQuarter

  24. Просмотрите элементы иерархий атрибутов EnglishMonthName и CalendarSemester.

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

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

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

  1. Перейдите в конструкторе измерений на вкладку Структура измерения измерения Time и выберите на панели Атрибуты атрибут CalendarSemester.

  2. В окне свойств просмотрите значение свойства OrderBy.

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

  3. В окне свойств нажмите кнопку с многоточием (...), чтобы изменить значения свойства KeyColumns.

    Будет открыто окно Редактор коллекции DataItem.

  4. Убедитесь, что в таблице Элементы окна Редактор коллекции DataItem выбран атрибут DimTime.CalendarSemester (UnsignedTinyInt), а затем щелкните указывающую вниз стрелку, чтобы изменить порядок элементов этого составного ключа на обратный. Нажмите кнопку ОК.

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

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

  6. Убедитесь, что в таблице Элементы окна Редактор коллекции DataItem выбран атрибут DimTime.CalendarQuarter (UnsignedTinyInt), а затем щелкните указывающую вниз стрелку, чтобы изменить порядок элементов этого составного ключа на обратный. Нажмите кнопку ОК.

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

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

  8. Убедитесь, что в таблице Элементы окна Редактор коллекции DataItem выбран атрибут DimTime.EnglishMonthName (WChar), а затем щелкните указывающую вниз стрелку, чтобы изменить порядок элементов этого составного ключа на обратный. Нажмите кнопку ОК.

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

  9. В меню Сборка среды BI Development Studio выберите команду Развернуть «Учебник по службам Analysis Services». После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Обозреватель и выберите измерение Time.

  10. На панели инструментов вкладки Обозреватель нажмите Повторное соединение, а затем просмотрите указанные элементы в иерархии атрибутов CalendarQuarter.

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

  11. Просмотрите элементы иерархии атрибута EnglishMonthName.

    Обратите внимание, что элементы иерархии теперь сортируются сначала по году, а затем в алфавитном порядке по месяцам (это происходит потому, что тип данных для столбца EnglishCalendarMonth в представлении источника данных является строковым, основанным на типе данных nvarchar в базовой реляционной базе данных). Однако было бы полезнее, если бы месяцы каждого года сортировались в хронологическом порядке. Это изменение будет сделано на Занятии 4.

    На следующем рисунке показана иерархия атрибута EnglishMonthName.

    Иерархия атрибутов EnglishMonthName

  12. В меню Файл среды BI Development Studio выберите команду Сохранить все, чтобы сохранить изменения, внесенные к настоящему моменту в проект Tutorial служб Analysis Services, что позволит при желании остановить процесс обучения и продолжить его позднее.

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

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

Изменение измерения «Продукт»

См. также

Другие ресурсы

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

Справка и поддержка

Получение помощи по SQL Server 2005