|
中华网络安全联盟 作者:佚名 来源:网络转载 时间:2006-3-20
CellData Axes 部分之后是 CellData 部分,其中包含每个单元格的属性值。强制的 CellOrdinal 特性表示单元格的序数。对于 n 个单元格,CellOrdinal 的编号为从 0 到 n-1。如果所有单元格属性都为默认值(如果没有指定默认值,则默认值为 NULL),可没有单元格元素。注意,<Value> 元素的类型必须在 CellData 部分指定,而对于其它标准属性,由于其类型在架构中定义,所以无需指定类型。 <CellData> <Cell CellOrdinal="0"> <Value xsi:type="xsd:double">16890</Value> <FmtValue>16,890.00</FmtValue> <FormatString>Standard</FormatString> </Cell> <Cell CellOrdinal="1"> <Value xsi:type="xsd:int">50</Value> <FmtValue>50</FmtValue> <FormatString>Standard</FormatString> </Cell> <Cell CellOrdinal="2"> <Value xsi:type="xsd:double">36175.2</Value> <FmtValue>$36,175.20</FmtValue> <FormatString>Currency</FormatString> </Cell> </CellData> 单元格的坐标轴引用可以根据 CellOrdinal 计算。从概念上说,单元格在数据集中的编号就如同该数据集为 p 维数组一样,其中 p 为坐标轴数。各单元格是按以行为主的顺序安排的。下图是计算单元格序号的公式。  我们将把上述公式应用于下表中显示的结果集。该查询要求在列上有四个值,而在行上有两个州和四个季度的交叉相乘。在以下数据集结果中,显示在框中的数据集结果部分的 CellOrdinal 属性为集 {9, 10, 11, 13, 14, 15, 17, 18, 19}。这是因为单元格是以行为主的顺序排列的,其开始位置为左上角单元格的零 CellOrdinal。 接着,我们将把上述公式应用于单元格 {CA, Q3, Store Cost}。坐标轴 k=0 具有 Uk=4 个成员,而坐标轴 k=1 具有 Uk=8 个元组。P 为查询中的坐标轴总数,在这里等于 2。S0 为 i=0 到 1 的初始和。对于 i=0,{Store Cost} 在坐标轴 0 上的元组序数为 1。对于 i = 1,{CA, Q3} 的元组序数为 2。 对于 i=0,Ei = 1,所以,对于 i = 0,和为 1 * 1 = 1,而对于 i=1,和为 2(元组序数)* 4(Ei 的值,按 1 * 4 计算),或 8,这样,和为 1 + 8 = 9,为该单元格的序数。  上述数据集的完整 XML 输出显示在附录 D中。 Command Command 数据类型是一种 XML 文档类型。在本版本的 XML for Analysis 规范中,Command 数据类型仅由 <Statement> 标记组成,属于类型字符串,包含命令语句的文本。例如,带有 MDX 语句的 <Statement> 元素可以是如下的样子: <Statement> SELECT Measures.MEMBERS on columns from Sales</Statement> 在以后版本的规范中,Command 数据类型的 XML 文档将超出本文档中定义的单个 <Statement> 元素。 XML for Analysis 规范要求多维提供程序支持 mdXML 语言。mdXML 语言将以 MDX 为基础;目前 mdXML 仅由 <Statement> 元素组成。对于多维提供程序,<Statement> 元素必须包含 MDX 语言语句。mdXML 以后的增强版本将会在现有 <Statement> 元素之外添加另一些元素。<Statement> 元素将继续支持把 MDX 语句作为类型字符串,即使对它进行了扩展,也会使其支持其它 XML 元素。 除了 mdXML 以后的增强版本外,MDX 语言本身是可扩展的,这样,提供程序可以对该语言进行扩展,以支持其它在基本语言集中没有提供的功能。有关 mdXML 的详细信息,请参见 MDX 和 mdXML 间的关系一节。 Properties Properties 数据类型表示 XML for Analysis 属性的集合。各属性都由 XML 元素定义,而属性值则为 XML 元素所包含的数据。XML 元素的名称与属性的名称相对应。 各提供程序可以扩展属性集,但提供程序特定的属性名称必须是格式严谨的 XML 标记。 示例: <PropertyList> <DataSourceInfo> Provider=MSOLAP;Data Source=local; </DataSourceInfo> <Catalog> Foodmart 2000 </Catalog> <Format> Multidimensional </Format></PropertyList> Restrictions Restrictions 数据类型表示在执行 Discover 方法的过程中,所要应用的限制的集合。Restriction 名称指定被限制的行集列的名称。Restriction 值定义列的数据。 各提供程序都可以添加新的架构行集,但要使列可以被限制,其名称必须符合 XML 格式完好性约束。 以下示例将对 MDSCHEMA_CUBES 架构行集中的列名称进行限制: <RestrictionList> <CATALOG_NAME> FoodMart 2000 </CATALOG_NAME> ...</RestrictionList> 需要时,可以用多个值对列进行限制。每个值都用 <Value> 元素表示。示例: <RestrictionList> <LiteralName> <Value>DBLITERAL_QUOTE_PREFIX</Value> <Value>DBLITERAL_QUOTE_SUFFIX</Value> <Value>DBLITERAL_ESCAPE_UNDERSCORE_PREFIX</Value> <Value>DBLITERAL_ESCAPE_UNDERSCORE_SUFFIX</Value> </LiteralName> ...</RestrictionList> Resultset Resultset 数据类型是一种自我说明型的 XML 结果集。它将包含的数据类型是由 XML for Analysis Format 属性表示的。 在默认情况下,XML 架构是与结果集一起返回的。可以使用 Content 属性来改变这种情况,如 XML for Analysis 属性中所述。 Rowset 在行集中嵌入的 XML 架构定义 Rowset 返回数据类型的具体结构。XML for Analysis 行集的一般结构类似于通过 FOR XML RAW 子句获取的 Microsoft? SQL Server? 2000 行集的格式,但它是以元素为中心的,而不是以特性为中心,并且允许使用层次结构数据。 XML 不允许将特定的字符当作元素和特性的名称。XML for Analysis 支持按 SQL Server 2000 中的定义进行编码来解决这一 XML 约束。对于包含无效 XML 名称字符(根据 XML 1.0 规范)的列名称,将使用相应的十六进制值对无效的 Unicode 字符进行编码。这些值转义表示为 _xHHHH_,其中 HHHH 表示字符的四位十六进制 UCS-2 代码,高位在前。例如,名称“Order Details”的编码为 Order_x0020_Details,其中的空格字符被相应的十六进制代码替代。 编码会使可扩展样式语言 (XSL) 转换变得困难。为了支持对实际上未进行编码的列名称进行快速查找,可以将 sql:field 特性添加到 XML 行集架构中,每个特性占一列。该特性处于 "urn:schemas-microsoft-com:xml-sql" 名称空间中。 示例: <xsd:element name="Order_x0020_Details" type="string" sql:field="Order Details" /> 对于平面数据,XML for Analysis 行集格式的样子如下例所示。列名称(特定于查询)在架构中定义为元素名称。各行由一对 <row> 标记包围起来: 点击此出浏览 对于层次结构数据(或嵌套行集),如由进行数据挖掘的 OLE DB 查询返回的数据,XML for Analysis 行集格式的样子如下例所示。行的结构没有改变,但数据特定的架构将定义包含嵌套数据的元素子类型。在此例中,嵌套元素是 <NODE_DISTRIBUTION>. 点击此出浏览 String String 类型与标准 XML 字符串数据类型相对应。 UnsignedInt UnsignedInt 数据类型与 XML 无符号整数架构类型相对应。 XML for Analysis 行集 Discover 方法的 Result 参数中返回的信息的结构是根据本节中所详述的行集列布局确定的。 以下行集中所述的所有列都是必需的,并且这些列必须按显示的顺序返回。但是,可以将其它列(不需要这些列的客户端应忽略它们)添加在末尾,对于不适用的信息,某些列可以包含空数据。 以下各节将对各行集进行说明。各节都包含一个表,其中提供有关各列的以下信息。 | 列标题 | 内容 | | 列名称 | 输出行集中列的名称。 | | 类型 | 列的数据类型的说明。有关 XML for Analysis 支持的数据类型的详细信息,请参见 XML for Analysis 中使用的数据类型。 | | 说明 | 列用途的简要说明。 | | 限制 | 表示是否可以用列来限制返回的行集(方法是通过包含 Discover 方法的 Restrictions 参数)。“是”表示将列用作 Restrictions 项来按此字段筛选结果。 | | 是否可以为空 | 表示是否必须返回数据或当列不适用时是否允许空字符串。“是”表示允许为空,并且数据是可选的。“否”则表示数据是必需的。 | DISCOVER_DATASOURCES 行集 当使用 RequestType 参数中的 DISCOVER_DATASOURCES 枚举值调用 Discover 方法时,该方法将在 Result 参数中返回 DISCOVER_DATASOURCES 行集。这种请求类型将从应用程序 Web 服务器的 URL 返回一个已发布数据源的列表(以一种实现特定的方式),使客户端可以选择要连接的数据源。 | 列名称 | 类型 | 说明 | 限制 | 是否可以为空 | | DataSourceName | string | 数据源的名称,如 FoodMart 2000。 | 是 | 否 | | DataSourceDescription | string | 数据源的说明,由发布者输入。 | 否 | 是 | | URL | string | 显示为该数据源调用 XML for Analysis 方法的位置的唯一路径。 | 是 | 是 | | DataSourceInfo | string | 包含连接到数据源所要求的所有其它信息的字符串。该字符串可以包含提供程序的 Initial Catalog 属性或其它信息。 示例: "Provider=MSOLAP;Data Source=Local;" | 否 | 是 | | ProviderName | string | 数据源之后的提供程序的名称。 示例: "MSDASQL" | 是 | 是 | 列名称 (续) | 类型 (续) | 说明 (续) | 限制 (续) | 是否可以为空 (续) | | ProviderType | array | 提供程序所支持的数据类型。可以包括以下类型中的一个或多个。在本表之后包括一个示例。 - TDP:表格数据提供程序。
- MDP:多维数据提供程序。
- DMP:数据挖掘提供程序。DMP 提供程序实现 OLE DB for Data Mining 规范。
| 是 | 否 | 列名称 (续) | 类型 (续) | 说明 (续) | 限制 (续) | 是否可以为空 (续) | | AuthenticationMode | EnumString | 有关数据源使用的安全模式类型的规范。其值可以为以下之一: - Unauthenticated:不必发送用户 ID 或密码。
- Authenticated:连接要求的信息中必须包含用户 ID 和密码。
- Integrated:数据源使用基础安全性来决定授权,如 Microsoft Internet Information Services (IIS) 提供的集成安全性。
| 是 | 否 | 提供程序支持的每个类型在 ProviderType 数组中都有对应的元素。例如,支持 TDP、MDP 和 DMP 的提供程序将生成以下数组: <ProviderType><MDP/><TDP/><DMP/></ProviderType> DISCOVER_PROPERTIES 行集 当使用 RequestType 参数中的 DISCOVER_PROPERTIES 枚举值调用 Discover 方法时,该方法将在 Result 参数中返回 DISCOVER_PROPERTIES 行集。这种请求类型将返回有关 XML for Analysis 提供程序支持的标准属性和提供程序特定属性的信息。提供程序不支持的属性不列在返回结果集中。 | 列名称 | 类型 | 说明 | 限制 | 是否可以为空 | | PropertyName | string | 属性的名称。 | 是,当作数组对待 | 否 | | PropertyDescription | string | 对该属性的说明,说明文字可以本地化。 | 否 | 是 | | PropertyType | string | 属性的 XML 数据类型。 | 否 | 是 | | PropertyAccessType | EnumString | 属性的访问方式。该值可以为 Read、Write 或 ReadWrite。 | 否 | 否 | | IsRequired | boolean | 要求属性则为真,不要求则为假。 | 否 | 是 | | Value | string | 属性的当前值。 | 否 | 是 | |