Определение именованных вычислений в представлении источника данных
Именованное вычисление является выражением SQL, представленным в виде вычисляемого столбца. Данное выражение выглядит и работает как столбец таблицы. Именованное вычисление позволяет расширить реляционную схему таблиц или представлений, существующих в представлении источника данных, не изменяя таблицы или представления в базовом источнике данных. Например, общее вычисляемое значение, полученное из столбцов таблицы фактов, может быть представлено в виде единственного именованного вычисления в представлении источника данных, вместо изменения основной таблицы баз данных, или создания представления в основной базе данных. Именованные вычисления также можно использовать вместо вычисляемых элементов в каждом кубе, основанном на представлении источника данных. Именованные вычисления рассчитываются в процессе обработки, тогда как вычисляемые элементы рассчитываются во время запроса.
Именованные вычисления также часто используются для создания понятного имени для элемента измерения.
При создании именованного вычисления указывается имя, выражение SQL и (необязательно) описание вычисления. Выражение SQL может ссылаться на другие таблицы в представлении источника данных. После определения именованного вычисления выражение в именованном вычислении отправляется поставщику источника данных и проверяется в виде указанной ниже инструкции SQL, в которой <Expression> содержит выражение, определяющее именованное вычисление.
SELECT
<Table Name in Data Source>.*,
<Expression> AS <Column Name>
FROM
<Table Name in Data Source> AS <Table Name in Data Source View>
Тип данных столбца определяется типом данных скалярного значения, возвращенного выражением. Если поставщик не обнаружит каких-либо ошибок в выражении, то столбец будет добавлен к таблице.
Столбцы, указанные в выражении, не должны иметь квалификатора вовсе или должны иметь только такой квалификатор, который соответствует имени таблицы. Например, для ссылки на столбец SaleAmount в таблице можно использовать SaleAmount или Sales.SaleAmount, но dbo.Sales.SaleAmount возвращает ошибку.
Связи атрибутов
В службах SSAS атрибуты играют роль строительных блоков, из которых создается измерение. Измерение содержит набор атрибутов, организованных на основе связей между ними.
Для каждой таблицы, содержащейся в измерении, существует связь атрибутов, задающая связь ключевого атрибута таблицы с другими атрибутами из той же таблицы. Эта связь устанавливается при создании измерения.
Связь атрибутов дает следующие преимущества:
- снижает объем памяти, необходимый для обработки измерения. Это ускоряет обработку измерений, секций и запросов;
- повышает производительность запросов, поскольку ускоряется доступ к хранилищу и лучше оптимизируются планы выполнения;
- приводит к выбору более эффективных алгоритмов создания статистических схем (при условии, что пользовательские иерархии были определены по путям связей).
В службах SSAS атрибуты измерения всегда прямо или косвенно связаны с ключевым атрибутом. Когда измерение определяется по схеме «звезда», где все атрибуты измерения наследуются из одной реляционной таблицы, то связи между ключевыми и не ключевыми атрибутами определяются автоматически. Когда измерение определяется по схеме «снежинка», где атрибуты измерения наследуются от разных реляционных таблиц, связи атрибутов автоматически определяются следующим образом:
- между ключевым атрибутом и каждым не ключевым атрибутом, привязанным к столбцу главной таблицы измерения;
- между ключевым атрибутом и атрибутами, привязанными к внешнему ключу вспомогательной таблицы, которая связывает таблицы базового измерения;
- между атрибутом, привязанным к внешнему ключу вспомогательной таблицы, и каждым не ключевым атрибутом, привязанным к столбцам вспомогательной таблицы;
Однако по ряду причин может понадобиться изменить связи атрибутов, определенные по умолчанию, например чтобы определить естественную иерархию, пользовательский порядок сортировки или степень гранулярности измерения на основе неключевого атрибута.
Иерархия является естественной, когда каждый атрибут пользовательской иерархии имеет связь типа «один ко многим» с атрибутом, находящимся непосредственно под ним. Допустим, измерение «Customer» основано на реляционной таблице, содержащей восемь столбцов:
- CustomerKey;
- CustomerName;
- Age;
- Gender;
- Email;
- City;
- Country;
- Region;
Соответствующее измерение служб SSAS содержит семь атрибутов:
- Customer (основанное на CustomerKey и CustomerName);
- Age, Gender, Email, City, Region, Country.
Представляющие естественные иерархии связи создают, связывая атрибуты текущего и нижестоящего уровня. В службах SSAS это свойство определяет естественную иерархию и возможное статистическое вычисление. В измерении «Customer» естественная иерархия применяется для атрибутов «Country», «Region», «City» и» Customer». Естественная иерархия атрибутов {Country, Region, City, Customer} описывается добавлением следующих связей атрибутов:
- атрибут «Country» как связь атрибутов к атрибуту «Region»;
- атрибут «Region» как связь атрибутов к атрибуту «City»;
- атрибут «City» как связь атрибутов к атрибуту «Customer».
Для перемещения по данным куба можно также создать пользовательскую иерархию, не представленную естественной иерархией данных (такая иерархия называется нерегламентированной или иерархией отчетов). Например, пользовательская иерархия может быть создана на основе {Age, Gender}. Пользователи не смогут увидеть разницу в поведении, отличить эти иерархии, хотя естественная иерархия предоставляет преимущество благодаря скрытым от пользователя статистическим выражениям и структурам индексирования, которые отвечают за естественные связи в исходных данных.
Свойство «SourceAttribute» уровня определяет, какой из атрибутов описывает уровень. Свойство «KeyColumns» атрибута определяет столбец в представлении источника данных, который является источником элементов. Свойство «NameColumn» атрибута может указывать на другой столбец имен для элементов.
Для определения уровня в пользовательской иерархии в среде BI Dev Studio применяется конструктор измерений, позволяющий выбрать атрибут измерения, столбец в таблице измерения или столбец из связанной таблицы, которая содержится в представлении источника данных куба.
При создании атрибута необходимо проверить, чтобы атрибут, на который ссылается связь, имел не более одного значения для каждого элемента атрибута, к которому он принадлежит. Например, если определить связь между атрибутами «City» и «State», каждый город будет принадлежать одному штату.