货币换算(Analysis Services - 多维数据)
MicrosoftSQL ServerAnalysis Services 使用一组由多维表达式 (MDX) 脚本引导的功能组合,来在支持多种货币的多维数据集中提供货币换算支持。
货币换算术语
Analysis Services 中使用下列术语来说明货币换算功能:
先导货币
在比率度量值组中为其输入汇率的货币。本地货币
用于存储待换算度量值所基于的交易的货币。本地货币可由下面的两者之一标识:
事实数据表中与交易存储在一起的货币标识符,对于使用交易本身来标识用于该交易的货币的银行应用程序来说,通常是这种情况。
与维度表中的一个属性相关联然后又与事实数据表中的一个交易相关联的货币标识符,对于使用位置或其他标识符(例如子公司)来标识用于相关交易的货币的财务应用程序来说,通常是这种情况。
报表货币
交易要从先导货币换算到的货币。注意 对多对一货币换算来说,先导货币和报表货币是相同的。
货币维度
一个为之定义了以下设置的数据库维度:维度的 Type 属性设置为 Currency。
该维度的一个特性的 Type 属性被设置为 CurrencyName。
重要提示 该特性的值必须用于应当包含货币标识符的所有列中。
比率度量值组
多维数据集中的一个度量值组,为其定义了以下设置:货币维度和比率度量值组之间的常规维度关系。
时间维度和比率度量值组之间的常规维度关系。
作为一个可选项,还可以将 Type 属性设置为 ExchangeRate。 当商业智能向导将这些关系和货币与时间维度一起使用来标识可能的比率度量值组时,将 Type 属性设置为 ExchangeRate 可使得客户端应用程序能够更轻松地标识比率度量值组。
一个或多个度量值,用来代表比率度量值组中包含的汇率。
报表货币维度
由商业智能向导在定义了货币换算后定义的维度,它包含用于货币换算的报表货币。 报表货币维度基于一个命名查询,此命名查询定义于和比率度量值组相关联的货币维度所基于的数据源视图中,来自货币维度的维度主表。 该维度被定义了以下设置:维度的 Type 属性设置为 Currency。
该维度的键特性的 Type 属性被设置为 CurrencyName。
该维度的一个特性的 Type 属性被设置为 CurrencyDestination,并且绑定到该特性的列包含代表用于货币换算的报表货币的货币标识符。
定义货币换算
您可以使用商业智能向导来为多维数据集定义货币换算功能,也可以使用 MDX 脚本来手动定义货币换算。
先决条件
您必须首先定义至少一个货币维度、至少一个时间维度和至少一个比率度量值组,然后才能使用商业智能向导在多维数据集中定义货币换算。 商业智能向导可以从这些对象中检索相应的数据和元数据,以用于构造提供货币换算功能所需的报表货币维度和 MDX 脚本。
决策
您需要作出下列决策,商业智能向导才能构造提供货币换算功能所需的报表货币维度和 MDX 脚本:
汇率方向
待换算成员
换算类型
本地货币
报表货币
汇率方向
比率度量值组中包含代表本地货币和先导货币(通常称为公司货币)之间的关系的度量值。 汇率方向和换算类型的组合决定了使用商业智能向导生成的 MDX 脚本对待换算度量值所执行的操作。 下表说明了基于商业智能向导中可用的汇率方向选项和换算方向时,根据不同的汇率方向和换算类型执行的操作。
汇率方向 |
多对一 |
一对多 |
多对多 |
n 先导货币对 1 示例货币 |
为将度量值换算为先导货币,需要将待换算度量值乘以本地货币的汇率度量值。 |
为将度量值换算为报表货币,需要将待换算度量值除以报表货币的汇率度量值。 |
将待换算度量值乘以本地货币的汇率度量值来将其换算为先导货币,然后将该换算后的度量值除以报表货币的汇率度量值来将其换算为报表货币。 |
n 示例货币对 1 先导货币 |
为将度量值换算为先导货币,需要将待换算度量值除以本地货币的汇率度量值。 |
为将度量值换算为报表货币,需要将待换算度量值乘以报表货币的汇率度量值。 |
将待换算度量值除以本地货币的汇率度量值来将其换算为先导货币,然后将该换算后的度量值乘以报表货币的汇率度量值来将其换算为报表货币。 |
您可以在商业智能向导的**“设置货币换算选项”** 页上选择汇率方向。 有关设置换算方向的详细信息,请参阅设置货币换算选项(商业智能向导)。
待换算成员
您可以使用商业智能向导来指定使用比率度量值组中的哪些度量值来为以下内容进行值换算:
其他度量值组中的度量值。
数据库维度中的帐户属性的属性层次结构的成员。
数据库维度中的帐户属性的属性层次结构的成员使用的帐户类型。
商业智能向导将此信息用于由向导生成的 MDX 脚本中来确定货币换算计算的作用域。 有关为货币换算指定成员的详细信息,请参阅选择成员(商业智能向导)。
换算类型
商业智能向导支持三种不同类型的货币换算:
一对多
交易以先导货币存储在事实数据表中,然后换算为一种或多种其他报表货币。
例如,先导货币可以设置为美元 (USD),而事实数据表使用 USD 来存储事务。 此换算类型将这些交易由先导货币换算为指定的报表货币。 因此,交易能够以指定的先导货币进行存储,并且能够以指定的先导货币或以在为货币换算定义的报表货币维度中指定的任意一种报表货币进行查看。
多对一
交易以本地货币存储在事实数据表中,然后换算为先导货币。 先导货币充当报表货币维度中唯一指定的报表货币。
例如,先导货币可以设置为美元 (USD),而事实数据表使用欧元 (EUR)、澳大利亚元 (AUD) 和墨西哥比索 (MXN) 来存储交易。 此换算类型将这些交易由它们的指定本地货币换算为先导货币。 因此,交易能够以指定的本地货币进行存储,并且能够以在为货币换算定义的报表货币维度中指定的先导货币进行查看。
多对多
交易以本地货币存储在事实数据表中。 此种货币换算功能先将这类交易换算为先导货币,然后将其换算为一种或多种其他报表货币。
例如,先导货币可以设置为美元 (USD),而事实数据表使用欧元 (EUR)、澳大利亚元 (AUD) 和墨西哥比索 (MXN) 来存储交易。此换算类型将这些交易由它们的指定本地货币换算为先导货币,然后再将这些已换算的交易由先导货币换算为指定的报表货币。 因此,交易能够以指定的本地货币进行存储,并且能够以指定的先导货币或以在为货币换算定义的报表货币维度中指定的任意一种报表货币进行查看。
指定换算类型将允许商业智能向导定义报表货币维度的命名查询和维度结构,还将允许其定义为货币换算定义的 MDX 脚本的结构。
本地货币
如果您为自己的货币换算选择了多对多或多对一换算类型,则需要指定如何标识商业智能向导生成的 MDX 脚本执行货币换算计算时所使用的本地货币。 可以用下面的两种方法之一来标识事实数据表中交易的本地货币:
度量值组包含一个到货币维度的常规维度关系。 例如,在 Adventure Works DW 示例 Analysis Services 数据库中,Internet Sales 度量值组有一个到 Currency 维度的常规维度关系。 该度量值组的事实数据表包含一个外键列,该外键列引用该维度的维度表中的货币标识符。 在这种情况下,您可以从由该度量值组引用的货币维度中选择此属性来为该度量值组标识事实数据表中交易的本地货币。 此种情况在银行应用程序中最常见,这类应用程序使用交易本身确定交易使用的货币。
度量值组通过另一个直接引用货币维度的维度包含一个到货币维度的被引用维度关系。 例如,在 Adventure Works DW 示例 Analysis Services 数据库中,Financial Reporting 度量值组通过 Organization 维度包含了一个到 Currency 维度的被引用维度关系。 该度量值组的事实数据表包含一个外键列,该列引用了 Organization 维度的维度表中的成员。 反过来,Organization 维度的维度表也包含一个外键列,该外键列引用 Currency 维度的维度表中的货币标识符。 这种情况在财务报表应用程序中最常见,此类应用程序使用交易的位置或子公司来确定交易的货币。 在这种情况下,可以从业务实体的维度中选择引用货币维度的属性。
报表货币
如果您为自己的货币换算选择了多对多或一对多换算类型,则需要指定如何标识商业智能向导生成的 MDX 脚本执行货币换算计算时所使用的报表货币。 您可以指定与比率度量值组相关的货币维度的所有成员,也可以从该维度中选择单独的成员。
商业智能向导将基于使用选定的报表货币从货币维度的维度表中构造的命名查询来创建一个报表货币维度。
注意 |
---|
如果您选择了一对多换算类型,则同时还创建一个报表货币维度。 该维度只包含一个代表先导货币的成员,这是因为先导货币也用作一对多货币换算的报表货币。 |
向导会为多维数据集中定义的每个货币换算分别定义一个报表货币维度。 完成创建后,可以对报表货币维度的名称进行更改,但是如果这样做,您还必须更新为该货币换算生成的 MDX 脚本以确保脚本命令在引用报表货币维度时使用正确的名称。
定义多个货币换算
使用商业智能向导,您可以根据您的商业智能解决方案的需要定义尽可能多的货币换算。 您可以覆盖一个现有的货币换算,也可以将一个新的货币换算追加到多维数据集的 MDX 脚本中。 在具有复杂的报表要求的商业智能应用程序(例如支持国际报表的多个独立换算要求的财务报表应用程序)中,定义于单个多维数据集中的多个货币换算提供了很大的灵活性。
标识货币换算
商业智能向导通过将货币换算的脚本命令放置到下列注释框架中来标识各个货币换算。
//<Currency conversion>
...
[MDX statements for the currency conversion]
...
//</Currency conversion>
如果您更改或删除了这些注释,则商业智能向导将不能检测到货币换算,因此您不应更改这些注释。
向导还将注释中的元数据存储在这些注释内,这包括创建日期和时间、用户及换算类型。 您也不应当更改这些注释,因为在显示现有的货币换算时,商业智能向导使用此元数据。
若有必要,您可以更改包含在货币换算中的脚本命令。 如果您覆盖了该货币换算,则您的更改将丢失。