Источники данных и привязки (многомерные службы SSAS)

Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Кубы, измерения и другие объекты SQL Server Analysis Services можно привязать к источнику данных. Источником данных может быть один из следующих объектов.

  • Реляционный источник данных.

  • Конвейер SQL Server Analysis Services, который выводит набор строк (или наборы строк с главами).

Способы выражения источника данных зависит от его типа. Например, реляционный источник данных отличается от других строкой соединения. Дополнительные сведения о доступных источниках данных см. в разделе Источники данных в многомерных моделях.

Независимо от используемого источника данных, представление источника данных (DSV) содержит его метаданные. Таким образом, привязки куба или других объектов SQL Server Analysis Services выражаются как привязки к dsV. Эти привязки могут включать привязки к логическим объектам-объектам, таким как представления, вычисляемые столбцы и связи, которые физически не существуют в источнике данных. SQL Server Analysis Services добавляет вычисляемый столбец, который инкапсулирует выражение в dsV, а затем привязывает соответствующую меру OLAP к этому столбцу в dsv. Дополнительные сведения о представлениях источников данных см. в разделе Представления источников данных в многомерных моделях.

Каждый объект SQL Server Analysis Services привязывается к источнику данных по-своему. Кроме того, привязки данных для этих объектов и определение источника данных могут быть встроены в определение связанного с данными объекта (например измерения) или задаваться в виде отдельного набора определений.

Типы данных служб Analysis Services

Типы данных, используемые в привязках, должны соответствовать типам данных, поддерживаемым SQL Server Analysis Services. В SQL Server Analysis Services определены следующие типы данных:

Тип данных служб Analysis Services Описание
BigInt 64-разрядное целое число со знаком. Этот тип данных сопоставляется с типом данных Int64 в Microsoft платформа .NET Framework и типом данных DBTYPE_I8 в OLE DB.
Bool Значение типа Boolean. Этот тип данных сопоставляется с логическим типом данных в платформа .NET Framework и типом данных DBTYPE_BOOL в OLE DB.
Валюта Значение валюты от -263 (или -922 337 203 685 477,5808) до 263-1 (или 922 337 203 685 477,5807) с точностью до одной тысячной единицы валюты. Этот тип данных сопоставляется с типом данных Decimal в платформа .NET Framework и типом данных DBTYPE_CY в OLE DB.
Дата Данные о дате, сохраненные в виде числа с плавающей запятой двойной точности. Целая часть числа равна числу дней, прошедшему с 30 декабря 1899 г., а десятичная часть равна части дня. Этот тип данных сопоставляется с типом данных DateTime в платформа .NET Framework и типом данных DBTYPE_DATE в OLE DB.
Double Число с плавающей запятой двойной точности в диапазоне от -1,79E +308 до 1,79E +308. Этот тип данных сопоставляется с типом данных Double в платформа .NET Framework и типом данных DBTYPE_R8 в OLE DB.
Целое число 32-разрядное знаковое целое число. Этот тип данных сопоставляется с типом данных Int32 в платформа .NET Framework и типом данных DBTYPE_I4 в OLE DB.
Один Число с плавающей запятой одинарной точности в диапазоне от -3,40E +38 до 3,40E +38. Этот тип данных сопоставляется с типом данных Single в платформа .NET Framework и типом данных DBTYPE_R4 в OLE DB.
SmallInt 16-разрядное знаковое целое число. Этот тип данных сопоставляется с типом данных Int16 в платформа .NET Framework и типом данных DBTYPE_I2 в OLE DB.
TinyInt 8-битовое целое число со знаком. Этот тип данных сопоставляется с типом данных SByte в платформа .NET Framework и типом данных DBTYPE_I1 в OLE DB.

Примечание. Если источник данных содержит поля, имеющие тип данных tinyint, и свойство AutoIncrement имеет значение True, то в представлении источника данных они будут преобразованы в целые числа.
UnsignedBigInt 64-разрядное целое число без знака. Этот тип данных сопоставляется с типом данных UInt64 в платформа .NET Framework и типом данных DBTYPE_UI8 в OLE DB.
UnsignedInt 32-разрядное целое число без знака. Этот тип данных сопоставляется с типом данных UInt32 в платформа .NET Framework и типом данных DBTYPE_UI4 в OLE DB.
UnsignedSmallInt 16-разрядное целое число без знака. Этот тип данных сопоставляется с типом данных UInt16 в платформа .NET Framework и типом данных DBTYPE_UI2 в OLE DB.
WChar Поток символов в кодировке Юникод, заканчивающийся символом NULL. Этот тип данных сопоставляется с типом данных String в платформа .NET Framework и типом данных DBTYPE_WSTR в OLE DB.

