一步一步学习SQL Server BI
一步一步学习sqlserverBI多维数据库建立 电脑资料

一步一步学习sqlserverBI多维数据库建立电脑资料
接着我们上节的《一步一步学习sqlserver BI--ETL设计》,现在我们的游戏交易数据分析系统的数据仓库已经建好了,并且也已经有数据了,让我们开始我们的OLAP过程吧,
在这一节中,我们主要详细的讲解使用Sqlserverxx Analysis Service 来建立多维数据库的过程。
首先我么新建一个Analysis Services 工程,建好以后,我们将会在我们的解决方案资源器里面看到如下列图所示的工程构造。
接着,我们新建数据源,然后根据向导一步一步点下去,完成后事实上建立了一个到数据仓库的连接串。
然后创立数据源视图,也几乎是一步一步按照向导点下去,事实上就是从数据源中选择我们需要的表到我们的数据源视图里面来,好了,下面我们开始建立多维数据集,这也是我们今天这节的重点。
注意在这里选择时间维度表。
最后,我们把我们的多维数据库到我们的Sqlserverxx Analysis Service效劳器中去。
右键点击工程属性,设置我们部署的目标效劳器(如下列图)。
设置好以后,点击工具栏上的部署按钮,把多维数据库部署到我们的效劳器中去。
部署完毕以后,我们就可以右键点击多维数据集进展浏览数据了。
因为过程比拟简单,以上过程都没有怎么用文字了。
到此为止,我们的多维数据库已经建立好了,当然,如果要应用于详细工程中的话,还要修改多维数据库的很多属性。
下一节,我准备详细介绍运用开发建立在这个多维数据库上的应用。
SQLServer教程

SQLServer教程SQLServer 是由Microsoft开发的关系型数据库管理系统,它是一种可靠且高效的数据管理工具。
本教程将帮助您更好地了解SQLServer,并提供使用它的基本知识和技巧。
安装SQLServer-------------------------第一步是安装SQLServer。
您可以在Microsoft官方网站上下载SQLServer的安装程序。
按照安装向导的指示完成安装过程。
一旦安装完成,您将能够开始使用SQLServer。
连接SQLServer-------------------------您可以使用SQLServer Management Studio(SSMS)连接到SQLServer。
打开SSMS,然后在连接窗口中输入正确的服务器名称、身份验证方式和凭据。
一旦连接成功,您将能够访问和管理SQLServer中的数据库。
创建数据库-------------------------在SQLServer中,您可以使用T-SQL语句来创建数据库。
例如,使用以下语句可以创建一个名为"mydatabase"的数据库:```CREATE DATABASE mydatabase;```执行此语句后,您将在SQLServer中看到一个新的数据库。
创建表-------------------------要在数据库中存储数据,您需要创建表。
使用T-SQL语句可以轻松创建表。
例如,使用以下语句可以创建一个名为"employees"的表:```CREATE TABLE employees (id INT PRIMARY KEY,name VARCHAR(50),age INT,salary DECIMAL(10,2));```这将创建一个包含id、name、age和salary列的表。
插入数据-------------------------插入数据是通过使用INSERT INTO语句完成的。
sql server用法

