数据源和绑定(Analysis Services - 多维数据)

可将多维数据集、维度和其他 Analysis Services 对象绑定到数据源。数据源可为以下对象之一:

  • 关系数据源。

  • 可输出行集(或分章节的行集)的 Analysis Services 管道。

数据源的表示方式因数据源类型而异。例如,关系数据源是通过连接字符串区分的。有关数据源的详细信息,请参阅 数据源(Analysis Services - 多维数据)

无论使用何种数据源,数据源视图 (DSV) 均包含有数据源的元数据。因此,多维数据集或其他 Analysis Services 对象的绑定都表示为到 DSV 的绑定。这些绑定可包括到逻辑对象的绑定,如数据源中实际并不存在的视图、计算列和关系等对象。使用 DSV 绑定逻辑对象是 SQL Server 2008 中的新功能。例如,在 SQL Server 2000 中,OLAP 度量值可将表达式指定为其数据源。但在 SQL Server 2005 和 SQL Server 2008 中,Analysis Services 要先向 DSV 添加封装表达式的计算列,然后再在 DSV 中将相应的 OLAP 度量值绑定到该计算列。有关 DSV 的详细信息,请参阅数据源视图(Analysis Services - 多维数据)

每个 Analysis Services 对象都有其自己绑定到数据源的方式。此外,这些对象的数据绑定和数据源的定义既可以以内联方式随数据绑定对象(如维度)的定义一起提供,也可以作为单独的定义集以外部方式提供。

Analysis Services 数据类型

在绑定中使用的数据类型必须与 Analysis Services 所支持的数据类型匹配。在 Analysis Services 中定义了下列数据类型:

Analysis Services 数据类型

描述

BigInt

64 位有符号整数。此数据类型映射到 Microsoft .NET Framework 中的 Int64 数据类型和 OLE DB 中的 DBTYPE_I8 数据类型。

Bool

布尔值。此数据类型映射到 .NET Framework 中的 Boolean 数据类型和 OLE DB 中的 DBTYPE_BOOL 数据类型。

Currency

货币值,范围在 -263(或 -922,337,203,685,477.5808)到 263-1(或 +922,337,203,685,477.5807)之间,精确到货币单位的万分之一。此数据类型映射到 .NET Framework 中的 Decimal 数据类型和 OLE DB 中的 DBTYPE_CY 数据类型。

Date

日期数据,以双精度浮点数存储。整数部分是自 1899 年 12 月 30 日以来的天数,而小数部分是不足一天的部分。此数据类型映射到 .NET Framework 中的 DateTime 数据类型和 OLE DB 中的 DBTYPE_DATE 数据类型。

Double

双精度浮点数,范围在 -1.79E +308 到 1.79E +308 之间。此数据类型映射到 .NET Framework 中的 Double 数据类型或 OLE DB 中的 DBTYPE_R8 数据类型。

Integer

32 位有符号整数。此数据类型映射到 .NET Framework 中的 Int32 数据类型和 OLE DB 中的 DBTYPE_I4 数据类型。

Single

单精度浮点数,范围在 -3.40E +38 到 3.40E +38 之间。此数据类型映射到 .NET Framework 中的 Single 数据类型和 OLE DB 中的 DBTYPE_R4 数据类型。

SmallInt

16 位有符号整数。此数据类型映射到 .NET Framework 中的 Int16 数据类型和 OLE DB 中的 DBTYPE_I2 数据类型。

TinyInt

8 位有符号整数。此数据类型映射到 .NET Framework 中的 SByte 数据类型和 OLE DB 中 DBTYPE_I1 数据类型。

UnsignedBigInt

64 位无符号整数。此数据类型映射到 .NET Framework 中的 UInt64 数据类型和 OLE DB 中的 DBTYPE_UI8 数据类型。

UnsignedInt

32 位无符号整数。此数据类型映射到 .NET Framework 中的 UInt32 数据类型和 OLE DB 中的 DBTYPE_UI4 数据类型。

UnsignedSmallInt

16 位无符号整数。此数据类型映射到 .NET Framework 中的 UInt16 数据类型和 OLE DB 中的 DBTYPE_UI2 数据类型。

WChar

Unicode 字符的 Null 结束流。此数据类型映射到 .NET Framework 中的 String 数据类型和 OLE DB 中的 DBTYPE_WSTR 数据类型。

从数据源接收的所有数据都转换为绑定中指定的 SSAS 类型(通常在处理过程中)。如果无法执行转换(例如,从 String 转换到 Int),则会产生错误。Business Intelligence Development Studio 通常将绑定中的数据类型设置为与数据源中的源类型最匹配的数据类型。例如,SQL types Date、DateTime、SmallDateTime、DateTime2、DateTimeOffset 映射到 SSAS Date,SQL type Time 映射到 String。