Все данные, полученные из источника данных, преобразуются в тип SSAS, указанный в привязке (обычно во время обработки). Если преобразование выполнить невозможно (например, преобразовать тип String в тип Int), выдается сообщение об ошибке. SQL Server Data Tools обычно задает в привязке тип данных, который лучше всего соответствует типу источника в источнике данных. Например, типы SQL Date, DateTime, SmallDateTime, DateTime2, DateTimeOffset сопоставляются с датой SSAS, а тип SQL Time — со строкой.

Привязки для измерений

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

Привязки для групп мер, мер и секций

Каждая группа мер имеет следующие привязки по умолчанию.

  • Группа мер привязана к таблице в представлении источника данных (например MeasureGroup.Source).

  • Каждая мера привязана к столбцу в этой таблице (например Measure.ValueColumn.Source).

  • Каждое измерение группы мер имеет набор атрибутов гранулярности , определяющих гранулярность группы мер. Каждый такой атрибут должен быть привязан к столбцу или столбцами в таблице фактов, содержащей ключ атрибута. (Дополнительные сведения об атрибутах гранулярности см. далее в этом разделе, в подразделе «Атрибуты гранулярности группы мер»).

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

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

Атрибуты гранулярности группы мер

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

Sales(RequestedDate, OrderedProductID, ReplacementProductID, Qty)

Product(ProductID, ProductName,Category)

``

Relation: Sales.OrderedProductID -> Product.ProductID

Relation: Sales.ReplacementProductID -> Product.ProductID

``

Если анализируется заказанный продукт для роли Ordered Product измерения Sales, атрибут гранулярности Product будет связан со столбцом Sales.OrderedProductID.

Однако в некоторых случаях столбцов GranularityAttributes в таблице фактов может не быть. Например, столбец GranularityAttributes может отсутствовать в следующих случаях:

  • Гранулярность OLAP менее детализирована, чем гранулярность источника.

  • Между таблицей фактов и таблицей измерения помещается промежуточная таблица.

  • Ключ измерения отличается от первичного ключа в таблице измерения.

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

Например, в приведенных выше таблицах из примера, если гранулярность создается по категориям, можно ввести представление Sales, как показано ниже.

SalesWithCategory(RequestedDate, OrderedProductID, ReplacementProductID, Qty, OrderedProductCategory)

SELECT Sales.*, Product.Category AS OrderedProductCategory

FROM Sales INNER JOIN Product

ON Sales.OrderedProductID = Product.ProductID

``

В этом случае категория атрибута гранулярности привязана к столбцу SalesWithCategory.OrderedProductCategory.

Миграция из объектов DSO

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

Точно так же невозможно повторно привязать атрибуты измерения внутри секции, хотя объекты DSO 8.0 позволяют выполнять такую повторную привязку. В этих случаях стратегия миграции заключается в определении необходимых именованных запросов в представлении источника данных, чтобы в нем имелись те же таблицы и столбцы для секции, которые используются для измерения. В таких случаях может потребоваться простая миграция, в которой предложение From/Join/Filter будет сопоставлено одному именованному запросу, а не структурированному набору связанных таблиц. Поскольку объекту DSO 8.0 позволяют повторно связывать измерения секций, даже если секция использует тот же источник данных, для миграции может также понадобиться несколько представлений источника данных для одного источника данных.

В объектах DSO 8.0 соответствующие привязки могут выражаться двумя разными путями, в зависимости от применения оптимизированных схем: путем привязки к первичному ключу в таблице измерения или к внешнему ключу в таблице фактов. В языке ASSL эти два способа не различаются.

Тот же подход к привязкам применяется даже к секции, источник данных которой не содержит таблицы измерений, потому что привязка выполняется к внешнему ключевому столбцу в таблице фактов, а не к первичному ключевому столбцу в таблице измерения.

Привязки для моделей интеллектуального анализа данных

Модель интеллектуального анализа данных является или реляционной, или относится к аналитической обработке в реальном времени (OLAP). Привязки данных для реляционной модели интеллектуального анализа данных значительно отличаются от моделей интеллектуального анализа OLAP.