sql server用法SQL Server是一种关系型数据库管理系统,常用于存储和管理数据。
在使用SQL Server时,可以通过SQL语言编写指令来操作数据库。
以下是SQL Server的用法和相关参考内容。
1. 数据库连接与创建:- 使用SQL Server Management Studio(SSMS)连接到SQL Server数据库。
- 使用CREATE DATABASE语句创建新的数据库。
2. 数据表的创建与操作:- 使用CREATE TABLE语句创建新的数据表,定义表的字段名和数据类型。
- 使用ALTER TABLE语句修改已存在的数据表结构,如添加、修改或删除字段。
- 使用SELECT语句从数据表中检索数据。
- 使用INSERT语句将新数据插入到数据表中。
- 使用UPDATE语句更新已存在的数据。
- 使用DELETE语句删除数据表中的数据。
3. 数据查询与筛选:- 使用SELECT语句查询数据库,可以使用WHERE子句进行筛选。
- 使用ORDER BY子句对查询结果进行排序。
- 使用GROUP BY子句对查询结果进行分组。
- 使用HAVING子句对分组结果进行筛选。
- 使用JOIN子句连接多个数据表,进行复杂的查询操作。
- 使用子查询(Subquery)嵌套查询语句。
- 使用聚合函数(如COUNT、SUM、AVG等)对数据进行统计。
4. 数据库索引与优化:- 使用CREATE INDEX语句创建索引,提高查询性能。
- 使用ALTER INDEX语句修改或删除已存在的索引。
- 使用EXECUTION PLAN分析查询执行计划,优化查询性能。
- 使用物化视图(Materialized View)缓存查询结果,提高查询速度。
- 使用索引提示(Index Hint)指定查询使用的索引。
5. 数据备份与恢复:- 使用BACKUP DATABASE语句进行数据库备份。
- 使用RESTORE DATABASE语句进行数据库恢复。
sql server数据库基础知识

sql server数据库基础知识SQL Server数据库基础知识SQL Server是一种基于关系型数据库技术开发的数据库管理系统,是Microsoft旗下的重要产品之一。
它是一种可靠性高、安全性好、性能强大的数据库管理软件,被广泛应用于企业的数据管理、业务处理及信息分析等方面。
为了更好地使用SQL Server,需要了解一些基础知识。
以下将从以下几个方面介绍SQL Server数据库的基础知识。
一、SQL Server的安装和配置SQL Server的安装和配置需要几个关键步骤,包括选择目标安装路径和实例名,设置SQL Server的身份验证方式(Windows身份验证或Windows和SQL Server身份验证),设置SQL Server的安全配置选项等等。
此外,在SQL Server的安装过程中还需要注意一些特殊的安装选项。
当SQL Server安装完成后,需要配置SQL Server的一些关键服务、网络配置、数据库引擎等,以确保SQL Server正常工作。
二、SQL Server数据库结构SQL Server的数据库结构包括多个对象,其中最基础的对象是数据库和表。
数据库是一个逻辑容器,用于存储数据和它们之间的关系,它可被视为一组关联数据的集合。
而表则是一种数据结构,用于存储数据。
表有很多列,每个列包含一个数据类型和一个有意义的名称。
此外,SQL Server还包括其他对象,如视图、存储过程、函数、触发器和索引等,这些对象在相关领域中也具有非常重要的作用。
三、SQL Server中的数据类型SQL Server支持多种数据类型,包括数值类型、字符类型、二进制类型、日期和时间类型等等。
在设计数据库结构时,选择适当的数据类型非常重要,它决定了数据在存储和检索过程中的准确性和有效性。
四、SQL Server中的数据逻辑操作SQL Server支持多种数据逻辑操作,包括增、删、改、查等等。
SQLServer基础教程PPT课件

. 2024/10/14
第6页
文件组
文件组就是文件的逻辑集合。为了方便数据的管理和分配, 文件组可以把一些指定的文件组合在一起。
DBCC SHRINKDFILE命令的基本语法形式如下:
DBCC SHRINKFILE ('file_name', target_size)
. 2024/10/14
第32页
使用SQL Server Management Studio
. 2024/10/14
第33页
修改数据库文件
用户可以根据需要使用ALTER DATABASE语句修改数据 库中指定的文件。这些修改操作包括增加数据文件、在指 定的文件组中增加指定文件、增加日志文件、删除指定的 文件以及修改指定的文件等。增加数据文件、修改指定的 文件等操作已经讲过了,下面通过一些示例讲述有关数据 库文件的其他操作。
. 2024/10/14
第14页
数据库选项
设置数据库选项是定义数据库状态或特征的方式,例如可 以设置数据库的状态为EMERGENCY。每一个数据库都 有许多选项,可以使用ALTER DATABASE语句中的SET 子句来设置这些数据库选项。需要注意的是,使用 Microsoft SQL Server Management Studio工具只能设 置其中大多数的选项。下面,首先介绍Microsoft SQL Server 2008系统提供的数据库选项,然后讲述如何设置 这些选项。
. 2024/10/14
第17页
【SQLServer操作】SQLServer安装使用入门教程