维度的绑定

维度的每个属性都绑定到 DSV 中的某一列。虽然一个维度的所有属性必须来自同一个数据源。但这些属性却可绑定到不同表中的列。各表之间的关系在 DSV 中定义。如果同一表中同时存在多个关系集,则可能必须在 DSV 中引入一个命名查询,将其作为“别名”表使用。在 DSV 中,可使用命名计算和命名查询来定义表达式和筛选器。

度量值组、度量值和分区的绑定

所有度量值组都具有以下默认绑定:

  • 度量值组绑定到 DSV 中的表(例如,MeasureGroup.Source)。

  • 所有度量值都绑定到该表中的列(例如,Measure.ValueColumn.Source)。

  • 每个度量值组维度都具有一组定义度量值组粒度的“粒度属性”。所有这些属性都必须绑定到包含属性键的事实数据表中的列。(有关粒度属性的详细信息,请参阅本主题后面的“MeasureGroup 粒度属性”。)

对于每个分区,都可以有选择地重写这些默认绑定。每个分区都可以指定不同的数据源、表、查询名称或筛选表达式。最常见的分区策略是使用相同的数据源,逐个分区重写表。其他的方法包括对每个分区应用不同的筛选器或更改数据源。

必须在 DSV 中定义默认数据源,以便提供包括关系的详细信息在内的架构信息。在分区级别上指定的所有其他表或查询均无需在 DSV 中列出,但它们的架构必须与为该度量值组定义的默认表的架构相同,或者至少必须包含度量值或粒度属性所使用的所有列。度量值和粒度属性无法在分区级别上重写,它们被假定为与度量值组定义的列相同。因此,如果分区实际使用的数据源具有不同的架构,则为该分区定义的 TableDefinition 查询就必须使用与度量值组所用架构相同的架构。

MeasureGroup 粒度属性

如果度量值组的粒度与数据库中的已知粒度匹配,并且事实数据表与维度表之间具有直接关系,则只需将粒度属性绑定到相应的外键列或事实数据表中的列。例如,请看下面的事实数据表和维度表:

Sales(RequestedDate, OrderedProductID, ReplacementProductID, Qty)

Product(ProductID, ProductName,Category)

 

Relation: Sales.OrderedProductID -> Product.ProductID

Relation: Sales.ReplacementProductID -> Product.ProductID

 

如果通过订购的产品进行分析,则对于销售维度角色的订购产品,应将产品粒度属性绑定到 Sales.OrderedProductID。

但有时,GranularityAttributes 可能不作为事实数据表中的列而存在。例如,在下列情况中,GranularityAttributes 可能不作为列而存在:

  • OLAP 粒度比数据源中的粒度更粗。

  • 事实数据表与维度表之间有中间表。

  • 维度键与维度表中的主键不相同。

在所有这些情况中,都必须定义 DSV,以使事实数据表中存在 GranularityAttributes。例如,可以引入命名查询或计算列。

例如,在上面的示例表中,如果粒度按类别列出,则可引入销售视图:

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

SELECT Sales.*, Product.Category AS OrderedProductCategory

FROM Sales INNER JOIN Product

ON Sales.OrderedProductID = Product.ProductID

 

在这种情况下,GranularityAttribute 类别将绑定到 SalesWithCategory.OrderedProductCategory。

从决策支持对象迁移

决策支持对象 (DSO) 8.0 允许将 PartitionMeasures 重新绑定。因此,这些情况下的迁移策略就是构造相应的查询。

同样,虽然 DSO 8.0 也支持重新绑定维度属性,但在分区内是无法进行此种重新绑定的。这些情况下的迁移策略就是在 DSV 中定义必要的命名查询,以使 DSV 中存在的分区的表和列与维度所使用的表和列相同。这些情况可能需要使用简单的迁移;在简单迁移中,From/Join/Filter 子句将映射到单个命名查询,而不是一组结构化的相关表。由于即使分区使用同一数据源,DSO 8.0 也支持重新绑定 PartitionDimensions,因此迁移还可能需要同一数据源的多个 DSV。

在 DSO 8.0 中,有两种表达相应的绑定的方法:绑定到维度表中的主键或绑定到事实数据表中的外键,具体取决于是否使用优化架构。在 ASSL 中,这两种方法是没有区别的。

此绑定方法甚至还可用于其所使用的数据源不包含维度表的分区,因为只会绑定到事实数据表中的外键列,而不会绑定到维度表的主键列。

