在开发一套OLAP系统的过程中,我们经常会遇到以下问题:
1. 在完成Cube及前端报表的开发之后,客户要求修改维度的名称;
这种情况经常发生,原因在于开发过程中无法适时与客户确认名称,所以很多名称都是由开发人员自己定义的。同时也存在客户在定义名称之后,又需要再对其进行更改。这个问题比较困难,因为如果不进行修改,则客户将永远看到的都是他不想看到的名称,甚至这个名称还有可能引起误解。如果更改,则所有已经完成的报表的MDX语句都可以需要进行相应的更改,工作量非常大。
2. 有的客户希望看到中文的维度名称,而有的客户希望看到英文的名称;
对于跨国企业,通常都会有这样的要求。针对于客户所在的不同区域,要求系统能够展现不同的语言
上面的问题都和SQL Server 2005 Analysis Services中的翻译功能有关,其中第二个问题是翻译功能的典型应用,而第一个问题则是翻译功能所附带的一个益处。
翻译SQL Server 2005 Analysis Services的一个全新的功能,它可以针对于不同区域的LCID来呈现不同的语言界面。有了这个功能,Cube在设计时就可以依据于另外一套标准:
首先,在开发之前,与客户确定术语表,即涉及到的各种名称的中英文对照,并且在开发过程中要不断完善这张表;
其次,在开发过程中,所有的维度、量度、量度组以及计算成员等等都使用英文名称,这样可以实现与数据仓库在名称上的统一,因为一般来讲数据仓库中的字段都会使用英文名称。
第三,在Cube完成之后,报表开发之前,创建翻译。例如,创建一个中文的翻译,将所有涉及展现的名称翻译成中文。
第四,在报表开发过程中,所有的MDX语句都只使用英文名称。这样,如果将来客户需要修改维度名称,则只需修改翻译后的中文名称即可,而不再需要修改MDX语句。
在依据这样的原则开发完成Cube之后,也会引发一个新的问题,即某些客户端软件无法正确识别LCID,从而导致无法显示中文,而只能显示英文(如PPS、ProClarity)。
对于这样的问题,我们可以在连接字符串中加入以下语句,从而指定展现的语言:
Data Source=localhost;Initial Catalog=中原;LocaleIdentifier=2052
LocaleIdentifier=2052指定了连接使用的LCID,其中2052即为中国大陆的LCID,这样,就可以确保客户端可以获取希望的语言。
注:LCID属性的作用是设置或者返回一个用来指定本地或者某个区域性质的整数。比如某个地区的相关日期、时间以及货币。客户端系统LCID值则取决于客户端系统控制面板中对区域的设定。