【SQLServer操作】SQLServer安装使⽤⼊门教程博主⽤的软件是SQL Server Express 2019
1、sql server 安装完成后如何启动
2、SQL Server⾝份认证⽅式登录失败的解决⽅案
3、修改SQL Server默认⽤户名和密码
4、sql Server 连接数据库教程
PS:
该教程第三步操作为:在表上右键-编辑表脚本为-INSERT
第三步可能会遇到⼀个问题,就是点击执⾏后结果窗格界⾯只有“信息”,不显⽰“结果”。
这是因为第三步操作是INSERT,只有SELECT操作才会显⽰结果。
删除和修改只会显⽰影响⾏数。
所以第四步实现步骤为:在表上右键-编辑表脚本为-SELECT,就可以看到“结果窗格”了。
5、SQL Server 2008安装和数据库实例创建操作
7、重装出现:“SQL 2005此计算机上已经安装了同名实例”导致安装失败。
sqlserver简明教程

sqlserver简明教程SQL Server是一款由微软开发的关系型数据库管理系统。
它广泛应用于企业级应用程序和网站开发中,为用户提供高效可靠的数据存储和管理。
本文将为您介绍SQL Server的基本概念、数据操作、查询语句和常见问题解答,帮助您快速上手和使用SQL Server。
一、SQL Server的基本概念SQL Server是一种关系型数据库管理系统,它使用结构化查询语言(SQL)来管理和操作数据库。
它具有以下特点:1. 安全性:SQL Server提供了多种安全机制,如用户和角色管理、权限控制等,保护数据库中的数据免受未经授权的访问。
2. 可扩展性:SQL Server支持水平和垂直扩展,可以根据需求增加硬件资源或使用集群来提高数据库的性能和可用性。
3. 可靠性:SQL Server采用了数据备份、事务日志和容错机制等技术,确保数据的完整性和可恢复性。
4. 高性能:SQL Server优化了查询执行计划和索引机制,提供了一系列性能优化工具和技术,以提高数据库的查询和操作效率。
二、SQL Server的数据操作SQL Server使用SQL语句来操作数据库中的数据。
常见的数据操作包括:1. 创建数据库和表:使用CREATE DATABASE和CREATE TABLE 语句来创建数据库和表结构。
2. 插入数据:使用INSERT INTO语句将数据插入到表中。
3. 更新数据:使用UPDATE语句修改表中的数据。
4. 删除数据:使用DELETE FROM语句删除表中的数据。
5. 查询数据:使用SELECT语句查询表中的数据。
三、SQL Server的查询语句SQL Server提供了丰富的查询语句,可以用于从数据库中检索特定的数据。
常见的查询语句包括:1. SELECT语句:用于从一个或多个表中检索数据,并可以通过WHERE子句进行条件过滤。
2. JOIN语句:用于将多个表连接起来,根据关联字段进行数据的匹配和关联查询。
sql server数据库的使用方法