挖掘模型的绑定

挖掘模型分为关系挖掘模型和 OLAP 挖掘模型。关系挖掘模型的数据绑定与 OLAP 挖掘模型的绑定区别很大。

关系挖掘模型的绑定

关系挖掘模型依靠 DSV 中定义的关系来解决列与数据源的绑定配对问题。在关系挖掘模型中,数据绑定遵循以下规则:

  • 每个非嵌套表列绑定到事例表中的列或与事例表有关的表中的列(遵循多对一或一对一关系)。DSV 定义各表之间的关系。

  • 所有嵌套表列绑定到源表。然后,将嵌套表列所拥有的列绑定到该源表中的列或与该源表相关的表中的列。(同样,此绑定也遵循多对一或一对一关系。)挖掘模型绑定不提供指向嵌套表的联接路径。这些信息是由 DSV 中定义的关系提供的。

OLAP 挖掘模型的绑定

OLAP 挖掘模型没有功能类似于 DSV 的视图。因此,数据绑定必须明确确定列与数据源之间的绑定对应关系。例如,挖掘模型可基于销售多维数据集,列可基于数量、金额和产品名称。此外,挖掘模型还可基于产品,列还可基于产品名称、产品颜色和含有销售量的嵌套表。

在 OLAP 挖掘模型中,数据绑定遵循以下规则:

  • 每个非嵌套表列绑定到多维数据集的度量值,绑定到该多维数据集维度的属性(指定 CubeDimension 以消除维度角色的多义性),或者绑定到维度的属性。

  • 每个嵌套表列绑定到 CubeDimension。也就是说,它定义如何从维度导航到相关多维数据集,或如何从多维数据集导航到该多维数据集的一个维度(在出现嵌套表的少数情况下)。

外部绑定

外部绑定使您可以临时更改命令持续时间的现有数据绑定。外部绑定指命令中包含的但不会持久化的绑定。外部绑定只可在执行特定命令时才能应用。相比之下,内联绑定包含在 ASSL 对象定义中,会随对象定义在服务器元数据内持久保留。

ASSL 允许在 Process 命令(非批处理中的命令)或 Batch 命令中指定外部绑定。如果在 Batch 命令中指定外部绑定,则 Batch 命令中指定的所有绑定将创建新的绑定上下文,批处理中的所有 Process 命令都将在该上下文中运行。由于有 Process 命令,所以此新绑定上下文会包含间接处理的对象。

如果在命令中指定外部绑定,则这些绑定将覆盖指定对象的持久化 DDL 中包含的内联绑定。这些已处理对象既可能包含 Process 命令中直接命名的对象,也可能包含随该处理操作自动启动的其他对象。

外部绑定是通过将可选 Bindings 集合对象与处理命令包含在一起而指定的。可选的 Bindings 集合包含以下元素。

属性

基数

类型

说明

Binding

0-n

Binding

提供新绑定的集合。

DataSource

0-1

DataSource

替换服务器中本应使用的 DataSource。

DataSourceView

0-1

DataSourceView

替换服务器中本应使用 DataSourceView

与外部绑定相关的所有元素都是可选的。对于所有未指定的元素,ASSL 将应用持久化对象的 DDL 中包含的规范。Process 命令中的 DataSource 或 DataSourceView 的规范是可选的。如果指定 DataSource 或 DataSourceView,则将不对它们进行实例化,并且在 Process 命令完成后,不会保留它们。

外部绑定类型的定义

在外部 Bindings 集合内,ASSL 允许将绑定集合用于多个对象,每个对象对应一个 Binding。每个 Binding 都有一个扩展的对象引用,该引用与对象引用类似,但它还可以引用次级对象(例如,维度属性和度量值组属性)。此对象在 Process 命令中采用 Object 元素的典型固定格式,但没有<对象></对象> 标记。

指定了绑定的所有对象都用格式为<对象>ID(例如,DimensionID)的 XML 元素标识的。使用格式 <object>ID 尽可能明确地标识完对象后,就可以标识为其指定了绑定的元素了,该元素通常为 Source。有一个常见情况需要注意,即 Source 为 DataItem 的属性,这属于属性中的列绑定。在这种情况下,您不需要指定 DataItem 标记,而只需要简单地指定 Source 属性,就如同该属性直接位于要绑定的列上一样。

KeyColumns 由它们在 KeyColumns 集合内的顺序标识。无法只指定属性的第一个键列和第三个键列,因为没有办法指示跳过第二个键列。所有键列都必须存在于维度属性的外部绑定中。

