【SQL开源代码栏目提醒】:网学会员--在 SQL开源代码编辑为广大网友搜集整理了:一步一步学习SQL Server BI PDF - 技术总结绩等信息,祝愿广大网友取得需要的信息,参考学习。
一步一步学习
SQL Server BI 一步一步学习sqlserver BI--数据仓库设计 因为项目还没有真正开始但是接触BI已有半年多手痒这几天准备搞一个简化版本的BI项目。
一方面给刚BI入门的朋友一个参考另外一方面也为自己的将要开始的项目做个准备让自己能够考虑到一些项目的细节。
同时也希望对BI有研究的朋友提供一些建议和经验。
因为我们的这个案例是采用微软的sqlserver2005的BI平台开发的所以这里先贴一张WebCast里面截来的图这张图主要反映了采用 sqlserver2005的BI项目的架构。
好了咱们开始吧。
我说的这个项目需求很简单因为是简化版本的么。
这是一个游戏中使用到的物品的销售分析软件。
里面包括几个概念游戏销售部门物品交易金额交易笔数发布单数等。
我们要做的事情就是按游戏按部门按物品来实现对交易金额笔数等的数据交叉分析。
在我们这个系统里面我们的数据颗粒度是天。
好了既然是简化版我们也就不用那么罗嗦什么需求分析分析设计都省了吧下面直接进入数据库设计。
我们的数据库一共包括四张维度表部门维度游戏维度物品维度时间维度一张事实表游戏交易数据事实表。
部门维度表 游戏维度表 物品维度表 时间维度表 交易数据事实表 由于我们的这个案例比较简单所以维度与事实表之间的关系也比较简 单是一个简单的星型架构。
这一节我们就先写到这里下一节我将会详细的写这个项目的ETL部分。
一步一步学习sqlserver BI--ETL设计 这节我们主要讲讲我的游戏交易数据分析项目的ETL数据抽取、加载、转换具体是怎么做的。
先来讲下源系统吧因为我们的交易主站的服务器不是架在公司的因此不能直接从源系统直接抽取数据了。
事实上我们已经存在一个简单的数据分析系统了只不过这个是以前人家做的没有采用sqlserver2005的BI平台来做而是直接写winform程序来弄的。
原来的数据抽取是主站那边提供导出的excel文件过来然后到我们这边导入到我们的分析库中去。
好了为了简便事实上我只是在做一个demo为以后项目做准备所以我们抽取数据直接是从上面说的已经存在分析库中抽的因为数据结构比较相近所以ETL过程还是比较简单的。
先看看游戏维度表吧 首先我们来新建一个Integration Services项目。
接着新建一个ImportDimGamePackage.dtsx的SSIS包。
拖放一个数据流任务到控制流面板上如图 双击数据流任务来到数据流面板 接着我们拖动OLEDB源到数据流面板上并且双击编辑它新建一个连接和选择要抽取数据的源数据表。
然后我们拖动一个OLEDB目标到数据流面板上把OLEDB源和OLEDB目标连接起来并且双击编辑新建一个连接和选择我们要存放数据的目标表 然后建立源表与目标表之间的映射。
所有的都弄好了运行OK成功了。
接着部门维度和物品维度都跟这个差不多。
时间维度是我新建的暂时我用winform写了一个日期维度生成器。
下面就讲交易数据事实表这个比维度稍微复杂一点点。
因为源系统和目标系统数据结构很类似所以我的ETL都是非常简单的在实际项目中能够有这么好的运气是不可能的呵呵。
首先新建一个ImportFactGameTradeDataPackage.dtsx的SSIS包。
其他简单的步骤跟上面一样我就讲讲不一样的地方。
因为我在数据库设计的时候各个维度都用了代理键也就是说在我们的数据仓库里面的维度和事实表的外键关联都是通过代理键的源系统中的键我们只不过用一个字段记录了下来。
所以我们数据抽取过来的时候要对源系统中的映射关系进行改变。
这里的关键就是我们在编辑数据流的时候使用了一个叫做“查找”的组件。
编辑好的数据流如图 接下来我们详细讲下查找列是怎么用的拿查找GameKey来讲把。
1。
双击查找GameKey组件在引用表面板上面选择好我们要查找的表在这里就是我们数据仓库表中的游戏维度表。
2。
在列面板里面建立要查找的字段跟源系统事实表的字段的映射。
3。
把查找到的列作为新列添加并取一个唯一的别名在后面与OLEDB目标的时候建立映射的时候会用到这里查找到的列。
接着其他的几个维度代理键的查找都类似OLEDB目标的字段映射跟维度表的导入类似。
好了今天主要介绍了简单的Sqlserver2005 Integration Services的使用今天涉及了到里面几个概念数据流任务OLEDB源OLEDB目标查找等。
下一节我准备写一下使用Sqlserver2005 Analysis Services建立OLAP数据库的过程。
一步一步学习sqlserverBI--多维数据库建立 接着我们上节的《一步一步学习sqlserver BI--ETL设计》现在我们的游戏交易数据分析系统的数据仓库已经建好了并且也已经有数据了让我们开始我们的OLAP过程吧。
在这一节中我们主要详细的讲解使用Sqlserver2005 Analysis Service 来建立多维数据库的过程。
首先我么新建一个Analysis Services 项目建好以后我们将会在我们的解决方案资源管理器里面看到如下图所示的项目结构。
接着我们新建数据源然后根据向导一步一步点下去完成后事实上建立了一个到数据仓库的连接串。
然后创建数据源视图也几乎是一步一步按照向导点下去事实上就是从数据源中选择我们需要的表到我们的数据源视图里面来。
好了下面我们开始建立多维数据集这也是我们今天这节的重点。
注意在这里选择时间维度表。
最后我们把我们的多维数据库发布到我们的Sqlserver2005 Analysis Service服务器中去。
右键点击项目属性设置我们部署的目标服务器如下图。
设置好以后点击工具栏上的部署按钮把多维数据库部署到我们的服务器中去。
部署完毕以后我们就可以右键点击多维数据集进行浏览数据了。
因为过程比较简单以上过程都没有怎么用文字了。
到此为止我们的多维数据库已经建立好了当然如果要应用于具体项目中的话还要修改多维数据库的很多属性。
一步一步学习sqlserver BI--应用开发1 接着我们上次那篇《一步一步学习sqlserverBi--多维数据库建立》现在我们多维数据库已经有了并且里面也已经有了数据那么赶快进入咱们程序员的主题吧。
今天我要在这个多维数据库上面开发两个应用 1。
按天统计各个部门的交易量 2。
按天统计各个部门和各个游戏的交易量 首先设计强类型的数据集如下图。
按部门统计数据集 按部门和游戏交叉统计数据集 设计MDX语句在数据层执行MDX并返回CellSet在业务逻辑层把CellSet组装成我们前台需要的数据集格式 /// ltsummarygt /// 按天统计各个部门的交易数据 /// lt/summarygt /// ltparam namequottradeDateKeyquotgt日期的键值lt/paramgt /// ltreturnsgtlt/returnsgt public CellSet Countint tradeDateKey StringBuilder mdxBuilder new StringBuilder mdxBuilder.AppendquotWITH MEMBER Measures.Total Orders Count AS SUMMeasures.Total Orders quot mdxBuilder.Appendquot MEMBER Measures.Total Amount Count AS SUMMeasures.Total Amountquot mdxBuilder.Appendquot MEMBER Measures.Total Money Count AS SUMMeasures.Total Moneyquot mdxBuilder.Appendquot MEMBER Measures.Un Paid Cancel Amount Count AS SUMMeasures.Un Paid Cancel Amountquot mdxBuilder.Appendquot MEMBER Measures.Un Paid Cancel Money Count AS SUMMeasures.Un Paid Cancel Moneyquot mdxBuilder.Appendquot MEMBER Measures.Paid Cancel Amount Count AS SUMMeasures.Paid Cancel Amountquot mdxBuilder.Appendquot MEMBER Measures.Paid Cancel Money Count ASSUMMeasures.Paid Cancel Moneyquot mdxBuilder.Appendquot SELECT Measures.Total Orders Count Measures.Total Amount Count Measures.Total Money Count Measures.Un Paid Cancel Amount Count Measures.Un Paid Cancel Money Count Measures.Paid Cancel Amount Count Measures.Paid Cancel Money Count ON COLUMNSquot mdxBuilder.Appendquot Department.Dep Code Alternate Key.Members ON ROWSquot mdxBuilder.Appendquot FROM Data Center DWquot mdxBuilder.Appendquot WHERE Time.TimeKey.quottradeDateKeyquotquot return DBServer.AnalysisServer.ExecuteCellsetmdxBuilder.ToString /// ltsummarygt /// 按天统计各个游戏单个部门的交易数据 /// lt/summarygt /// ltparam namequottradeDateKeyquotgt日期的键值lt/paramgt /// ltreturnsgtlt/returnsgt public CellSet Countint tradeDateKeyint departmentKey StringBuilder mdxBuilder new StringBuilder mdxBuilder.AppendquotWITH MEMBER Measures.Total Orders Count AS SUMMeasures.Total Orders quot mdxBuilder.Appendquot MEMBER Measures.Total Amount Count AS SUMMeasures.Total Amountquot mdxBuilder.Appendquot MEMBER Measures.Total Money Count AS SUMMeasures.Total Moneyquot mdxBuilder.Appendquot MEMBER Measures.Un Paid Cancel Amount Count AS SUMMeasures.Un Paid Cancel Amountquot mdxBuilder.Appendquot MEMBER Measures.Un Paid Cancel Money Count AS SUMMeasures.Un Paid Cancel Moneyquot mdxBuilder.Appendquot MEMBER Measures.Paid Cancel Amount Count AS SUMMeasures.Paid Cancel Amountquot mdxBuilder.Appendquot MEMBER Measures.Paid Cancel Money Count ASSUMMeasures.Paid Cancel Moneyquot mdxBuilder.Appendquot SELECT Measures.Total Orders Count Measures.Total Amount Count Measures.Total Money Count Measures.Un Paid Cancel Amount Count Measures.Un Paid Cancel Money Count Measures.Paid Cancel Amount Count Measures.Paid Cancel Money Count ON COLUMNSquot mdxBuilder.Appendquot Game.Game Code Alternate Key.Members ON ROWSquot mdxBuilder.Appendquot FROM Data Center DWquot mdxBuilder.Appendquot WHERE Time.TimeKey.quot tradeDateKey quotDepartment.Dim Department.quotdepartmentKey.ToStringquotquot return DBServer.AnalysisServer.ExecuteCellsetmdxBuilder.ToString /// ltsummarygt /// 填充按部门统计的数据 /// lt/summarygt /// ltparam namequotmodelquotgtlt/paramgt /// ltparam namequottimeKeyquotgtlt/paramgt public void FillDepartmentTotalModel model DateTime time int timeKey CellSet cellSet new DepartmentTotalDac.CounttimeKey DepartmentTotalModel.FactGameTradeDataRow newRow for int i 1 i lt cellSet.Axes1.Positions.Count i newRow model.FactGameTradeData.NewFactGameTradeDataRow newRow.Department cellSet.Axes1.Positionsi.Members0.Caption newRow.TradeDate time for int j 0 j lt cellSet.Axes0.Positions.Count j if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Total Orders Countquot newRow.TotalOrders TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Total Amount Countquot newRow.TotalAmount TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Total Money Countquot newRow.TotalMoney TypeParse.ToDecimalcellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Un Paid Cancel Amount Countquot newRow.UnPaidCancelAmount TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Un Paid Cancel Money Countquot newRow.UnPaidCancelMoney TypeParse.ToDecimalcellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Paid Cancel Amount Countquot newRow.PaidCancelAmount TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Paid Cancel Money Countquot newRow.PaidCancelMoney TypeParse.ToDecimalcellSetj i.FormattedValue model.FactGameTradeData.AddFactGameTradeDataRownewRow /// ltsummarygt /// 填充按游戏和部门交叉统计的数据 /// lt/summarygt /// ltparam namequotmodelquotgtlt/paramgt /// ltparam namequottimeKeyquotgtlt/paramgt /// ltparam namequotdepKeyquotgtlt/paramgt public void FillGameByDepartmentTotalModel modelDateTime timeint timeKeystring depint depKey CellSet cellSet new GameByDepartmentTotalDac.CounttimeKey depKey GameByDepartmentTotalModel.FactGameTradeDataRow newRow for int i 1 i lt cellSet.Axes1.Positions.Count i newRow model.FactGameTradeData.NewFactGameTradeDataRow newRow.Game cellSet.Axes1.Positionsi.Members0.Caption newRow.Department dep newRow.TradeDate time for int j 0 j lt cellSet.Axes0.Positions.Count j if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Total Orders Countquot newRow.TotalOrders TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Total Amount Countquot newRow.TotalAmount TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Total Money Countquot newRow.TotalMoney TypeParse.ToDecimalcellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Un Paid Cancel Amount Countquot newRow.UnPaidCancelAmount TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Un Paid Cancel Money Countquot newRow.UnPaidCancelMoney TypeParse.ToDecimalcellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Paid Cancel Amount Countquot newRow.PaidCancelAmount TypeParse.ToInt32cellSetj i.FormattedValue else if cellSet.Axes0.Positionsj.Members0.Name quotMeasures.Paid Cancel Money Countquot newRow.PaidCancelMoney TypeParse.ToDecimalcellSetj i.FormattedValue model.FactGameTradeData.AddFactGameTradeDataRownewRow 好了目前为止我们已经从多维数据库里面返回我们需要统计的数据了爱怎么展现就怎么展现吧。
数据列表柱状图曲线图饼状图等等。
在以后的章节中我会介绍一款
开源的非常成熟的图形控件ZedGraph我做展现的时候有部分就是用的这个家伙修改了它的一些
代码感觉非常实用。
一步一部学习SQLSERVER BI--ANALYSISSERVICE服务器配置 Sqlserver2005 中的analysis services支持两种数据库连接方式 1windows验证方式形如quotData SourcelimjCatalogAnalysis Services TutorialConnectTo9.0Integrated SecuritySSPIquot 2http验证方式形如quotProviderMSOLAPUser IDadministratorPassword119Persist Security InfoTrueInitial CatalogDataCenterDWData Sourcehttp://limj/olap/msmdpump.dllquot 由于公司软件架构的需要我这里选择后面那种方式。
下面我就说明一下这种方式在window2003 server上的配置过程。
以下文章来源于微软MSDN 概述 Microsoft??
SQL Server?? 2005 Analysis Services 与
SQL Server 2000 Analysis Services 使用相同的体系结构提供 HTTP 访问。
泵组件被加载到 IISInternet 信息服务并作为 ISAPI 扩展在客户端和 Analysis Services 服务器间传送数据。
本白皮书介绍使用 Microsoft Windows Server?? 2003 SP1 设置对 Analysis Services 的 HTTP 访问的全过程。
图 1 给出了组件体系结构的概览。
查看实际尺寸图像 返回页首 获取二进制数据 获取二进制数据 将 Installation folderOLAPbinisapi 目录的内容复制到要用作 IIS 中虚拟目录基础的文件夹。
本例中我们将把 C:Program FilesMicrosoft
SQL ServerMSSQL.1OLAPbinisapi 文件夹中的所有文件复制到 C:inetpubwwwrootolap 目录中。
注意 为使用全部安全设置请确保作为虚拟目录基础的文件夹位于格式化为 NTFS 文件系统的驱动器上这一点非常重要。
由于 IIS 的限制指向目录的路径不能包含空格。
如果要在不同于 Analysis Services 服务器的其他服务器上运行 HTTP 泵请确保同时为 Analysis Redistributable 数据包安装 OLEDB。
返回页首 创建应用程序库 创建应用程序库 1. 要打开“计算机管理”控制台请依次打开“控制面板”、“管理工具”及“计算机管理”。
或者右键单击“我的电脑”图标然后在快捷菜单上选择管理。
2. 在“计算机管理”控制台中依次展开“服务和应用程序”节点和“Internet 信息服务”节点。
如果无法找到“Internet 信息服务”节点可能是因为您的计算机上尚未安.
上一篇:
计算机专业外文文献及翻译
下一篇:
天亮之后