sql server数据库的使用方法使用SQL Server 数据库,需要先安装SQL Server 数据库软件,然后创建数据库、表等对象,并执行SQL 语句对数据进行操作。
以下是一些基本的步骤:1.安装SQL Server 数据库软件:可以从微软官网下载SQL Server 数据库软件的安装包,并按照安装向导的指引完成安装。
2.创建数据库:在SQL Server Management Studio 中,可以通过右键单击“数据库”节点,选择“新建数据库”来创建一个新的数据库。
在弹出的“新建数据库”窗口中,指定数据库的名称、大小、文件组等信息,并点击“确定”按钮完成创建。
3.创建表:在SQL Server Management Studio 中,可以通过右键单击“表”节点,选择“新建表”来创建一个新的表。
在弹出的“新建表”窗口中,定义表的列名、数据类型等信息,并点击“确定”按钮完成创建。
4.执行SQL 语句:在SQL Server Management Studio 中,可以通过右键单击要操作的数据库节点,选择“新建查询”来打开一个新的查询窗口。
在查询窗口中输入SQL 语句,并点击“执行”按钮来执行SQL 语句。
5.查询数据:可以使用SELECT 语句查询数据库中的数据。
例如,要查询名为“employees”的表中所有员工的姓名和年龄,可以使用以下SQL 语句:sqlSELECT name, age FROM employees;6.更新数据:可以使用UPDATE 语句更新数据库中的数据。
例如,要将名为“employees”的表中年龄为30 的员工年龄更新为31,可以使用以下SQL 语句:sqlUPDATE employees SET age = 31WHERE age = 30;7.删除数据:可以使用DELETE 语句删除数据库中的数据。
例如,要删除名为“employees”的表中年龄大于等于50 的员工,可以使用以下SQL 语句:sqlDELETE FROM employees WHERE age >= 50;8.创建索引:可以使用CREATE INDEX 语句创建索引,以提高查询速度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一步一步学习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组装成我们前台需要的数据集格式/// <summary>/// 按天统计各个部门的交易数据/// </summary>/// <param name="tradeDateKey">日期的键值</param>/// <returns></returns>public CellSet Count(int tradeDateKey){StringBuilder mdxBuilder = new StringBuilder();mdxBuilder.Append("WITH MEMBER [Measures].[Total Orders Count] AS 'SUM([Measure s].[Total Orders] )' ");mdxBuilder.Append(" MEMBER [Measures].[Total Amount Count] AS 'SUM([Measures].[T otal Amount])'");mdxBuilder.Append(" MEMBER [Measures].[Total Money Count] AS 'SUM([Measures].[Tot al Money])'");mdxBuilder.Append(" MEMBER [Measures].[Un Paid Cancel Amount Count] AS 'SUM([Me asures].[Un Paid Cancel Amount])'");mdxBuilder.Append(" MEMBER [Measures].[Un Paid Cancel Money Count] AS 'SUM([Meas ures].[Un Paid Cancel Money])'");mdxBuilder.Append(" MEMBER [Measures].[Paid Cancel Amount Count] AS 'SUM([Measur es].[Paid Cancel Amount])'");mdxBuilder.Append(" MEMBER [Measures].[Paid Cancel Money Count] AS'SUM([Measure s].[Paid Cancel Money])'");mdxBuilder.Append(" SELECT { [Measures].[Total Orders Count], [Measures].[Total Amou nt 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 Mo ney Count]} ON COLUMNS,");mdxBuilder.Append(" {[Department].[Dep Code Alternate Key].Members} ON ROWS");mdxBuilder.Append(" FROM [Data Center DW]");mdxBuilder.Append(" WHERE ([Time].[TimeKey].["+tradeDateKey+"])");return DBServer.AnalysisServer.ExecuteCellset(mdxBuilder.ToString());}/// <summary>/// 按天统计各个游戏单个部门的交易数据/// </summary>/// <param name="tradeDateKey">日期的键值</param>/// <returns></returns>public CellSet Count(int tradeDateKey,int departmentKey){StringBuilder mdxBuilder = new StringBuilder();mdxBuilder.Append("WITH MEMBER [Measures].[Total Orders Count] AS 'SUM([Measure s].[Total Orders] )' ");mdxBuilder.Append(" MEMBER [Measures].[Total Amount Count] AS 'SUM([Measures].[T otal Amount])'");mdxBuilder.Append(" MEMBER [Measures].[Total Money Count] AS 'SUM([Measures].[Tot al Money])'");mdxBuilder.Append(" MEMBER [Measures].[Un Paid Cancel Amount Count] AS 'SUM([Me asures].[Un Paid Cancel Amount])'");mdxBuilder.Append(" MEMBER [Measures].[Un Paid Cancel Money Count] AS 'SUM([Meas ures].[Un Paid Cancel Money])'");mdxBuilder.Append(" MEMBER [Measures].[Paid Cancel Amount Count] AS 'SUM([Measur es].[Paid Cancel Amount])'");mdxBuilder.Append(" MEMBER [Measures].[Paid Cancel Money Count] AS'SUM([Measure s].[Paid Cancel Money])'");mdxBuilder.Append(" SELECT { [Measures].[Total Orders Count], [Measures].[Total Amou nt 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 Mo ney Count]} ON COLUMNS,");mdxBuilder.Append(" {[Game].[Game Code Alternate Key].Members} ON ROWS");mdxBuilder.Append(" FROM [Data Center DW]");mdxBuilder.Append(" WHERE ([Time].[TimeKey].[" + tradeDateKey + "],[Department].[Di m Department].["+departmentKey.ToString()+"])");return DBServer.AnalysisServer.ExecuteCellset(mdxBuilder.ToString());}/// <summary>/// 填充按部门统计的数据/// </summary>/// <param name="model"></param>/// <param name="timeKey"></param>public void Fill(DepartmentTotalModel model, DateTime time, int timeKey){CellSet cellSet = new DepartmentTotalDac().Count(timeKey);DepartmentTotalModel.FactGameTradeDataRow newRow;for (int i = 1; i < cellSet.Axes[1].Positions.Count; i++){newRow = model.FactGameTradeData.NewFactGameTradeDataRow();newRow.Department = cellSet.Axes[1].Positions[i].Members[0].Caption;newRow.TradeDate = time;for (int j = 0; j < cellSet.Axes[0].Positions.Count; j++){if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Total Orders Count] "){newRow.TotalOrders = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Total Amount C ount]"){newRow.TotalAmount = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Total Money C ount]"){newRow.TotalMoney = TypeParse.ToDecimal(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Un Paid Cance l Amount Count]"){newRow.UnPaidCancelAmount = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Un Paid Cance l Money Count]"){newRow.UnPaidCancelMoney = TypeParse.ToDecimal(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Paid Cancel Am ount Count]"){newRow.PaidCancelAmount = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Paid Cancel Mo ney Count]"){newRow.PaidCancelMoney = TypeParse.ToDecimal(cellSet[j, i].FormattedValue);}}model.FactGameTradeData.AddFactGameTradeDataRow(newRow);}}/// <summary>/// 填充按游戏和部门交叉统计的数据/// </summary>/// <param name="model"></param>/// <param name="timeKey"></param>/// <param name="depKey"></param>public void Fill(GameByDepartmentTotalModel model,DateTime time,int timeKey,string dep, int depKey){CellSet cellSet = new GameByDepartmentTotalDac().Count(timeKey, depKey);GameByDepartmentTotalModel.FactGameTradeDataRow newRow;for (int i = 1; i < cellSet.Axes[1].Positions.Count; i++){newRow = model.FactGameTradeData.NewFactGameTradeDataRow();newRow.Game = cellSet.Axes[1].Positions[i].Members[0].Caption;newRow.Department = dep;newRow.TradeDate = time;for (int j = 0; j < cellSet.Axes[0].Positions.Count; j++){if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Total Orders Count] "){newRow.TotalOrders = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Total Amount C ount]"){newRow.TotalAmount = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Total Money C ount]"){newRow.TotalMoney = TypeParse.ToDecimal(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Un Paid Cance l Amount Count]"){newRow.UnPaidCancelAmount = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Un Paid Cance l Money Count]"){newRow.UnPaidCancelMoney = TypeParse.ToDecimal(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Paid Cancel Am ount Count]"){newRow.PaidCancelAmount = TypeParse.ToInt32(cellSet[j, i].FormattedValue);}else if (cellSet.Axes[0].Positions[j].Members[0].Name == "[Measures].[Paid Cancel Mo ney Count]"){newRow.PaidCancelMoney = TypeParse.ToDecimal(cellSet[j, i].FormattedValue);}}model.FactGameTradeData.AddFactGameTradeDataRow(newRow);}}好了,目前为止,我们已经从多维数据库里面返回我们需要统计的数据了,爱怎么展现就怎么展现吧。