虽然 Translations 没有 ID,但仍可以通过其语言对其进行语义标识。因此,Binding 内的 Translations 需要包含其语言标识符。

Binding 内允许使用的另一个元素为 ParentColumnID,它不直接存在于 DDL 中,可用于嵌套表的数据挖掘。在这种情况下,需要标识要为其提供绑定的嵌套表中的父列。

示例

ASSL 中的以下示例显示如何在现有维度上使用 ProcessFull 和 ProcessAdd 命令并传递命令中的数据。

示例数据库是包含 Loans 维度的一个 Library 数据库。

创建该数据库和维度的脚本位于本节的末尾。

注意注意

这些示例旨在用于 VertiPaq 模式下的 Analysis Services。

ProcessFull 命令

以下 ASSL 命令是针对 Library 数据库中 Loans 维度的 ProcessFull 操作。若要运行该命令,必须将该脚本复制并粘贴到 SQL Server Management Studio 中的 XMLA 窗口并执行它。

请注意脚本中的以下元素:

  1. <Bindings> 元素,它紧跟在 <Object> 规范之后,包含维度中所有属性的绑定。所有 <Binding> 元素将某个特定属性绑定到现有源中的某个列。该源的类型为 ColumnBinding,它绑定到某一列,而不是绑定到表。

  2. <Bindings> 元素后面紧跟绑定的 <DataSource> 声明。将该源的类型声明为 PushedDataSource。根元素将数据源链接到包含实际数据的参数。<EndOfData> 元素标识表示数据流末尾的参数。

  3. 数据流中的第一个元素(InputRowset 参数内)是所发送数据的架构定义。此架构定义数据的读取方式和列的映射。在架构定义之后可以接行。

  4. 数据流的末尾通过将参数 EndOfInputRowset 的值设置为 true 来表示。如果必须通过几条消息来发送数据,则除了最后一条消息之外,应将其他消息中的 EndOfInputRowset 参数值设置为 false。

    重要说明重要提示

    当值为 true 的 EndOfInputRowset 参数到达时,开始处理。

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">

<Command>

<Process xmlns="https://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl2="https://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="https://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100="https://schemas.microsoft.com/analysisservices/2008/engine/100" xmlns:ddl100_100="https://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Type>ProcessFull</Type>

<Object xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

</Object>

<Bindings xmlns="https://schemas.microsoft.com/analysisservices/2003/engine" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>LoanId</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>LoanId</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>Library</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>Library</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>LoanerID</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>LoanerID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>DateLoaned</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>DateLoaned</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>DaysOut</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>DaysOut</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>AssetID</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>AssetID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>AssetOrigin</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>AssetOrigin</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

</Bindings>

<DataSource xsi:type="PushedDataSource">

<root Parameter="InputRowset"/>

<EndOfData Parameter="EndOfInputRowset"/>

</DataSource>

</Process>

</Command>

<Properties />

<Parameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<Parameter>

<Name>InputRowset</Name>

<Value xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" elementFormDefault="qualified">

<xsd:element name="root">

<xsd:complexType>

<xsd:sequence minOccurs="0" maxOccurs="unbounded">

<xsd:element name="row" type="row" />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:simpleType name="uuid">

<xsd:restriction base="xsd:string">

<xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}" />

</xsd:restriction>

</xsd:simpleType>

<xsd:complexType name="xmlDocument">

<xsd:sequence>

<xsd:any />

</xsd:sequence>

</xsd:complexType>

<xsd:complexType name="row">

<xsd:sequence>

<xsd:element sql:field="LoanId" name="LoanId" type="xsd:long" minOccurs="0" />

<xsd:element sql:field="Library" name="Library" type="xsd:string" minOccurs="0" />

<xsd:element sql:field="LoanerID" name="LoanerID" type="xsd:string" minOccurs="0" />

<xsd:element sql:field="DateLoaned" name="DateLoaned" type="xsd:date" minOccurs="0" />

<xsd:element sql:field="DaysOut" name="DaysOut" type="xsd:int" minOccurs="0" />

<xsd:element sql:field="AssetID" name="AssetID" type="xsd:long" minOccurs="0" />

<xsd:element sql:field="AssetOrigin" name="AssetOrigin" type="xsd:string" minOccurs="0" />

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

<!-- Add Rows Declaration below here -->

<row>

<LoanId>10001</LoanId>

<Library><![CDATA[Library001]]></Library>

<LoanerID><![CDATA[Lib001-78021]]></LoanerID>

<DateLoaned>2008-03-12T09:36:39.1829958</DateLoaned>