Привязки для реляционной модели интеллектуального анализа данных

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

  • Каждый столбец невложенной таблицы привязан к столбцу в таблице вариантов или в таблице, связанной с таблицей вариантов (в соответствии со связью «многие к одному» или «один к одному»). Представление источника данных определяет связи между таблицами.

  • Каждый столбец вложенной таблицы привязан к исходной таблице. Затем столбцы, принадлежащие столбцу вложенной таблицы, привязываются к столбцам этой исходной таблицы или таблицы, связанной с исходной. (К тому же привязка соответствует связи «многие к одному» или «один к одному»). Привязки модели интеллектуального анализа данных не предоставляют путь соединения к вложенной таблице. Вместо этого эти сведения предоставляют связи, определенные в представлении источника данных.

Привязки для модели интеллектуального анализа OLAP

Модели интеллектуального анализа OLAP не имеют аналога представлению источника данных. Поэтому привязки данных должны устранять неоднозначность между столбцами и источниками данных. Например, модель интеллектуального анализа данных может быть основана на кубе Sales, а столбцы — на кубах Qty, Amount и Product Name. С другой стороны, модель интеллектуального анализа данных может быть основана на кубе Product, а столбцы — на кубах Product Name, Product Color и вложенной таблице Sales куба Qty.

В модели интеллектуального анализа OLAP привязки данных удовлетворяют следующим правилам.

  • Каждый столбец невложенной таблицы привязан к мере в кубе, к атрибуту в измерении этого куба (с указанием CubeDimension для разрешения неоднозначности в случае ролей измерения) или к атрибуту в измерении.

  • Каждый столбец вложенной таблицы привязан к определенному элементу CubeDimension. То есть он определяет способ перехода от измерения к связанному кубу или (в частном случае вложенных таблиц) от куба к одному из его измерений.

внешние привязки

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

Язык ASSL позволяет задавать внешние привязки в команде Process , если это не пакет, или в команде Batch . Если внешние привязки указываются в команде Batch , все привязки, заданные в команде Batch , создают новый контекст привязок, в котором выполняются все команды Process пакета. Новый контекст привязок включает объекты, которые обрабатываются неявно вследствие команды Process .

Если внешние привязки заданы в команде, они переопределяют встроенные привязки, содержащиеся в неизменяемых библиотеках DDL для указанных объектов. Эти обрабатываемые объекты могут включать объект, поименованный непосредственно в команде Process , или другие объекты, обработка которых начинается автоматически, как часть общей работы.

Внешние привязки указываются с помощью включения в команду обработки необязательного объекта коллекции Bindings . Необязательная коллекция Bindings содержит следующие элементы:

Свойство Кратность Тип Описание
Привязка От 0 до n Привязка Предоставляет коллекцию новых привязок.
DataSource 0—1 DataSource Заменяет DataSource с сервера, который будет использоваться.
DataSourceView 0—1 DataSourceView Заменяет DataSourceView с

сервера, который должен был бы использоваться.

Все элементы, связанные с внешними привязками, являются необязательными. Для всех неуказанных элементов язык ASSL использует спецификацию, содержащуюся в определении DDL сохраняемого объекта. Указание свойств DataSource или DataSourceView в команде Process необязательно. Если свойства DataSource или DataSourceView заданы, они не запускаются и не сохраняются после того, как выполнение команды Process будет завершено.

Определение типа внешней привязки

В пределах внешней коллекции Bindings язык ASSL позволяет создавать коллекцию привязок для нескольких объектов Bindings. Каждый объект Bindings имеет расширенную ссылку на объект, которая напоминает простую объектную ссылку, но может ссылаться также на более мелкие объекты (например, атрибуты измерения и атрибуты группы мер). Этот объект принимает плоскую форму, типичную для элемента Object в командах Process, за исключением того, что < теги Object></Object> отсутствуют.

Каждый объект, для которого указана привязка, идентифицируется XML-элементом идентификатора объекта>формы < (например, DimensionID). После того как вы определили объект как можно точнее с идентификатором объекта>формы<, вы определяете элемент, для которого указана привязка, который обычно является Источником. В общем случае элемент Source является свойством объекта DataItem, представляющего собой вариант привязки к столбцу в атрибуте. В этом случае тег DataItem не указывается, вместо этого нужно задать свойство Source , как при непосредственной привязке столбца.

KeyColumns идентифицируются своим порядковым положением в коллекции KeyColumns . Здесь невозможно задать, например только первый и третий ключевой столбец атрибута, поскольку не существует способа указать, что второй ключевой столбец нужно пропустить. Во внешней привязке для атрибута измерения должны присутствовать все ключевые столбцы.

Значения в столбцеTranslationsне имеют идентификаторов, но семантически идентифицируются по языку. В связи с этим элементы Translations в коллекции Bindings должны включать идентификатор языка.

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