Урок 3–4. Изменение измерения даты
Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
В ходе выполнения задач этого раздела мы создадим определяемую пользователем иерархию и изменим имена элементов, отображаемых для атрибутов «Дата», «Месяц», «Календарный квартал» и «Календарное полугодие». Также мы определим составные ключи для атрибутов, настроим порядок сортировки элементов измерения и зададим связи атрибутов.
Добавление именованного вычисления
К таблице в представлении источника данных можно добавить именованное вычисление, которое является выражением SQL и представляет собой вычисляемый столбец, Это выражение имеет вид и функции столбца таблицы. Именованные вычисления позволяют расширять реляционную схему таблиц, существующих в представлении источника данных, не изменяя таблицы в базовом источнике данных. Дополнительные сведения см. в разделе Определение именованных вычислений в представлении источника данных (службы Analysis Services)
Добавление именованного вычисления
Чтобы открыть представление источника данных Adventure Works DW 2019, дважды щелкните его в папке Представления источников данных в Обозреватель решений.
Ближе к нижней части панели Таблицы щелкните правой кнопкой мыши таблицу Датаи выберите команду Создание именованного вычисления.
В диалоговом окне Создание именованного вычисления в поле Имя столбца введите SimpleDate , а затем введите или скопируйте и вставьте следующую инструкцию DATENAME в поле Выражение :
DATENAME(mm, FullDateAlternateKey) + ' ' + DATENAME(dd, FullDateAlternateKey) + ', ' + DATENAME(yy, FullDateAlternateKey)
Инструкция DATENAME извлекает из столбца FullDateAlternateKey значения числа, месяца и года. Этот новый столбец будет содержать отображаемое имя для атрибута FullDateAlternateKey.
Нажмите кнопку ОК, а затем разверните таблицу Дата на панели Таблицы .
Именованное вычисление SimpleDate отображается в списке столбцов таблицы "Дата" со значком, обозначающим, что это именованное вычисление.
В меню Файл выберите команду Сохранить все.
На панели Таблицы щелкните правой кнопкой мыши таблицу Датаи выберите пункт Просмотр данных.
Прокрутите вправо и просмотрите последний столбец в представлении Просмотр таблицы "Дата" .
Обратите внимание, что в представлении источника данных появился столбец SimpleDate , содержащий объединенные данные из нескольких столбцов базового источника данных. При этом исходный источник данных изменять не пришлось.
Закройте представление Просмотр таблицы "Дата" .
Использование именованных вычислений в качестве имен элементов
После создания именованного вычисления в представлении источника данных это вычисление можно использовать в качестве свойства атрибута.
Использование именованного вычисления в качестве имен элементов
Откройте Designer измерения для измерения Дата в SQL Server Data Tools. Для этого дважды щелкните измерение Date в узле Измерения в обозревателе решений.
На панели Атрибуты на вкладке Структура измерения выберите атрибут Date Key .
Если окно "Свойства" не открыто, откройте его и нажмите в строке заголовка кнопку Автоматически скрывать , чтобы оно оставалось открытым.
Щелкните поле свойства NameColumn в нижней части окна, а затем нажмите кнопку с многоточием (...), чтобы открыть диалоговое окно Столбец имен .
Выберите пункт SimpleDate внизу списка Исходный столбец и нажмите кнопку OK.
В меню Файл выберите команду Сохранить все.
Создание иерархии
Иерархию можно создать, перетащив атрибут с панели Атрибуты на панель Иерархии .
Создание иерархии
На вкладке Структура измерения конструктора измерений для измерения Дата перетащите атрибут Календарный год с панели Атрибуты на панель Иерархии .
Перетащите атрибут Calendar Семестр из области <Атрибуты в новую ячейку уровня> в области Иерархии под уровнем Календарный год.
Перетащите атрибут Calendar Quarter из области <Атрибуты в новую ячейку уровня> в области Иерархии под уровнем Календарь семестра.
Перетащите атрибут Название месяца на английском языке из области <Атрибуты в новую ячейку уровня> в области Иерархии под уровнем "Календарный квартал".
Перетащите атрибут Date Key из области <Атрибуты в новую ячейку уровня> в области Иерархии под уровнем Название месяца на английском языке.
В области Иерархии щелкните правой кнопкой мыши заголовок иерархии Иерархия , выберите команду Переименовать, а затем введите Дата календаря.
С помощью контекстного меню иерархии Календарная дата измените имя уровня English Month Name на Календарный месяц, а имя уровня Date Key — на Дата.
Удалите атрибут Full Date Alternate Key на панели Атрибуты , так как он больше не понадобится. Нажмите кнопку OK в окне подтверждения Удалить объекты .
В меню Файл выберите команду Сохранить все.
Определение связей атрибутов
Необходимо определять связи между атрибутами, если базовые данные это поддерживают. Определение связей между атрибутами ускоряет обработку измерений, секций и запросов.
Определение связей атрибутов
В конструкторе измерений для измерения Date перейдите на вкладку Связи атрибутов .
На диаграмме щелкните правой кнопкой мыши атрибут English Month Name и выберите команду Создать связь атрибутов.
В диалоговом окне Создание связи атрибутов свойство Исходный атрибут имеет значение English Month Name. Задайте для поля Связанный атрибут значение Календарный квартал.
В списке Тип связи выберите тип Жесткая.
Связь имеет тип Жесткая , так как связи между элементами не будут меняться с течением времени.
Нажмите кнопку ОК.
На диаграмме щелкните правой кнопкой мыши атрибут Календарный квартал и выберите команду Создать связь атрибутов.
В диалоговом окне Создание связи атрибутов поле Исходный атрибут имеет значение Calendar Quarter. Задайте для поля Связанный атрибут значение Календарное полугодие.
В списке Тип связи выберите тип Жесткая.
Нажмите кнопку ОК.
На диаграмме щелкните правой кнопкой мыши атрибут Календарное полугодие , а затем выберите команду Создать связь атрибутов.
В диалоговом окне Создание связи атрибутов поле Исходный атрибут имеет значение Календарное полугодие. Задайте для поля Связанный атрибут значение Календарный год.
В списке Тип связи выберите тип Жесткая.
Нажмите кнопку ОК.
В меню Файл выберите команду Сохранить все.
Создание уникальных имен для элементов измерения
В этой задаче будут созданы столбцы понятных имен, которые будут использоваться для атрибутов EnglishMonthName, CalendarQuarterи CalendarSemester .
Создание уникальных имен для элементов измерения
Чтобы переключиться на представление источника данных Adventure Works DW 2019, дважды щелкните его в папке Представления источников данных в Обозреватель решений.
На панели Таблицы щелкните правой кнопкой мыши таблицу Датаи выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления введите MonthName в поле Имя столбца , а в поле Выражение введите или скопируйте и вставьте следующую инструкцию:
EnglishMonthName+' '+ CONVERT(CHAR (4), CalendarYear)
Эта инструкция объединяет месяц и год для каждого месяца в таблице в новый столбец.
Нажмите кнопку ОК.
На панели Таблицы щелкните правой кнопкой мыши таблицу Датаи выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления введите CalendarQuarterDesc в поле Имя столбца , а затем в поле Выражение введите или скопируйте и вставьте следующий скрипт SQL:
'Q' + CONVERT(CHAR (1), CalendarQuarter) +' '+ 'CY ' + CONVERT(CHAR (4), CalendarYear)
Этот скрипт SQL помещает в новый столбец объединение календарного квартала и года для каждого квартала в таблице.
Нажмите кнопку ОК.
На панели Таблицы щелкните правой кнопкой мыши таблицу Датаи выберите команду Создать именованное вычисление.
В диалоговом окне Создание именованного вычисления введите CalendarSemesterDesc в поле Имя столбца , а затем в поле Выражение введите или скопируйте и вставьте следующий скрипт SQL:
CASE WHEN CalendarSemester = 1 THEN 'H1' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) ELSE 'H2' + ' ' + 'CY' + ' ' + CONVERT(CHAR(4), CalendarYear) END
Этот скрипт SQL помещает в новый столбец объединение календарного полугодия и года для каждого полугодия в таблице.
Нажмите кнопку ОК.
В меню Файл выберите команду Сохранить все.
Определение составного свойства KeyColumns и задание столбца имени
Свойство KeyColumns содержит столбец или столбцы, представляющие ключ для атрибута. В этой задаче будет определено составное свойство KeyColumns.
Определение составного свойства KeyColumns для атрибута English Month Name
Откройте измерение Date и перейдите на вкладку Структура измерения .
На панели Атрибуты щелкните атрибут English Month Name .
В окне Свойства щелкните в поле KeyColumns и нажмите кнопку обзора (...).
В диалоговом окне Ключевые столбцы в списке Доступные столбцы выберите столбец CalendarYear и нажмите кнопку > .
Столбцы EnglishMonthName и CalendarYear отображаются в списке Ключевые столбцы .
Нажмите кнопку ОК.
Чтобы задать свойство NameColumn атрибута EnglishMonthName , щелкните поле NameColumn в окне свойств и нажмите кнопку обзора (...).
В диалоговом окне Столбец имени в списке Исходный столбец выберите MonthName, а затем нажмите кнопку ОК.
В меню Файл выберите команду Сохранить все.
Определение составного свойства KeyColumns для атрибута Calendar Quarter
На панели Атрибуты щелкните атрибут Календарный квартал .
В окне Свойства щелкните в поле KeyColumns и нажмите кнопку обзора (...).
В диалоговом окне Ключевые столбцы в списке Доступные столбцы выберите столбец CalendarYear и нажмите кнопку > .
Столбцы CalendarQuarter и CalendarYear отображаются в списке Ключевые столбцы .
Нажмите кнопку ОК.
Чтобы задать свойство NameColumn атрибута Календарный квартал , щелкните поле NameColumn в окне свойств и нажмите кнопку обзора (...).
В диалоговом окне Столбец имени в списке Исходный столбец выберите CalendarQuarterDesc, а затем нажмите кнопку ОК.
В меню Файл выберите команду Сохранить все.
Определение составного свойства KeyColumns для атрибута Calendar Semester
На панели Атрибуты щелкните атрибут Календарное полугодие .
В окне Свойства щелкните в поле KeyColumns и нажмите кнопку обзора (...).
В диалоговом окне Ключевые столбцы выберите из списка Доступные столбцы столбец CalendarYear, а затем нажмите кнопку > .
Столбцы CalendarSemester и CalendarYear отображаются в списке Ключевые столбцы .
Нажмите кнопку ОК.
Чтобы задать свойство NameColumn атрибута Календарное полугодие , щелкните поле NameColumn в окне свойств и нажмите кнопку обзора (...).
В диалоговом окне Столбец имени в списке Исходный столбец выберите CalendarSemesterDesc, а затем нажмите кнопку ОК.
В меню Файл выберите команду Сохранить все.
Развертывание и просмотр изменений
После изменения атрибутов и иерархий необходимо произвести развертывание произведенных изменений и повторную обработку связанных объектов, прежде чем эти изменения можно будет просмотреть.
Развертывание и просмотр изменений
В меню Сборка SQL Server Data Tools выберите Команду Развернуть учебник по службам Analysis Services.
Получив сообщение Развертывание выполнено успешно , перейдите на вкладку Браузер окна Конструктор измерений для измерения Date и щелкните на панели инструментов кнопку повторного соединения.
В списке Иерархия выберите значение Календарный квартал . Просмотрите элементы иерархии атрибута Календарный квартал .
Обратите внимание, что имена элементов иерархии атрибута Календарный квартал выглядят понятнее и проще в использовании, так как для их отображения создано именованное вычисление. Теперь в иерархии атрибута Календарный квартал есть элементы для каждого квартала каждого года. Элементы не отсортированы в хронологическом порядке. Вместо этого они отсортированы сначала по кварталам, а затем по годам. В следующей задаче этого раздела требуется изменить поведение этой иерархии атрибута, чтобы отсортировать ее элементы сначала по годам, а затем по кварталам.
Просмотрите элементы иерархий атрибутов English Month Name и Календарное полугодие .
Обратите внимание, что элементы этих иерархий также не отсортированы в хронологическом порядке. Вместо этого они отсортированы сначала соответственно по месяцам или полугодиям, а затем — по годам. В следующей задаче этого раздела поведение этих иерархий атрибутов будет изменено, чтобы изменить порядок сортировки.
Изменение порядка сортировки путем изменения порядка элементов составных ключей
В этой задаче будет изменен порядок сортировки посредством изменения порядка ключей, составляющих составной ключ.
Изменение порядка элементов составных ключей
Открыв измерение Date в конструкторе измерений, перейдите на вкладку Структура измерения и выберите Календарное полугодие на панели Атрибуты .
В окне свойств просмотрите значение свойства OrderBy . Оно имеет значение Ключ.
Элементы иерархии атрибута Календарное полугодие отсортированы по значению ключа. При составном ключе сортировка ключей элементов ведется упорядочение сначала по значению первого ключа элемента, а затем — по значению второго ключа элемента. Иными словами, элементы иерархии атрибута Календарное полугодие отсортированы сначала по полугодиям, а затем по годам.
В окне свойств нажмите кнопку обзора (...), чтобы изменить значение свойства KeyColumns .
В списке Ключевые столбцы в диалоговом окне Ключевые столбцы выберите столбец CalendarSemester , а затем нажмите стрелку вниз, чтобы изменить порядок элементов составного ключа. Нажмите кнопку ОК.
Теперь элементы этой иерархии атрибута отсортированы сначала по годам, а затем по полугодиям.
Выберите Календарный квартал на панели Атрибуты и нажмите кнопку обзора (...) для свойства KeyColumns в окне свойств.
В списке Ключевые столбцы диалогового окна Ключевые столбцы выделите столбец CalendarQuarter , а затем нажмите стрелку вниз, чтобы изменить порядок элементов составного ключа. Нажмите кнопку ОК.
Теперь элементы этой иерархии атрибута отсортированы сначала по годам, а затем по кварталам.
На панели Атрибуты выберите элемент English Month Name , а затем в окне свойств нажмите кнопку с многоточием (...) для свойства KeyColumns .
В списке Ключевые столбцы диалогового окна Ключевые столбцы выделите столбец EnglishMonthName , а затем нажмите стрелку вниз, чтобы изменить порядок элементов составного ключа. Нажмите кнопку ОК.
Теперь элементы этой иерархии атрибута отсортированы сначала по годам, а затем по месяцам.
В меню Сборка SQL Server Data Tools выберите Команду Развернуть учебник по службам Analysis Services. После успешного завершения развертывания в конструкторе измерений перейдите на вкладку Браузер и выберите измерение Date .
На панели инструментов вкладки Браузер нажмите кнопку повторного соединения.
Просмотрите элементы иерархий атрибутов Календарный квартал и Календарное полугодие .
Обратите внимание, что теперь элементы этих иерархий атрибутов сортируются в хронологическом порядке, по годам, а затем по полугодиям или кварталам соответственно.
Просмотрите элементы иерархии атрибута English Month Name .
Обратите внимание, что теперь элементы этой иерархии атрибута сортируются сначала по годам, а затем по месяцам в алфавитном порядке. Причина этого заключается в том, что столбец EnglishCalendarMonth в представлении источника данных имеет строковый тип данных, который основан на типе данных nvarchar базовой реляционной базы данных. Сведения о сортировке по месяцам хронологически внутри года см. в разделе Сортировка элементов атрибута по вторичному атрибуту.