<DaysOut>7</DaysOut>

<AssetID>739230021</AssetID>

<AssetOrigin><![CDATA[Library001]]></AssetOrigin>

</row>

<row>

<LoanId>10002</LoanId>

<Library><![CDATA[Library001]]></Library>

<LoanerID><![CDATA[Lib001-88021]]></LoanerID>

<DateLoaned>2008-03-12T19:36:39.1829958</DateLoaned>

<DaysOut>6</DaysOut>

<AssetID>739230022</AssetID>

<AssetOrigin><![CDATA[Library001]]></AssetOrigin>

</row>

<row>

<LoanId>10003</LoanId>

<Library><![CDATA[Library001]]></Library>

<LoanerID><![CDATA[Lib001-78031]]></LoanerID>

<DateLoaned>2008-04-12T09:36:39.1829958</DateLoaned>

<DaysOut>4</DaysOut>

<AssetID>739730023</AssetID>

<AssetOrigin><![CDATA[Library002]]></AssetOrigin>

</row>

<row>

<LoanId>10004</LoanId>

<Library><![CDATA[Library001]]></Library>

<LoanerID><![CDATA[Lib001-78021]]></LoanerID>

<DateLoaned>2008-03-12T09:36:39.1829958</DateLoaned>

<DaysOut>0</DaysOut>

<AssetID>739230021</AssetID>

<AssetOrigin><![CDATA[Library001]]></AssetOrigin>

</row>

<row>

<LoanId>10005</LoanId>

<Library><![CDATA[Library002]]></Library>

<LoanerID><![CDATA[Lib002-70021]]></LoanerID>

<DateLoaned>2008-03-12T09:36:39.1829958</DateLoaned>

<DaysOut>9</DaysOut>

<AssetID>739230721</AssetID>

<AssetOrigin><![CDATA[Library002]]></AssetOrigin>

</row>

</Value>

</Parameter>

<Parameter>

<Name>EndOfInputRowset</Name>

<Value xsi:type="xsd:boolean">true</Value>

</Parameter>

</Parameters>

</Execute>

</soap:Body>

</soap:Envelope>

ProcessAdd 命令

以下 ASSL 命令是针对 Library 数据库中 Loans 维度的 ProcessAdd 操作。若要运行该命令,必须将该脚本复制并粘贴到 SQL Server Management Studio 中的 XMLA 窗口并执行它。

与上一个示例唯一的区别是:将数据追加到维度中的现有数据后面。ProcessFull 删除现有的内容,并将其替换为与绑定关联的内容。

注意注意

ProcessAdd 强制执行唯一性和非 Null 等行约束。如果有行违反这些约束中的任何一个,则整个命令失败且不添加任何数据。

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">

<Command>

<Process xmlns="https://schemas.microsoft.com/analysisservices/2003/engine" xmlns:ddl2="https://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="https://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100="https://schemas.microsoft.com/analysisservices/2008/engine/100" xmlns:ddl100_100="https://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Type>ProcessAdd</Type>

<Object xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

</Object>

<Bindings xmlns="https://schemas.microsoft.com/analysisservices/2003/engine" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>LoanId</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>LoanId</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>Library</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>Library</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>LoanerID</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>LoanerID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>DateLoaned</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>DateLoaned</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>DaysOut</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>DaysOut</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>AssetID</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>AssetID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

<Binding>

<DatabaseID>Library</DatabaseID>

<DimensionID>Loans</DimensionID>

<AttributeID>AssetOrigin</AttributeID>

<KeyColumns>

<KeyColumn>

<Source xsi:type="ColumnBinding">

<TableID />

<ColumnID>AssetOrigin</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

</Binding>

</Bindings>

<DataSource xsi:type="PushedDataSource">

<root Parameter="InputRowset"/>

<EndOfData Parameter="EndOfInputRowset"/>

</DataSource>

</Process>

</Command>

<Properties />

<Parameters xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<Parameter>

<Name>InputRowset</Name>

<Value xmlns="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<xsd:schema targetNamespace="urn:schemas-microsoft-com:xml-analysis:rowset" xmlns:sql="urn:schemas-microsoft-com:xml-sql" elementFormDefault="qualified">

<xsd:element name="root">

<xsd:complexType>

<xsd:sequence minOccurs="0" maxOccurs="unbounded">

<xsd:element name="row" type="row" />

</xsd:sequence>

</xsd:complexType>

</xsd:element>

<xsd:simpleType name="uuid">

<xsd:restriction base="xsd:string">

<xsd:pattern value="[0-9a-zA-Z]{8}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{4}-[0-9a-zA-Z]{12}" />

