Введение в OLAP и хранилища данных

OLAP-куб. Доработка множества мер

Показано, как модифицировать ранее созданный куб: настроить формат отображения и типы данных мер, привести названия к единому виду, затем добавить вычисляемое поле в измерение Customer. Логика движения — от визуального представления показателей к данным источника: сначала задаются Format String и Data Type для денежных и процентных мер, после чего в Data Source View создается Full Name с обработкой отсутствующего среднего имени.

Основные мысли

В результате изучения лекции слушатель будет способен:
1. Объяснять, зачем в кубе разделять тип данных и формат отображения мер.
2. Настраивать свойства Format String и Data Type для денежных, количественных и процентных мер.
3. Различать режимы работы с мерами, включая Show Measures Grid и Inherited.
4. Применять вычисляемые поля в Data Source View для расширения измерения.
5. Создавать формулу Full Name с проверкой отсутствующего среднего имени.
6. Проверять результат вычисляемого поля через Explore Data.
Показывать лекцию целиком
Краткое изложение

1. Переход к модификации куба

Переходим к модификации уже созданного куба. Откроем куб: в нем видны меры (measures) и измерения (dimensions), а внутри каждого измерения — отобранные атрибуты (attributes). Внесем изменения.

2. Настройка формата мер

Выбираем первую меру — Order Quantity (количество заказанного товара). У нее есть свойство Format String (формат строки). В него вводим формат разделителя разрядов: #,##. Так значение будет выводиться с запятой для удобства восприятия.

Чтобы выделить несколько полей, переключаемся в режим Show Measures Grid (показать сетку мер). Выбираем все меры, кроме Unit Price и Discount Percent, а также кроме Order Quantity, для которого формат уже задан.

Для денежных мер выбираем Data Type (тип данных)Currency (валюта). При необходимости используем Inherited (наследуемый): тип данных наследуется из базы, а Format String задается отдельно. Для отображения денежных значений выбираем формат Currency. Для Discount Percent задаем формат Percent (проценты), чтобы выводилось не 0,3, а 30%.

Названия приводим к полному и единообразному виду: PCT заменяем на Percent, сокращение MAMT — на Amount. Сохраняем изменения.

3. Вычисляемое поле в измерении Customer

Переходим в Data Source View (представление источника данных) — элемент, где указано, какие таблицы берутся из источника. Берем таблицу Customer, вызываем правой кнопкой мыши New Name Calculation (новое вычисляемое поле).

Называем поле Full Name. Формула:

IF IsNull(Middle Name) THEN

Last Name + ', ' + First Name

ELSE

Last Name + ', ' + Middle Name + ' ' + First Name

END

Логика такая: если среднее имя отсутствует (Null), склеиваем только фамилию и имя. Если среднее имя есть, склеиваем фамилию, среднее имя и имя. Важно: если без проверки склеить все три поля, при Null в среднем имени вся строка может получить значение Null.

4. Проверка результата

Нажимаем OK. Поле Full Name появляется в списке полей. Проверяем через правой кнопкой по CustomerExplore Data (просмотр данных). В последнем поле видно значение: фамилия, запятая, пробел и далее имя — с средним именем или без него.

Теперь можно переходить к правке измерений, начиная с измерения Customer.

Краткие итоги

Изменение аналитической модели начинается с настройки того, как показатели видны пользователю. Формат строки отделяет представление от данных: одна и та же мера может храниться в исходном типе, но выводиться с разделителем разрядов, валютой или в процентах. Это важно для отчетов, где читаемость влияет на скорость интерпретации. Разделение типа данных и формата позволяет гибко наследовать тип из базы, а отображение задавать на уровне модели. Для денежных мер выбирается валюта, для доли — процент. Приведение названий к полным и единообразным формам снижает риск ошибок при построении отчетов и делает модель понятнее для пользователя.

Следующий уровень работы — расширение измерений через вычисляемые поля. Создание нового поля в представлении источника данных не меняет физическую таблицу, но добавляет атрибут, который затем можно использовать в модели. Формула полного имени показывает практический шаблон: сначала проверяется отсутствие среднего имени, затем выбирается способ склейки. Условная логика защищает от Null, который при простой конкатенации может обнулить всю строку. Такой подход применим к любым необязательным атрибутам: адресам, контактам, описаниям. Проверка результата через просмотр данных подтверждает, что вычисление работает до включения поля в измерение.

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

Переходим к модификации уже созданного куба. В нем есть меры и измерения, а внутри измерений — атрибуты.

Сначала настраиваем меры. У Order Quantity в свойстве Format String задаем #,##, чтобы разряды разделялись запятой. Чтобы выбрать несколько мер, включаем Show Measures Grid. Для денежных мер выбираем Data TypeCurrency, а Format StringCurrency. Можно использовать Inherited, чтобы тип данных наследовался из базы, а формат отображения задавался отдельно. Для Discount Percent выбираем формат Percent, чтобы выводилось 30%, а не 0,3.

Названия приводим к полному виду: PCT заменяем на Percent, MAMT — на Amount. Сохраняем изменения.

Затем переходим в Data Source View — место, где указаны таблицы источника. Берем таблицу Customer, вызываем правой кнопкой New Name Calculation и создаем вычисляемое поле Full Name.

Формула:

IF IsNull(Middle Name) THEN

Last Name + ', ' + First Name

ELSE

Last Name + ', ' + Middle Name + ' ' + First Name

END

Если среднее имя отсутствует, склеиваем фамилию и имя. Если среднее имя есть, склеиваем фамилию, среднее имя и имя. Проверка IsNull нужна потому, что при Null в среднем имени простая склейка всех трех полей может дать Null во всей строке.

После нажатия OK поле Full Name появляется в списке полей. Проверяем его через правой кнопкой по CustomerExplore Data. В результате видно: фамилия, запятая, пробел и далее имя — со средним именем или без него. Теперь можно переходить к правке измерений, начиная с Customer.

Выводы

1. Модификация куба включает настройку мер, их названий и вычисляемых полей.
2. Format String управляет только визуальным отображением значения.
3. Data Type определяет тип данных, который может наследоваться из базы.
4. Для денежных мер удобно задавать тип и формат Currency.
5. Для Discount Percent нужен формат Percent, чтобы выводить проценты.
6. Show Measures Grid позволяет выделять несколько мер одновременно.
7. Названия мер лучше приводить к полным и единообразным формам.
8. Вычисляемое поле создается в Data Source View через New Name Calculation.
9. Full Name формируется из фамилии, имени и, при наличии, среднего имени.
10. Проверка IsNull защищает формулу от обнуления всей строки.
11. При отсутствии среднего имени склеиваются только фамилия и имя.
12. Результат вычисляемого поля проверяется через Explore Data.

Вопросы для самопроверки

1. Зачем в кубе разделяют Data Type и Format String?
2. Как задать разделитель разрядов для Order Quantity?
3. Что позволяет сделать режим Show Measures Grid?
4. Какой тип и формат выбирают для денежных мер?
5. Как отобразить Discount Percent как процент, а не как долю?
6. Зачем заменять сокращения PCT и MAMT на полные названия?
7. Где создается вычисляемое поле Full Name?
8. Что означает команда New Name Calculation?
9. Как формула Full Name обрабатывает отсутствие среднего имени?
10. Почему нельзя просто склеить фамилию, среднее имя и имя без проверки?
11. Что делает функция IsNull в данной формуле?
12. Как проверить значения созданного поля Full Name?
Вернуться к учебному плану