欢迎来到天天文库
浏览记录
ID:9474648
大小:62.50 KB
页数:8页
时间:2018-05-01
《bi数据级权限解决方案--》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、BI数据级权限解决方案>> BI数据分析是目前企业的热门应用,而对企业来说,权限控制是非常重要的,尤其是作为决策用的企业报表。目前基于微软SQLServer体系的BI架构为IntegrationServices+AnalysisService+ReportingServices,IntegrationServices和Analysis都属于应用后台的服务,不会在用户前端展现,其权限控制体系不在我们这篇文章的讨论范围内(但是实现数据级权限控制,需要AnalysisServices的参与)。而对于前端展示用的企业报表,权限控制体系分为2种
2、:报表级权限和数据级权限。报表级权限较为简单,主要用于控制谁能够看这个报表;数据级权限则比较复杂了,任何人看同一张报表,报表上的数据只能是他有权限查看的数据。简单说,就是总经理看到的数据和经理看到的数据是不一样的,虽然他们在看同一张报表。比较报表级权限和数据级权限,会发现如果实现了数据级权限的控制,那么企业报表是否需要进行权限控制已经不再重要(当然,为了界面友好性,还是应该控制下的)。 这篇文章主要就是讲述基于SQLServer架构的BI数据级权限的解决方案,这也是我给一个德国大型跨国企业客户实施其BI项目中,对方非常重视的一个功能。
3、这里先简单介绍下这个客户和项目,出于保密要求,我把该客户叫做CustomerS(简称CS,呵呵,不是那个游戏哦)。 CS项目前端采用Sharepoint,后台采用SQLServer,主要分析客户S的销售数据。CS的组织结构分为部门、区域;部门和区域是相互交叉的;某个部门的总部人员能够看到全国所有区域的数据;而区域员工则只能看到该区域的数据了。用户能够查看的数据权限,需要在网页上可以进行配置。这就是客户对数据级权限的要求。 针对这些需求,数据级权限解决方案采用如下架构: 报表查看流程说明: 用户查看报表 报表从Cube中获取数据
4、 Cube从数据库中(记录用户的数据权限配置)获得访问用户的权限配置,根据配置返回相应的数据 报表显示结果数据 数据权限配置流程说明: 用户访问数据权限配置页面(由于基于Sharepoint,因此是内嵌数据权限DX字符串 我们看看如下的主要代码(这个类库也就只需要这样一个CS文件):namespaceBI{ publicclassDataSecurity { publicstaticstringGetDimensionSet(stringdomain_account,stringdimension) //方法的
5、名字无所谓,参数比较重要 //domain_account:访问用户的帐号,后面我们会知道是从角色的设置中传入 //dimension:是获取哪个维度的数据。在角色里,需要对每一个维度进行设置 {//return{[Location].[City].[Seattle]},返回的结果示例 SqlConnectionconnection=neandmand=neand(SP_Security_GetDimensionSetByLoginAccount,connection); mand.
6、mandType=System.Data.mandType.StoredProcedure; SqlParameterp1=neeter(domain_account,domain_account); SqlParameterp2=neeter(dimension,dimension); 123下一页>>>>这篇文章来自..,。mand.Parameters.Add(p1); mand.Parameters.Add(p2); SqlDataReaderreader=mand.Ex
7、ecuteReader(); stringresult_set=string.Empty; intcount=0; pty)result_set+=,; result_set+=(string)reader[DimensionSet]; } mand.Dispose(); connection.Close(); connection.Dispose(); return{+result_set+}; }
8、 publicDataSecurity() { } }} 这个类库的作用很简单,抛开BI不谈,其实他就调用了一个存储过程,把返回结果做了一个字符串拼接,然后返回这个字符串。一般的返回结果
此文档下载收益归作者所有