</xsd:restriction>

</xsd:simpleType>

<xsd:complexType name="xmlDocument">

<xsd:sequence>

<xsd:any />

</xsd:sequence>

</xsd:complexType>

<xsd:complexType name="row">

<xsd:sequence>

<xsd:element sql:field="LoanId" name="LoanId" type="xsd:long" minOccurs="0" />

<xsd:element sql:field="Library" name="Library" type="xsd:string" minOccurs="0" />

<xsd:element sql:field="LoanerID" name="LoanerID" type="xsd:string" minOccurs="0" />

<xsd:element sql:field="DateLoaned" name="DateLoaned" type="xsd:date" minOccurs="0" />

<xsd:element sql:field="DaysOut" name="DaysOut" type="xsd:int" minOccurs="0" />

<xsd:element sql:field="AssetID" name="AssetID" type="xsd:long" minOccurs="0" />

<xsd:element sql:field="AssetOrigin" name="AssetOrigin" type="xsd:string" minOccurs="0" />

</xsd:sequence>

</xsd:complexType>

</xsd:schema>

<!-- Add Rows Declaration below here -->

<row>

<LoanId>20280</LoanId>

<Library><![CDATA[Library002]]></Library>

<LoanerID><![CDATA[Lib001-78021]]></LoanerID>

<DateLoaned>2008-09-12T12:36:39.1829958</DateLoaned>

<DaysOut>17</DaysOut>

<AssetID>939230021</AssetID>

<AssetOrigin><![CDATA[Library001]]></AssetOrigin>

</row>

<row>

<LoanId>20281</LoanId>

<Library><![CDATA[Library002]]></Library>

<LoanerID><![CDATA[Lib001-78021]]></LoanerID>

<DateLoaned>2008-09-12T12:39:49.1829958</DateLoaned>

<DaysOut>6</DaysOut>

<AssetID>999230021</AssetID>

<AssetOrigin><![CDATA[Library002]]></AssetOrigin>

</row>

<row>

<LoanId>20282</LoanId>

<Library><![CDATA[Library002]]></Library>

<LoanerID><![CDATA[Lib001-78021]]></LoanerID>

<DateLoaned>2008-09-12T12:36:39.1829958</DateLoaned>

<DaysOut>17</DaysOut>

<AssetID>999930021</AssetID>

<AssetOrigin><![CDATA[Library002]]></AssetOrigin>

</row>

</Value>

</Parameter>

<Parameter>

<Name>EndOfInputRowset</Name>

<Value xsi:type="xsd:boolean">true</Value>

</Parameter>

</Parameters>

</Execute>

</soap:Body>

</soap:Envelope>

创建数据库和维度

若要创建该示例数据库和相关对象,请将该脚本复制并粘贴到 SQL Server Management Studio 中的 XMLA 窗口并执行它。

注意注意

可以忽略在此命令中设置的绑定,因为您将用以前步骤中的外部绑定来覆盖它们。

<soap:Envelope xmlns:soap="https://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<Execute xmlns="urn:schemas-microsoft-com:xml-analysis">

<Command>

<Create AllowOverwrite="true" xmlns="https://schemas.microsoft.com/analysisservices/2003/engine">

<ObjectDefinition>

<Database xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ddl2="https://schemas.microsoft.com/analysisservices/2003/engine/2" xmlns:ddl2_2="https://schemas.microsoft.com/analysisservices/2003/engine/2/2" xmlns:ddl100_100="https://schemas.microsoft.com/analysisservices/2008/engine/100/100" xmlns:ddl200_200="https://schemas.microsoft.com/analysisservices/2010/engine/200/200">

<ID>Library</ID>

<Name>Library Loans</Name>

<Language>1033</Language>

<Dimensions>

<Dimension>

<ID>Loans</ID>

<Name>Loans</Name>

<Source xsi:type="DataSourceViewBinding">

<DataSourceViewID>Library</DataSourceViewID>

</Source>

<ErrorConfiguration>

<KeyNotFound>ReportAndStop</KeyNotFound>

<KeyDuplicate>ReportAndStop</KeyDuplicate>

<NullKeyNotAllowed>ReportAndStop</NullKeyNotAllowed>

</ErrorConfiguration>

<StorageMode valuens="ddl200_200">InMemory</StorageMode>

<Language>1033</Language>

<Collation>Latin1_General_CI_AS</Collation>

<UnknownMemberName>Unknown</UnknownMemberName>

<Attributes>

<Attribute>

<ID>RowNumber</ID>

<Name>RowNumber</Name>

<Type valuens="ddl200_200">RowNumber</Type>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="RowNumberBinding" />

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="RowNumberBinding" />

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>LoanId</ID>

<Name>LoanId</Name>

<Usage>Key</Usage>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>LoanID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>LoanID</ColumnID>

</Source>

</NameColumn>

<AttributeRelationships>

<AttributeRelationship>

<AttributeID>RowNumber</AttributeID>

<Cardinality>One</Cardinality>

<Name>RowNumber</Name>

</AttributeRelationship>

<AttributeRelationship>

<AttributeID>Library</AttributeID>

<Name>Library</Name>

</AttributeRelationship>

<AttributeRelationship>

<AttributeID>LoanerID</AttributeID>

<Name>LoanerID</Name>

</AttributeRelationship>

<AttributeRelationship>

<AttributeID>DateLoaned</AttributeID>

<Name>DateLoaned</Name>

</AttributeRelationship>

<AttributeRelationship>

<AttributeID>DaysOut</AttributeID>

<Name>DaysOut</Name>

</AttributeRelationship>

<AttributeRelationship>

<AttributeID>AssetID</AttributeID>

<Name>AssetID</Name>

</AttributeRelationship>

<AttributeRelationship>

<AttributeID>AssetOrigin</AttributeID>

<Name>AssetOrigin</Name>

</AttributeRelationship>

</AttributeRelationships>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>Library</ID>

<Name>Library</Name>

<KeyColumns>

<KeyColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>Library</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>Library</ColumnID>

</Source>

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>LoanerID</ID>

<Name>LoanerID</Name>

<KeyColumns>

<KeyColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>LoanerID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>LoanerID</ColumnID>

</Source>

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>DateLoaned</ID>

<Name>DateLoaned</Name>

<KeyColumns>

<KeyColumn>

<DataType>Date</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>DateLoaned</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>DateLoaned</ColumnID>

</Source>

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>DaysOut</ID>

<Name>DaysOut</Name>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>DaysOut</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>DaysOut</ColumnID>

</Source>

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>AssetID</ID>

<Name>AssetID</Name>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>AssetID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>AssetID</ColumnID>

</Source>

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

<Attribute>

<ID>AssetOrigin</ID>

<Name>AssetOrigin</Name>

<KeyColumns>

<KeyColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>AssetOrigin</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<NameColumn>

<DataType>WChar</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>AssetOrigin</ColumnID>

</Source>

</NameColumn>

<OrderBy>Key</OrderBy>

</Attribute>

</Attributes>

</Dimension>

</Dimensions>

<Cubes>

<Cube>

<ID>Loans</ID>

<Name>Loans</Name>

<Language>1033</Language>

<Collation>Latin1_General_CI_AS</Collation>

<Dimensions>

<Dimension>

<ID>Loan</ID>

<Name>Loan</Name>

<DimensionID>Loans</DimensionID>

<Attributes>

<Attribute>

<AttributeID>RowNumber</AttributeID>

</Attribute>

<Attribute>

<AttributeID>LoanID</AttributeID>

</Attribute>

<Attribute>

<AttributeID>Library</AttributeID>

</Attribute>

<Attribute>

<AttributeID>LoanerID</AttributeID>

</Attribute>

<Attribute>

<AttributeID>DateLoaned</AttributeID>

</Attribute>

<Attribute>

<AttributeID>DaysOut</AttributeID>

</Attribute>

<Attribute>

<AttributeID>AssetID</AttributeID>

</Attribute>

<Attribute>

<AttributeID>AssetOrigin</AttributeID>

</Attribute>

</Attributes>

</Dimension>

</Dimensions>

<MeasureGroups>

<MeasureGroup>

<ID>Loan</ID>

<Name>Loan</Name>

<Measures>

<Measure>

<ID>LoanID</ID>

<Name>LoanID</Name>

<AggregateFunction>Count</AggregateFunction>

<DataType>BigInt</DataType>

<Source>

<DataType>BigInt</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>LoanID</ColumnID>

</Source>

</Source>

</Measure>

<Measure>

<ID>DaysOut</ID>

<Name>DaysOut</Name>

<DataType>BigInt</DataType>

<Source>

<DataType>BigInt</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>DaysOut</ColumnID>

</Source>

</Source>

</Measure>

</Measures>

<StorageMode valuens="ddl200_200">InMemory</StorageMode>

<ProcessingMode>Regular</ProcessingMode>

<Dimensions>

<Dimension xsi:type="DegenerateMeasureGroupDimension">

<CubeDimensionID>Loan</CubeDimensionID>

<Attributes>

<Attribute>

<AttributeID>RowNumber</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

<Attribute>

<AttributeID>LoanID</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="ColumnBinding">

<TableID>dbo_tb_Loan</TableID>

<ColumnID>LoanID</ColumnID>

</Source>

</KeyColumn>

</KeyColumns>

<Type>Granularity</Type>

</Attribute>

<Attribute>

<AttributeID>Library</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>WChar</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

<Attribute>

<AttributeID>LoanerID</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>WChar</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

<Attribute>

<AttributeID>DateLoaned</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>Date</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

<Attribute>

<AttributeID>DaysOut</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

<Attribute>

<AttributeID>AssetID</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>BigInt</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

<Attribute>

<AttributeID>AssetOrigin</AttributeID>

<KeyColumns>

<KeyColumn>

<DataType>WChar</DataType>

<Source xsi:type="InheritedBinding" />

</KeyColumn>

</KeyColumns>

</Attribute>

</Attributes>

<ddl200_200:ShareDimensionStorage>Shared</ddl200_200:ShareDimensionStorage>

</Dimension>

</Dimensions>

<Partitions>

<Partition>

<ID>Loan</ID>

<Name>Loan</Name>

<Source xsi:type="DsvTableBinding">

<DataSourceViewID>Library</DataSourceViewID>

<TableID>dbo_tb_Loan</TableID>

</Source>

<StorageMode valuens="ddl200_200">InMemory</StorageMode>

</Partition>

</Partitions>

</MeasureGroup>

</MeasureGroups>

<Source>

<DataSourceViewID>Library</DataSourceViewID>

</Source>

<StorageMode valuens="ddl200_200">InMemory</StorageMode>

</Cube>

</Cubes>

<DataSources>

<DataSource xsi:type="RelationalDataSource">

<ID>Library</ID>

<Name>Library</Name>

<ConnectionString>Provider=SQLNCLI10.1;Data Source=localhost;Integrated Security=SSPI;Initial Catalog=Library</ConnectionString>

<ImpersonationInfo>

<ImpersonationMode>ImpersonateServiceAccount</ImpersonationMode>

</ImpersonationInfo>

<Timeout>PT0S</Timeout>

</DataSource>

</DataSources>

<DataSourceViews>

<DataSourceView>

<ID>Library</ID>

<Name>Library</Name>

<DataSourceID>Library</DataSourceID>

<Schema>

<xs:schema id="Library" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:msprop="urn:schemas-microsoft-com:xml-msprop">

<xs:element name="Library" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">

<xs:complexType>

<xs:choice minOccurs="0" maxOccurs="unbounded">

<xs:element name="dbo_tb_Loan" msprop:FriendlyName="tb_Loan" msprop:DbSchemaName="dbo" msprop:DbTableName="tb_Loan" msprop:TableType="Table">

<xs:complexType>

<xs:sequence>

<xs:element name="LoanId" msprop:FriendlyName="LoanId" msprop:DbColumnName="LoanId" type="xs:long" />

<xs:element name="Library" msprop:FriendlyName="Library" msprop:DbColumnName="Library" minOccurs="0" >

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:maxLength value="50" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="LoanerID" msprop:FriendlyName="LoanerID" msprop:DbColumnName="LoanerID" minOccurs="0" >

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:maxLength value="50" />

</xs:restriction>

</xs:simpleType>

</xs:element>

<xs:element name="DateLoaned" msprop:FriendlyName="DateLoaned" msprop:DbColumnName="DateLoaned" type="xs:dateTime" minOccurs="0" />

<xs:element name="DaysOut" msprop:FriendlyName="DaysOut" msprop:DbColumnName="DaysOut" type="xs:int" minOccurs="0" />

<xs:element name="AssetID" msprop:FriendlyName="AssetID" msprop:DbColumnName="AssetID" type="xs:long" minOccurs="0" />

<xs:element name="AssetOrigin" msprop:FriendlyName="AssetOrigin" msprop:DbColumnName="AssetOrigin" minOccurs="0" >

<xs:simpleType>

<xs:restriction base="xs:string">

<xs:maxLength value="50" />

</xs:restriction>

</xs:simpleType>

</xs:element>

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:choice>

</xs:complexType>

</xs:element>

</xs:schema>

<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" />

</Schema>

</DataSourceView>

</DataSourceViews>

<ddl200_200:StorageEngineUsed>InMemory</ddl200_200:StorageEngineUsed>

</Database>

</ObjectDefinition>

</Create>

</Command>

<Properties />

</Execute>

</soap:Body>

</soap:Envelope>