sql2005如何实现数据仓库仓库管理信息系统开发发

数据仓库(2)
关联文章:
前言:有关数据仓库的研究,并不仅仅停留在理论上。目前,几种主要的RDBMS产品,如Oracle、SQL Server、Informix和 Sybase等,都可以为用户提供数据仓库项目的开发工具;而一些通用的应用程序开发平台,如Delphi等,也能对数据仓库项目的开发提供有效的支持。我们将使用Microsoft SQL Server 2005提供的数据仓库工具SSAS对数据仓库中的数据进行OLAP(联机分析);创建Analysis Services 项目,在SSAS项目中定义数据源、定义数据源视图,修改表的默认名称;定义多维数据集,检查多维数据集和维度属性,浏览已部署的多维数据集;利用SSAS工具对前面创建的数据仓库中的数据进行OLAP联机分析。
一、问题背景
某电子商务网站主要销售电子类产品,产品又分为几个大类别,包括:电脑类、手机类、键盘类等,每个类别内又细分为几个小类别,各类别下又有诸多的商品,每一个商品都有一个唯一的商品编号。用户可以通过注册成为会员来进行商品的下单购买。用户下单后会由系统自动产生一个唯一的订单号。
在前面所建立的数据仓库的基础上,创建AS项目,定义数据源、数据源视图、多维数据集,并浏览多维数据集,进行OLAP联机分析。
二、操作过程
1、分析在【全国】范围内各类商品的销售量和销售额
分析结果:
笔记本电脑的销售量最高,笔记本内存条的销售量最低
笔记本电脑的销售额最高,笔记本内存条的销售额最低
决策建议:
在全国范围内,应当提高笔记本电脑商品的进货量,减少笔记本内存条的进货量
可以适度减低笔记本电脑的售价,以达到该类商品的薄利多销,进一步提高该类商品的销售额获得更大的利润。
2、分析在【福州市】范围内各类商品的销售量和销售额
分析结果:
笔记本电脑的销售量最高,安卓手机类的销售量最低
笔记本电脑的销售额最高,安卓手机类的销售额最低
决策建议:
在福州市范围内,应当提高笔记本电脑商品的进货量,减少安卓手机类的进货量
可以适度减低笔记本电脑的售价,以达到该类商品的薄利多销,进一步提高该类商品的销售额获得更大的利润。
3、分析在【福州市范围—所有学历】内各类商品的销售量和销售额
初中学历:
笔记本电脑销售量最高,销售额最高。
有线键盘类没有销售量。
高中学历:
笔记本电脑销售最高,销售额最高。
安卓手机类没有销售量。
决策建议:
在福州市范围内,
针对初中学历的消费者,应当提高笔记本电脑商品的进货量,减少安卓手机类的进货量。
可以适度减低笔记本电脑的售价,以达到该类商品的薄利多销,进一步提高该类商品的销售额获得更大的利润。对于安卓手机类的商品,应该多和学校的一些联通、移动、电信运营商合作,例如:买卡送手机的活动来促进学生对于安卓手机的消费。
针对高中学历的消费者,应当提高笔记本电脑商品的进货量,减少有线键盘类的进货量。
可以适度减低笔记本电脑的售价,以达到该类商品的薄利多销,进一步提高该类商品的销售额获得更大的利润。
4、分析在【福州市范围—初中学历】内各商品的销售量和销售额
在安卓手机类中---小米2S手机的销售量是最高,销售额最高。
在笔记本电脑中---华硕 SS51X超级笔记本电脑的销售量最高,销售额最高。
---宏基 V3-772G和索尼 SVF15A18S笔记本电脑 销售量最低。
---索尼 SVF15A18S笔记本电脑 销售额最低。
决策建议:
在福州市范围内,针对初中学历的消费者,
在安卓类手机中:应该多提供一些小米2S的进货量,并适当和一些运营商合作,以促进小米手机的销售量。
在笔记本电脑中:应该提高华硕 SS51X超级笔记本电脑的进货量,降低宏基 V3-772G和索尼 SVF15A18S笔记本电脑的进货量。
对于华硕 SS51X超级笔记本电脑可以适度降低该商品的售价,或者多做一些活动来使得商品销售量获得更高的效益。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:13710次
排名:千里之外
原创:33篇基于SQLServer2005数据仓库构建与数据挖掘_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
基于SQLServer2005数据仓库构建与数据挖掘
上传于||文档简介
&&数​据​挖​掘
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢[原创]建立Microsoft SQL Server 2005数据仓库 - Hussar - 博客园
随笔 - 23, 文章 - 2, 评论 - 51, 引用 - 4
这几天用了一下Microsoft SQL Server 200的分析服务,贴出来给大家分享一下。请多多指正。谢谢。一、需求:建立一个图书订单统计系统1、统计各个图书馆订单数量。2、统计各个图书馆订单的各个状态的数量占该图书馆的订单数量的百分比。3、同时统计原始数量和储运数量二、数据表主要的字段订单ID单位号(图书馆编号)单位(图书馆名称)原始数量储运数量最新状态(该订单当前状态)三、实现:1、打开Visual Studio 2005 新建项目,选择Analysis Services项目,选择数据源文件夹,新建数据源:新建数据源向导启动:点击上图新建出现连接配置对话框配置方法和链接数据库的配置方法相同。配置连接数据源的帐号,以后就是一路下一步:)选择数据源视图文件夹,新建一个数据源视图选择含有统计数据的表,以后就是一路下一步:)选择多维数据集文件夹,新建多维数据集也就是一个Cube设置事实表和维度表选择度量值,也就是如果是SQL就是需要count,sum等要统计的数据
& 取消所有选项,然后选择维度也就是SQL里面GROUP by的字段(这里我选择了“最新状态”和“单位”)选择如上,这个不是最终结果,后面还要手工编辑。,以后就是一路下一步:)
&通过浏览打开编辑维度。建立一个层次结构,单位在上,状态在下。
把“图书分销 订单 计数”重名名为“订单数量”
修改后如上图切换到浏览器,拖放单位到行位置。再拖放最新状态到行,最终效果如下。拖放显示的数据,也就是明细
拖放完毕效果设置显示为百分比最终效果打开Microsoft SQL Server 2005 的SQL Server Management Studio连接到分析服务新建查询,查询结果如图查询语句如下:with set [AllCount] as '[图书分销 订单].[层次结构].[单位].[安徽大学&&&& 图书馆].Children'Member [图书分销 订单].[层次结构].[单位].[安徽大学&&&& 图书馆].[合计] as 'aggregate([AllCount])'Member [所占订单数百分比] as '[订单数量]/([订单数量],[图书分销 订单].[层次结构].[单位].[安徽大学&&&& 图书馆].[合计])',format_string='#.00%'select {[Measures].[订单数量],[Measures].[储运数量],[Measures].[原始数量],[所占订单数百分比]} on columns,{[图书分销 订单].[层次结构].[单位].[安徽大学&&&& 图书馆].Children} on rowsfrom [图书馆统计]其实也不是很难哦有时间下次写在 ASP .NET 2.0里面如何显示查询结果。> xrzs的博客详情
做数据仓库的头两年,使用高配置单机 + MySQL的方式来实现所有的计算(包括数据的ETL,以及报表计算。没有OLAP)。用过MySQL自带的MYISAM和列存储引擎Infobright。这篇文章总结了自己和团队在那段时间碰到的一些常见性能问题和解决方案。
P.S.如果没有特别指出,下面说的mysql都是指用MYISAM做存储引擎。
1.利用已有数据避免重复计算
业务需求中往往有计算一周/一个月的某某数据,比如计算最近一周某个特定页面的PV/UV。这里出现的问题就是实现的时候直接取整周的日志数据,然后进行计算。这样其实就出现了重复计算,某一天的数据在不同的日子里被重复计算了7次。
解决办法非常之简单,就是把计算进行切分,如果是算PV,做法就是每天算好当天的PV,那么一周的PV就把算好的7天的PV相加。如果是算UV,那么每天从日志数据取出相应的访客数据,把最近七天的访客数据单独保存在一个表里面,计算周UV的时候直接用这个表做计算,而不需要从原始日志数据中抓上一大把数据来算了。
这是一个非常简单的问题,甚至不需要多少SQL的知识,但是在开发过程中往往被视而不见。这就是只实现业务而忽略性能的表现。从小规模数据仓库做起的工程师,如果缺乏这方面的意识和做事规范,就容易出现这种问题,等到数据仓库的数据量变得比较大的时候,才会发现。需求决定能力。
2.case&when关键字的使用方法
case when这个关键字,在做聚合的时候,可以很方便的将一份数据在一个SQL语句中进行分类的统计。举个例子,比如下面有一张成绩表(表名定为scores):
现在需要统计小张的平均成绩,小明的平均成绩和小明的语文成绩。也就是最终结果应该是:
SQL实现如下:
如果现在这个成绩表有1200万条数据,包含了400万的名字 * 3个科目,上面的计算需要多长时间?我做了一个简单的测试,答案是5.5秒。
而如果我们在name列上面加了索引,并且把sql改成下面的写法:
这样的话,只需要0.05秒就能完成。
那么如果有索引的话,前面的一种实现方法会不会变快?答案是不会,时间还是跟原来一样。
而如果没有索引,后面一种写法会用多少时间?测试结果是3.3秒。
把几种情况再理一遍:
之所以后面一种写法总是比前面一种写法快,不同之处就在于是否先在where里面把数据过滤掉。用where有两个好处:一个是有索引的话就能使用,而case when很有可能用不到索引(关于索引的具体使用这里就不详细解释了,至少在这个例子中前一种写法没有用到索引),第二是能够提前过滤数据,哪怕没有索引,前一种写法扫描了三遍全表的数据(做一个case when扫一遍),后面的写法扫描一遍全表,把数据过滤了之后,case when就不用过这么多数据量了。
而实际情况是,开发经常只是为了实现功能逻辑,而习惯了在case when中限制条件取数据。这样在出现类似例子中的需求时,没有把应该限制的条件写到where里面。这是在实际代码中发现最多的一类问题。
关于文中原作者认为的:前一种写法扫描了三遍全表的数据(做一个case when扫一遍)
个人存疑,有待考证,理论上执行计划不会这样弱:
explain select SQL_NO_CACHE
avg (case when cate1 ='二手市场' then pv end) as es,
avg (case when cate1 ='宠物' then pv end) as cw,
avg (case when cate1 ='房产信息' then pv end) as fc
from pagetype_lite_201408 where recDate &= '' and recDate &= '';
explain select SQL_NO_CACHE
avg (case when cate1 ='二手市场' then pv end) as fc,
avg (case when cate1 ='宠物' then pv end) as es,
avg (case when cate1 ='房产信息' then pv end) as zp
from pagetype_lite_201408 where recDate &= '' and recDate &= ''
and cate1 in('二手市场','宠物','房产信息');
1 SIMPLE t_lj_pagetype_lite_201408 ALL Index_recDate_cate,Index_recDate_city
3438530 Using where
可以看到,两个 SQL 的执行计划一样,并没有出现一个三次扫描,一个一次。
3.分页取数方式
在数据仓库中有一个重要的基础步骤,就是对数据进行清洗。比如数据源的数据如果以JSON方式存储,在mysql的数据仓库就必须将json中需要的字段提取出来,做成单独的表字段。这个步骤用sql直接处理很麻烦,所以可以用主流编程语言(比如java)的json库进行解析。解析的时候需要读取数据,一次性读取进来是不可能的,所以要分批读取(相当于分页了)。
最初的实现方式就是标记住每次取数据的偏移量,然后一批批读取:
这样的代码,在开始几句sql的时候执行速度还行,但是到后面会越来越慢,因为每次要读取大量数据再丢弃,其实是一种浪费。
高效的实现方式,可以是用表中的主键进行分页。如果数据是按照主键排序的,那么可以是这样(这么做是要求主键的取值序列是连续的。假设主键的取值序列我们比较清楚,是从0的连续值):
就算数据不是按主键排序的,也可以通过限制主键的范围来分页。这样处理的话,主键的取值序列不连续也没有太大问题,就是每次拿到的数据会比理想中的少一些,反正是用在数据处理,不影响正确性:
这样的话,由于主键上面有索引,取数据速度就不会受到数据的具体位置的影响了。
4.索引使用
索引的使用是关系数据库的SQL优化中一个非常重要的主题,也是一个常识性的东西。但是工程师在实际开发中往往是加完索引就觉得万事大吉了,也不去检查索引是否被正确的使用了,所以还是简单的提一下关于索引的案例。
还是举例说明。假如有一个电商网站,积累了某一天的访问日志表item_visits,每条记录表示某一个商品(item)被访问了一次,包括访问者的一些信息,比如用户的id,昵称等等,有1200多万条数据。示例如下:
商品本身有一个商品表items,包含800多种商品,表名了商品名字和所属种类:
现在要计算每个商品种类(item_type)被访问的次数。sql的实现不难:
然后既然是join,那么在join key上需要加索引。这时候有的工程师就随手在items的item_id上面加了索引。跑了一下,需要95秒。(p.s.在我的测试场景中,这个日志表有20多个字段,所以虽然这个表的记录数跟问题2中的那个表的记录数差不多,但是大小会差很多,了解这个背景可以解释这里的计算用时为什么会远远超过问题2中的用时。)
前面说是随手加的索引,其实就已经在暗示加的有问题。那我们在item_visit的item_id上面再加个索引,需要跑多久?80秒。
用explain查一下执行计划:
注意到这里是以日志表作为驱动表的(即从日志表开始扫描数据,而商品表是nest loop的内层嵌套),这样的话两个表的item_id都用到了,商品表的索引做join,日志表的索引可以做覆盖索引(这个覆盖索引就是比前面快的原因)。看上去挺“划算”的,实际上由于放弃了item小表驱动,速度反而慢了很多。
接下来用straight_join的连接方式把这个sql强制改成小表驱动:
再来看执行计划:
虽然这样一来商品表的索引就用不到了,但是这其实是正确的做法(当然如果条件允许,也未必要用straight join,把商品表上的索引去掉其实是最合理的做法,这样mysql就会自己选择正确的执行计划了。),测试下来只需要8秒。原因就在于大表驱动时,根据标准的Block Nested Loop Join算法,小表的数据会被反复循环读取。当然实际上小表是可以进cache而不用重复读取的,但是由于mysql只认索引有没有用上,所以还是会反复读取小表(这个问题在的35页也有描述)。而如果小表驱动,就不会有这个问题。
后续更新:严格来说,这个场景有一个限制条件,就是大表中的商品item_id只占全部item_id的一部分。如果大表中的商品item_id几乎均匀覆盖所有item_id,那么无论join时用哪个表的索引,其实运行时间都差不多。原来做实验的时候忽视了这一点,后来重新尝试的时候发现了这个问题。特此补充。
小结一下:这里说了两个问题,一个是添加索引的时候需要想想如何去加,在不是很肯定的时候可以看看执行计划,而不是教条式的知道“join要加索引”。学习sql优化切忌只是背几个tips。另外就是mysql在选择执行计划的时候也不一定能够做到最好,如果发现mysql的执行计划有很大问题,那么就需要工程师进行调整,mysql中一样有类似oracle中的hint帮助我们达到想要的目的,就像例子中的straight_join。
最后还需要注意的是覆盖索引和强制索引的问题。
5.过多的join
在mysql中,需要join的表如果太多,会对性能造成很显著的下降。同样,举个例子来说明。
首先生成一个表(命名为test),这个表只有60条记录,6个字段,其中第一个字段为主键:
然后做一个查询:
也就是说让test表跟自己关联。计算的结果显然是60,而且几乎不费时间。
但是如果是这样的查询(十个test表关联),会花费多少时间?
答案是:肯定超过5分钟。因为做了实际测试,5分钟还没有出结果。这里的测试为了方便起见,用了一个表自己关联10次,实际上如果是不同的表,效果也是一样的。
那么mysql到底在干什么呢?用show processlist去看一下运行时情况:
原来是处在statistics的状态。这个状态,根据mysql的解释是在根据统计信息去生成执行计划,当然这个解释肯定是没有追根溯源。实际上mysql在生成执行计划的时候,其中有一个步骤,是确定表的join顺序。默认情况下,mysql会把所有join顺序全部排列出来,依次计算各个join顺序的执行代价并且取最优的那个。这样一来,n个表join会有n!种情况。十个表join就是10!,大概300万,所以难怪mysql要分析半天了。
而在实际开发过程中,曾经出现过30多个表关联的情况(有10^32种join顺序)。一旦出现,花费在statistics状态的时间往往是在1个小时以上。这还只是在表数据量都非常小,需要做顺序分析的点比较少的情况下。至于出现这种情况的原因,无外乎我们需要计算的汇总报表的字段太多,需要从各种各样的地方计算出来数据,然后再把数据拼接起来,报表在维护过程中不断添加字段,又由于种种原因没有去掉已经废弃的字段,这样字段必定会越来愈多,实现这些字段计算就需要用更多的临时计算结果表去关联到一起,结果需要关联的表也越来越多,成了mysql无法承受之重。
这个问题的解决方法有两个。从开发角度来说,可以控制join的表个数。如果需要join的表太多,可以根据业务上的分类,先做一轮join,把表的数量控制在一定范围内,然后拿到第一轮的join结果,再做第二轮全局join,这样就不会有问题了。从运维角度来说,可以设置optimizer_search_depth这个参数。它能够控制join顺序遍历的深度,进行贪婪搜索得到局部最优的顺序。一般有好多个表join的情况,都是上面说的相同维度的数据需要拼接成一张大表,对于join顺序基本上没什么要求。所以适当的把这个值调低,对于性能应该说没有影响。
6.列存储引擎Infobright
Infobright是基于mysql的存储引擎,具有列存储/列压缩和知识网格等特性,比较适合数据仓库的计算。使用起来也不需要考虑索引之类的问题,非常方便。不过经过一段时间的运用,也发现了个别需要注意的问题。
一个问题和MYISAM类似,不要取不需要的数据。这里说的不需要的数据,包括不需要的列(Infobright的使用常识。当然行存储也要注意,只不过影响相对比较小,所以没有专门提到),和不需要的行(行数是可以扩展的,行存储一行基本上都能存在一个存储单元中,但是列存储一列明显不可能存在一个存储单元中)。
第二个问题,就是Infobright在长字符检索的时候并不给力。一般来说,网站的访问日志中会有URL字段用来标识访问的具体地址。这样就有查找特定URL的需求。比如我要在cnblog的访问日志中查找到我的blog的访问次数:
类似这样在一个长字符串里面检索子串的需求,Infobright的执行时间测试下来是mysql的1.5-3倍。
至于速度慢的原因,这里给出一个简要的解释:Infobright作为列式数据库使用了列存储的常用特性,就是压缩(列式数据库的压缩率一般要能做到10%以内,Infobright也不例外)。另外为了加快查找速度,它还使用了一种叫知识网格检索方式,一般情况下能够极大的减少需要读取的数据量。关于知识网格的原理已经超出了本篇文章的讨论篇幅,可以看了解。但是在查询url的时候,知识网格的优点无法体现出来,但是使用知识网格本身带来的检索代价和解压长字符串的代价却仍然存在,甚至比查询一般的数字类字段要来的大。
然后根据其原理可以给出一个能够说明问题的解决方法(虽然实用度不算高):如果整个表里面就有一个长字符串字段查询起来比较麻烦,可以把数据根据这个字段排序后再导入。这样一来按照该字段查询时,通过知识网格就能够屏蔽掉比较多的“数据包”(Infobright的数据压缩单元),而未排序的情况下符合条件的数据散布在各个“数据包”中,其解压工作量就大得多了。使用这个方法进行查询,测试下来其执行时间就只有mysql的0.5倍左右了。
[1]&数据仓库中的sql性能优化(MySQL篇)
人打赏支持
码字总数 338755
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥
& 开源中国(OSChina.NET) |
开源中国社区(OSChina.net)是工信部
指定的官方社区& & & & 例如,设想一个&客户&维度。关系型源表有八列: && & 客户键&& & 客户名称&& & 年龄&& & 性别&& & 电子邮件&& & 城市&& & 地区&& & 国家& & 相应的 Analysis Services 维度应具有七个属性:&& & 客户(整型键、以&客户名称&作为名称)&& & 年龄、性别、电子邮件、城市、地区、国家& & 数据中存在一种自然层次结构,{国家、地区、城市、客户}。出于导航目的,应用程序开发人员可以选择创建第二个层次结构:{年龄、性别}。商务用户并没有看到这两个层次结构行为方式之间有何区别,但是,自然层次却可以从深谙层次关系的索引结构(对用户隐藏)中受益。& & 新维度结构的最大优势在于:&& & 维度不需要加载到内存中。因此,维度可以非常巨大(经测试,Beta 2 可支持上千万名成员)。&& & 用户可以添加和删除属性层次结构,而不必再重新处理维度。属性层次索引结构属轻型结构,在后台计算,并不影响多维数据集查询。&& & 重复的维度信息被去除;使得维度更加轻巧。&& & 由于引擎为并行处理创建了机会,因此维度处理信息性能得到了改进。维度类型& & Analysis Services 2000 中包括两种维度类型:常规层次类型和父子类型。Analysis Services 2005 新增了一些重要的新维度结构。其中有些结构的名称是临时的,但是,这些名称都是 BI 文献中较为通用的。&& & 角色扮演:维度扮演着一些重要角色,具体哪些角色要依上下文而定。例如,[时间] 维度可能会被 [订购日期] 和 [发货日期] 重用。在 2005 中,扮演着某些角色的维度只需存储一次,便可多次使用。这样便可使所需的硬盘空间和处理时间降至最低。&& & 事实:事实或&退化&维度与事实(如事务编号)具有一一对应的关系。从本质上讲,退化维度不能用于分析,但可用作标识,以定位特定的事务,或识别组成聚合单元的事务。&& & 引用:维度并不能够直接和事实数据表发生联系,但可通过另一维度间接发生联系。这方面的原型示例有 [地理位置] 引用维度,它同时关联了 [客户] 和 [销售团队] 两个维度。引用维度可能由数据提供程序提供,并包括在多维数据集中,不必再修改事实数据。&& & 数据挖掘:数据挖掘维度支持从数据挖掘模型(包括群集、决策树和关联规则)生成的维度。&& & 多对多:这些维度有时被称为多值维度。在大部分维度中,事实能且只能连接一个维度成员。多对多维度解决了多维度成员问题。例如,银行储蓄客户可以有多个帐户(支票、储蓄);一个帐户可以有多个客户 (Mary Smith、John Smith)。[客户] 维度有多个成员,这些成员都与一个帐户事务相关联。在维度不能够直接关联事实数据表时,2005 多对多维度支持复杂的分析,并扩展了维度模型,使之超越了传统的星形架构。量度组和透视& & Analysis Services 2005 引入了&量度组&和&透视&,以用来简化分析数据库的设计和部署。在 Analysis Services 2000 中,鼓励用户构建多个物理多维数据集。每个多维数据集相当于一个特定的维度,通常还相当于一个特定的关系事实数据表。虚拟多维数据集以一种对商务用户透明,而对开发人员设计又不太复杂的方式,合并多个事实数据表。& & 在 2005 中,最通用的方案将具有一个包含一个或多个&量度组&的物理多维数据集。量度组中的事实数据具有特定的细化程度(由维度层次的交叉点定义)。查询根据需要被自动定向到不同的量度组。在物理层上,分区(与 Analysis Services 2000 分区类似)在&量度组&上定义。& & 大型应用程序将为用户提供大量的维度、量度组,而且还会给导航带来难度。在&多维数据集编辑器&的&透视&选择卡中定义的&透视&可以创建一个多维数据集的子集&视图&rdqu& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & o;。为了要提供一定程度的个性化,可以将安全性角色与适合该角色的透视集相关联。& & 我们希望大部分的 Analysis Services 2005 数据库都包含一个具有多个量度组和多个透视的多维数据集。& & 对多维数据集事实结构和查询性能所做的其他改进有:&& & 量度可以为空;在 SQL SERVER 2000 中,"null" 量度被当作 0 处理。&& & 适当的多维数据集分区使得&非重复计数度量值&的查询性能得到了改进,性能值增加了几个数量级。&& & 对备选数据库管理系统的访问由可扩展的部件基础结构提供。RDBMS 的部件用于指定如何为关系查询和写入优化 SQL 语句。用户可以轻松添加其他关系系统的部件;部件被作为 XSL 文件实现。计算和分析& & 使用分析服务器(如 Analysis Services)最大的争议之一就是其集中定义复杂计算的能力。Analysis Services 一直以来都能交付丰富的分析数据,但对某些复杂概念却很难实现。& & 其中一种概念就是半累积量度。最通用的量度值(如 [销售额])能够清晰地汇总所有维度:长期以来的 [总销售额] 是指所有产品、所有客户在所有时间内的销售总额。相比之下,半累积量度值可能在某些维度中是累积的,而在其他的维度却不是累积的。最常见的一个例子便是余额,如仓库中的货品数。很显然的,昨天和今天这两天的余额总计肯定不等于昨天的余额加上今天的余额。相反,它可能是期末余额,虽然在有些情况下它是期初余额。在 Analysis Services 2000 中,您必须定义一个复杂的 MDX 计算,帮能交付正确的度量值。而在 Analysis Services 2005 中,期初余额和期末余额都是本机聚合类型。& & 非重复计数度量值在 2005 中也得到了很大的改进。现在,非重复计数度量值可定义在字符串数据上,而查询可以被定义为在任意集合上执行&非重复计算&。而 Analysis Services 2000 只能够在预先定义的层次结构上执行非重复计算。& & &时间智能&向导将创建一个时间计算维度,其中包含该期间与最后期间的对比计算,可以移动平均值,同时还可创建其他的通用时间计算构造。MDX 脚本& & 多维表达式 (MDX: MultiDimension Expression) 是一种功能非常强大的语言,可用于定义 Analysis Services 2000 计算和安全规则。MDX 功能强大,但也也很复杂。Analysis Services 2005 利用被简化了结构和语法的&MDX 脚本&定义了一种新的计算模型。& & MDX 还是 Analysis Services 系统中的查询语言。查询工具(如 Excel 透视表)根据用户的&拖放&行为生成 MDX 查询。MDX 的这种使用与&MDX 脚本&无关;&MDX 脚本&用于服务器定义的对象,如计算成员和单元计算,并非用于用户查询。& & 在定义 Analysis Services 2005 多维数据集时,其中只包含结构,而没有数据。&MDX 脚本&是多维数据集结构的组成部分。一般情况下都会定义一个默认的&MDX 脚本&命令,用来计算默认的聚合。默认的&MDX 脚本&命令只包含一条语句:C& & 在多维数据集完全处理之后,应用默认 MDX Script. 之前,多维数据集将包含叶层级的数据,但不包含聚合。在应用单一语句的默认&MDX 脚本&时,将计算和存储聚合。& & &MDX 脚本&语句包含以下命令,用分号隔开:&& & 限制语句作用域的作用域语句&& & 公式和值分配&& & 计算成员定义&& & 命名集定义& & 在多维数据集的设计中,Business Intelligence Development Studio 的用户界面和&MDX 脚本&均(其中包括计算成员和命名组)在&计算&视图中构建。&MDX 脚本&可以在提供语法向导的默认&& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & 计算表单&视图中查看,也可以在&计算脚本&视图中查看,这一视图把&MDX 脚本&显示为一组用分号分隔的命令。您可以在这两个视图间来回切换,虽然&表单&视图的显示要求整个脚本的语法必须正确。& & &MDX 脚本&具有几个主要功能:&& & 脚本遵循过程模型:依次应用语句。&MDX 脚本&开发人员不需要再受传递次序的烦恼,他们得到充分的保护,不必再担心会编写出引起无限制递归的脚本。&& & 可包含计算:SCOPE 语句使您可以针对多维数据集的特定区域,定义一个或多个计算。例如:SCOPE ([Customers].[Country].[Country].[USA]);& & [Measures].[Sales] = 100;& & END SCOPE;&& & 作用域可以嵌套。&& & 可缓存计算:CACHE 关键字表示脚本计算结果应存储在磁盘上,而不是在执行运行时计算。在查询包含大量复杂计算的大型多维数据集时,缓存的计算可以实现非常高的查询性能。当输入缓存计算更改时,该计算便会被删除和重建。&& & 用户可以对&MDX 脚本&进行调试。您可以逐行完成&MDX 脚本&,浏览每步的多维数据集结果。存储过程& & Analysis Services 2005 引入了存储过程,来扩展用户定义功能 (UDF: User defined function) 所提供的能力。存储过程可以用任何公共语言运行时编程语言(例如 C++、Visual Basic 或 C)编写。存储过程允许一次性开发公共代码、将代码存储在一个位置,并在其他存储过程、计算和用户查询中重新使用所存储的公共代码,从而简化了数据库的开发和实施。& & 在 Analysis Services 2005 中存在两种类型的存储过程:&& & MDX 函数存储过程与任何其他的 MDX 函数相似,它提供了一种可轻松扩展 MDX 语言的机制。&& & 自定义存储过程执行特定于实施的任务,例如多维数据集处理,或更新多维数据集部分中的单元。& & 存储过程可用于执行客户端应用程序可以执行的任何任务。关键绩效指标& & Analysis Services 2005 为服务器端计算定义引入了关键绩效指示 (KPI) 框架,用来衡量您的业务。这些 KPI 将通过数据访问 API 和 Microsoft 与第三方工具,被显示在报告、门户和仪表板中。对于 Beta 2 版本而言,还没有可用于显示 KPI 的客户端工具。& & 不同的评论员和供应商用缩写 "KPI" 指代不同的概念。对于 Microsoft SQL Server Analysis Services 2005,精确定义 KPI 的过程可分为以下四个步骤:&& & 有待测量的值:物理度量值,如销售额,计算度量值,如利润,或在 KPI 中定义的计算,&& & 值目标:定义度量值目标的值(或解析为值的 MDX 表达式),&& & 状态:评估当前值状态的 MDX 表达式,其正常值范围从 -1(极差)到 +1(极佳),&& & 趋势:评估当前值趋势的 MDX 表达式。相对其目标而言,值是逐渐变好还是逐渐变坏?以下是网页上显示的一些 KPI 示例:实时商务智能& & 数据仓库和商务智能应用程序过去都是使用&过时&的或高延迟的数据,数据每月、每周或每天刷新一次。传统拥护者断言,实时 BI 是相互矛盾的,因为统计决策不需要刷新频率过高(超过每天一次)的数据。评论者忘记了一件事情,就是商务智能应深入整个企业,而不仅仅是将策略或制定的战术决策部署给少数的分析家或行政执行人员。可操作的商务智能要求低延迟的数据。& & Analysis Services 2005 为可操作的商务智能提供了新的处理选项。在 Analysis Services 2000 中,无论是多维数据集的存储模式还是分区策略,都是用&拉&模型处理。启& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & 动 Analysis Services 进程在源数据库中查找新的信息、处理可选存储的详细数据,并计算和存储聚合。& & 在 Analysis Services 2005 中仍支持&拉&模型,但结合了对低延迟商务智能异常有效的其他选项。&& & 从 DTS 管道中推出数据,或从自定义应用程序中推出数据。数据可以从 DTS 包管道直接流入 Analysis Services 分区,不用立即存储。这种方案可用于降低分析数据的延迟(和存储成本)。&& & 按主动缓存管理多维数据集,以指定延迟和性能特性管理缓存,勿需管理干涉。& & Analysis Services 多维存储的查询性能特性主宰着关系型存储。简而言之,查询针对多维 (MOLAP) 存储执行时效果最佳。其不足之处是延迟:多维存储是从其关系源向下流动的。主动缓存技术的技巧就在于能够在最小化数据延迟和管理成本的同时最大化查询性能。& & 主动缓存功能简化了管理数据过期问题的过程。如果事务发生在源数据库(如新的维度成员或新的事实事务)上,现有&缓存&便会过期。主动缓存技术提供了一种可调整的机制,可确定重新构建多维缓存的频率;指定在重新构建缓存时答复查询的方式;在不需要任何管理干涉的情况下启动过程。& & 主动缓存技术使您可以将多维数据集设置为在事务发生时,自动刷新其多维缓存。虽然 Analysis Services 处理数据速度非常快,但处理过程还是需要一些时间的。如果多维缓存处理过程没有完成,主动缓存配置便可以自动将查询重定向到相关的存储。& & 在设计主动缓存配置时,一定要谨记必须为每个多维分区都设置主动缓存。如果分区包括短时间范围(如一小时)内的数据,缓存刷新过程可能会发生的非常快。最为复杂的主动缓存配置依赖于从关系数据库发往有更新发生的 Analysis Services 的通知。Microsoft SQL Server 关系数据库支持这种通知。对于不能够提交通知的数据库,可以将 Analysis Services 配置为根据定义的查询,轮询更改。& & 主动缓存的参数有:&& & 静止期:在服务器开始处理新信息前,关系源必须处于事务空闲状态的时间量。该参数通常设置为一个小于十秒钟的值。如果在关系源上存在许多连续的更新,则应等待静止期,以针对重复性删除和重建缓存加以保护。&& & 延迟:允许用户访问过期数据的时间量。如果延迟设置为 0,则只要收到通知,用户查询就会被重定向到关系源。如果延迟设置为 600 秒,用户则只能访问十分钟前的数据。如果设置为 -1,则表示用户将一直访问过期数据,直至主动缓存处理完毕。&& & 静默覆盖间隔:更改通知与主动缓存处理开始之间的最大持续时间。如果源数据库被不断更新,此参数将覆盖&静止期&设置。&& & 强制重建间隔:当源数据库系统不能提供更新通知时,可使用此参数提供简单的主动缓存功能。如果源数据在 SQL Server RDBMS 中,则应将该参数设置为 0。数据挖掘概述& & Microsoft SQL Server 2005 Data Mining(数据挖掘)属于商务智能技术,它可帮助您构建复杂的分析模型,并使其与您的业务操作相集成。数据挖掘可回答如下问题&& & 该客户的信用风险如何?&& & 客户的特征如何?&& & 人们愿意同时购买哪些产品?&& & 下个月能卖出多少产品?& & 数据挖掘应用程序将数据挖掘模型集成到日常的业务运营之中。许多数据挖掘项目的目标是构建可供业务用户、合作伙伴和客户使用的分析应用程序,而不必理会应用程序底层的复杂计算。要实现这一目标,需要执行两个主要步骤:构建数据挖掘模型并构建应用程序。SQL Server 2005 Data Mining 使这些步骤比以往更加简单。& & Microsoft 2005 中数据挖掘功能的目标是构建具备以下特征的工具:&& & 简单易用&& & 可提供一整套的功能&& & 可轻松嵌入到产品应用程序中&& & 紧密集成其他的 SQL Server BI 技术,以及&& & 能够扩展数据挖掘应用程序的市场。& & 可以肯定,本白皮书的每位读者几乎都曾&使用&过数据挖掘应用程序。如果您已在& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & 线购得了本书或音乐,并收到了&购买此产品的其他客户&的建议,或者,如果信用卡公司要求您确认一宗可疑交易,或者,食品店在收条上打印个性化优惠券,所有这些,都是您从使用数据挖掘应用程序中得到的好处。时至今日,这种应用程序的开发已集中于解决大型公司所面临的最大问题,这些公司能够承受分析能力的匮乏以及巨额的开发费用,而这些都是过去用传统方法构建数据挖掘应用程序所需面对的。正如 Microsoft 的 OLAP 技术已推动了 OLAP 市场增长一样,我们期望能够将数据挖掘技术推广开来,使那些在过去不能开发这种应用程序的企业和部门也能够加入到其开发行列中来。& & 使用 SQL Server 2005 Data Mining 工具开发一套数据模式,然后在这些模式的基础上随意执行预测。这是所有数据挖掘的模式:开发、模式发现和模式预测。数据挖掘算法& & 所有数据挖掘工具(包括 Microsoft SQL Server 2005 Analysis Services)都采用了多种算法。当然,Analysis Services 是可扩展的;第三方 ISV 可以开发算法,并将所开发的算法无缝地融入到 Analysis Services 数据挖掘框架之中。根据数据和目标的不同,应该采用不同的算法,而且每种算法都可用于解决多个问题。& & 数据挖掘工具擅长解决多种类型的问题。下表概括了业务问题的大致分类:分析问题示例Microsoft 算法& & 分类:为案例分配预定义的级别(如&好&与&差&)&& & 信用风险分析&& & 客户流失分析&& & 客户挽留&& & 决策树&& & 贝叶斯算法&& & 神经网络& & 分割:开发一种按相似案例分组的分类方法&& & 客户资料分析&& & 邮件推销活动&& & 群集&& & 顺序群集& & 关联:相关性高级计算&& & 购物篮分析&& & 高级数据研究&& & 决策树&& & 相关规则& & 时间序列预测:预测未来&& & 预测销售&& & 预测股票价格&& & 时间序列& & 预测:根据相似案例(如现有客户)的值预测新方案(如新客户)的值&& & 提供保险率&& & 预测客户收入&& & 预测温度&& & 全部& & 偏差分析:发现案例或群体与其他案例和群体之间的差别&& & 信用卡欺骗检测&& & 网络入侵分析&& & 全部& & SQL Server 2005 中附带了最流行的数据挖掘算法。&& & Microsoft Decision Trees(决策树)通常是数据研究的起始点。它是主要的分类算法,对离散和连接属性的可预测建模效果很好。用算法构建模型时,它着眼于数据集中每个输入属性是如何影响预测属性的结果的。其目标是找到一个输入属性及其状态的组合,使您能够预测出所预测属性的输出结果。&& & Microsoft Na&ve Bayes(贝叶斯算法)能够快速构建可用于分类和预测的数据挖掘模型。如果知道可预测属性的每种状态,便可计算出输入属性每个可能状态的概率。这种算法只支持离散(不连续)属性,它认为所有输入属性都是彼此独立的(前提是知道可预测属性)。因为贝叶斯算法的计算速度非常快,因此在初始数据研究阶段通常会选择这种算法进行分类和预测问题。&& & Microsoft Clustering 使用迭代技术将来自数据集的记录分成若干个包含相似特性的簇。通过使用这些簇,您可以研究数据,找出彼此之间的相互关系。您还可以从群集模型创建预测。&& & Microsoft Association 基于 priori 算法,它为在大型数据集中查找多路关联提供了一种有效的方法。Association 算法在数据库所有事务中循环,在单一用户事务中查找最有可能同时出现的项目。关联的项目被分到一起,放入项目集中,生成可用于预测的规则。Microsoft Association 通常用于购物篮分析。& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & 对于 Association 分析而言,执行大量&非重复计数&的关系或 OLAP 分析是一个值得考虑的选择。Microsoft Association 算法对算法参数的选择很敏感,因此,对于一些小问题,使用 Microsoft Decision Trees 算法进行购物篮分析可能效果更佳。&& & Microsoft Sequence Clustering 将顺序分析与在数据研究和预测中使用的群集方法结合在了一起。顺序群集模型对事物发生次序很敏感。此外,群集算法还考虑到记录群集中的其他属性,使您可以开发关联顺序和非顺序信息的模型。Sequence Clustering 算法将被用于执行点击流分析,以便于分析 Web 站点的通信流量、识别与特殊产品销售关系最为密切的页面,并预测接下来要访问的页面。&& & Microsoft Time Series(时间序列)会创建可用于预测一个或多个连续变量(如股票价格)的模型。Time Series 算法的预测完全依据于在模型创建过程中从培训数据中推导得出的趋势。Microsoft Time Series 使用 AutoRegression Trees 技术,非常简单易用,并可生成精确度极高的模型。在该算法中有一条专门用于时间序列的统计分析规则。大多数其他数据挖掘产品都提供了多项技术,如 ARMA、ARIMA 和 Box-Jenkins,统计师必须在这些技术中确定模型的最佳技术选择。Microsoft 选择了一种方法,既可使广泛的受众能够理解时间序列,又具备异常精确的结果。&& & Microsoft Neural Net 和 Decision Trees 及 Na?ve Bayes 一样,主要用于数据研究、分类和预测。Neural Net 是一种人工智能技术,该技术可以利用所有可能的数据关系。因为它是一种非常彻底的技术,因此它是三个分类算法中最慢的算法。构建挖掘模型& & 模型的构建、培训和测试过程是创建应用程序过程中最为困难的一部分。正如下面我们要讨论的,实际开发应用程序是一个简单的编程过程。在开始构建数据挖掘模型之前,您应当已经收集和清理了您的数据,这些数据极有可能位于数据仓库中。SQL Server 2005 Data Mining 可以从关系数据库或 Analysis Services 多维数据中访问数据。& & 开发数据挖掘模型的最佳人选是同时具备业务和技术技巧的人员。模型的开发人员将会从其统计背景中获益、了解企业面临的关键业务问题、对数据和关系产生极大的好奇心,同时还能够利用 SQL Server 2005 工具处理和存储数据。现有数据仓库小组中的成员最有可能遇到这些标准。& & 作为数据挖掘的初学者,应在构建原型模型的同时,计划花费数周时间来研究数据、工具以及可供选择的算法。使用一台您具备数据库管理权限的开发服务器。构建模型的最初阶段是探索阶段:您可能会希望以不同的方法来重新构建数据和实验。当然,您肯定希望从少量数据子集开始,并在开发愈加清晰的模型设计时扩展数据集。在原型阶段,不要为如何构建一个&可供生产使用&的应用程序而担心。使用 DTS 或执行任何所需数据处理最为舒适的任何工具。保存一份记录有必要转换的高级日志,但不要期望您所做的一却都能成为永久应用程序的一部分。& & 您应当准备两套数据:一套用于开发模型,而另一套用于测试模型的精确度,从中选择适合您业务问题最佳模型。在考虑如何划分数据子集时,要确保没有引入任何偏差。例如,从十个客户中选择一个客户,或根据姓氏的第一个字符区分,或根据一些其他任意属性区分。& & 开发数据挖掘模型的过程涉及选择以下内容:&& & 输入数据集、&& & 输入字段、&& & 数据挖掘算法,以及&& & 该算法在计算过程中所用到的参数。& & 如果不知道哪种类型的算法适合处理您的业务问题,请先从&决策树&或&贝叶斯&入手研究数据。如果不知道要包括哪些属性,就选择所有属性。使用相关性网络视图,从中获得可帮助您简化复杂模型的视图。& & 在原型开发阶段,您可能希望构建相关模型,以便评估最佳算法和模型。使用&挖掘精度&图表评估在预测中效果最佳的模型。您可能还希望构建相关模型,对相同的数据执行不同类型的分析。这些模型在作为相关模型时的处理速度要比作为独立定义模型时的处理速度快。& & 在构建和测试原型后,便可以构建和测试& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & 实际数据挖掘模型。在将数据输入数据挖掘引擎前,如果需要转换数据,那么为了要实现这些操作,应当开发可供生产用的操作流程。在某些情况下,可能要选择从 DTS 管道直接植入挖掘模型。如果在少量数据的基础上开发原型,将需要在整套培训数据的基础上重新评估备选模型。构建数据挖掘应用程序& & 在 Business Intelligence Development Studio 中开发和研究数据挖掘模型可使企业获得巨大的价值。您可以浏览模型,了解数据与业务之间的关系,并使用该信息促进策略决策的制定。但是,其最大的价值还是来自可以影响公司日常操作的数据挖掘应用程序:例如,向客户推荐产品、记录客户信用风险,或根据预测的库存不足下订单的数据挖掘应用程序。要开发可操作的数据挖掘应用程序,您需要跳出 Business Intelligence Development Studio 的圈子,并用 Microsoft Visual Studio 或您选择的其他开发环境编写代码。& & 大部分企业客户都将面向客户的数据挖掘应用程序实施为基于 web 的 Win32 应用程序,如 ASP 页。数据挖掘模型业已构建完毕,而且应用程序也可以根据客户的选择或在 web 商务应用程序中输入的内容,为客户执行预测。这可能是十分简单的应用程序;唯一不寻常的部分是发布预测查询。& & 数据挖掘应用程序开发人员不一定就是开发数据挖掘模型的人员。应用程序开发人员应具备一流的开发技能,而对业务或统计知识的需求则相对较低。& & Microsoft 的数据挖掘技术大大地简化了构建自动化数据挖掘应用程序的过程。其中共有两个步骤:&& & 开发数据挖掘预测查询,其 DMX 语法在&数据挖掘&规范的 OLE DB 中定义。不需要手工编写 DMX,用户只需单击 Business Intelligence Development Studio 编辑器左栏上的&挖掘模型预测&图标即可。&预测查询构建器&图形化工具会帮助您开发预测查询。&& & 在数据挖掘应用程序中使用预测查询。如果应用程序只使用 DMX 便可完成预测,则项目应包括 ADO、ADO.Net 或 ADOMD.Net 等类引用(建议在 Beta 1 之后的开发中使用 ADOMD.Net)。如果您正在构建一个更为复杂的应用程序(例如要显示用户挖掘模型查看器,如&决策树查看器&),将需要包括 Microsoft.AnalysisServices 和 Microsoft.AnalysisServices.Viewers 类。有些客户(主要是独立软件供应商)希望创建可生成数据挖掘模型的应用程序。这种应用程序可能会替代在 Business Intelligence Development Studio 中开发挖掘模型,但可能只适用于特定的领域,如 web 分析。在这种情况下,开发项目就需要包括 Microsoft.DataWarehouse.Interfaces,以便可以获得对 AMO(Analysis Management Objects,分析管理对象)的访问权限。 DMX 示例& & 数据挖掘过程包括三个步骤,分别为创建数据挖掘模型、培训模型和根据模型预测行为,这三个步骤都可通过简单、类似 SQL 编程语言的 DMX 来实现。示例语法如下所示;DMX 的完整使用方法可从联机丛书中获得。& & 创建数据挖掘模型:CREATE MINING MODEL CreditRisk& & (CustID    LONG KEY,& & Gender    TEXT DISCRETE,& & Income    LONG CONTINUOUS,& & Profession  TEXT DISCRETE,& & Risk    TEXT DISCRETE PREDICT)& & USING Microsoft_Decision_Trees& & 培训数据模型:INSERT INTO CreditRisk& & (CustId, Gender, Income, Profession, Risk)& & SELECT CustomerID, Gender, Income, Profession, Risk& & From Customers& & 根据数据挖掘模型预测行为:SELECT NewCustomers.CustomerID, C& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & reditRisk.Risk,& & PredictProbability(CreditRisk)& & FROM CreditRisk PREDICTION JOIN NewCustomers& & ON CreditRisk.Gender=NewCustomer.Gender& & AND CreditRisk.Income=NewCustomer.Income& & AND CreditRisk.Profession=NewCustomer.Profession六、Reporting Services& & 随着 Microsoft SQL Server 2005 的发布,Microsoft 在其集成商务智能平台中拓展了一个新的主要组件。即 SQL Server Reporting Services,该组件使得人们不管在任何商业环境中,都可将适当的信息送达适当的人员,从而扩展了 Microsoft 的商务智能发展前景。& & Reporting Services 是一个基于服务器的完整平台,可创建、管理和交付传统报告和交互式报告。它包括您创建、分发和管理报告所需的一切工具和信息。同时,产品的标准模块化设计和应用程序编程接口 (API) 使软件开发人员、数据提供商和企业能够集成原有系统或第三方应用程序中的报告功能。& & Reporting Services 随 SQL Server 2005 一起发布,其中包括:& & && & 用于创建、管理和查看报告的一整套工具& & && & 用于承载和处理报告的引擎& & && & 可将报告嵌入到(或将解决方案集成到)不同 IT 环境中的可扩展体系结构与开放式接口。& & 为什么使用 Reporting Services?& & 毫无疑问,能够在适当的时间将适当的信息送达适当的人员具有巨大的价值。对于许多企业而言,这是一个挑战,因为这些需要访问信息的人员不但具有广泛的技术专业背景,而且还可能分散在整个传统组织内的不同位置,甚至于组织之外。& & Reporting Services 通过灵活的订阅和交付机制简化了传统报告与交互式报告的创建过程,并可将这些报告顺利地交付给广泛的人群。它还为处理复杂苛刻的商业环境提供了必要的安全性和可管理性。& & Reporting Services 提供了独一无二的属性组合:& & && & 完整的、基于服务器的报告平台:Reporting Services 支持从创建报告到提交报告和后续管理的整个报告生命周期。& & && & 灵活可扩展的报告功能:Reporting Services 具用可扩展的交付选项,可同时支持众多格式的传统报告和交互式报告。它可通过开放式的 API 和接口轻松集成到任何环境或解决方案中。& & && & 可伸缩性:产品基于 web 的标准化模块设计,可轻松扩展为支持高数据容量的环境。您能够创建具有多个报告服务器的报告服务器场,访问同一核心报告,为数以千计的 web 客户端提供服务。& & && & 与 Microsoft 产品和工具的集成:Reporting Services 随 SQL Server 一起发布,可轻松集成我们所熟悉的 Microsoft 工具,如 Office 和 SharePoint Portal Server,无需进行编程和自定义设置。& & 使用 Reporting Services 的途径& & 由于 Reporting Services 是结合可伸缩、可扩展体系结构的单一完整的报告平台,因此它可满足范围广泛的报告需求。& & && & 企业报告:企业可在内部报告和商务智能应用程序中使用 Reporting Services。许多公司都创建数据集市或仓库来汇总操作数据。通过使用 Reporting Services,公司的 IT 员工可以设计各种报告,并将这些报告通过电子邮件分发,或在公司门户上发布,将这些报告部署给的整个企业中的个人。Reporting Service 作为集成在 Microsoft BI 平台中的一项综合报告解决方案,为企业提供了巨大的价值。& & && & 嵌入式报告:独立软件供应商 (ISV) 可以使用 Reporting Services 将报告预先定义为打包应用程序(随 Mi& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & crosoft SQL Server 同时运行的)的一部分。客户的 IT 组织可按原样访问这些报告,或使用 Reporting Services 自定义报告,或为特定业务需求创建新报告。Reporting Services 为独立软件供应商 (ISV) 提供了一种在应用程序中嵌入灵活的交互式报告的简单方法。& & && & 为合作伙伴/客户设计的 Web 报告:组织可以将传统报告或交互式 web 报告部署为通过外部网络与客户或合作伙伴交互。Reporting Services 在提供个性化和互动性的同时,还使报告客户摆脱了复杂的底层数据源。& & Reporting Services 功能& & Reporting Services 将集中式托管报告系统的优点与桌面及基于 Web 应用程序的灵活性和按需选择性集于一身。Reporting Services 是一个完整的报告平台,支持从报告创建到报告部署的整个报告生命周期。& & 制作报告& & Reporting Services 包括创建传统报告或交互式报告所需的一切工具及技术,其中包括具有报告设计向导功能的图形化报告设计器工具。& & 报告制作功能详细信息& & 受到广泛支持的数据源& & Microsoft SQL Server& & Microsoft Analysis Services& & 所有兼容 OLE DB 的数据源& & 所有兼容 ODBC 的数据源& & 灵活的制作工具& & 报告设计器(使用 Visual Studio 2005)& & 基于 XML 的报告定义语言 (RDL)& & 生成 RDL 的第三方工具& & 灵活的报告格式& & 自由格式& & 表格& & 矩阵& & 图表& & 使用运行时筛选的参数化报告& & 排序和分组& & 演练& & 链接的报告& & 模块化报告执行& & 转换是从查询流程中分离出来的一个流程;同一份报告可能转换为不同的格式。& & 执行可按计划执行,也可以按需执行。& & 管理报告& & Reporting Services 包括基于 web 的工具,可用于管理报告和报告服务器 Web 应用程序。管理员可使用此界面为报告定义基于角色的安全性、编排报告执行和提交,以及跟踪报告历史。或者,企业或 ISV 可以使用 Reporting Services Web Services API 编写自定的管理工具。& & 由于报告定义、文件夹和资源都存储在 SQL Server 数据库中,因此,您可以使用其他工具(如 SQL Server Management Studio)管理元数据,或使用那些充分采纳已发布 API 的第三方应用程序。& & Reporting Services 实施了一个灵活、基于角色的安全模型,用来保护报告和报告资源。这一功能可根据各种不同的安全需求量身定做。该产品包括根据需要集成其他安全模型的可扩展接口。& & 报告管理功能详细信息& & 报告元数据& & && & 名称& & && & 描述& & 数据源管理& & && & 连接& & && & 凭据& & 参数管理& & && & 默认& & && & 提示& & 报告编排& & 集成 SQL Server 代理& & 执行属性& & 实时、缓存或快照。Reporting Services 快照是报告数据集(运行报告快照时报告的源查询结果)的存储副本。& & 报告执行的历史& & 被保留下来,以供需要时再次使用的快照分类列表& & 报告安全性& & && & 用户、组和角色& & 报告服务器 Web 应& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & 用程序& & 基于 Web 的管理工具,这些工具可用于:& & && & 定义安全性& & && & 安排报告的执行和提交& & && & 跟踪报告历史& & 灵活的管理 API& & Web 服务 API& & 提交报告& & 您可以将报告提交到门户、将其以电子邮件的形式发送给用户,或让用户使用基于 web 的报告服务器从文件夹层级中访问报告。导航、搜索和订阅功能可帮助用户根据其需要定位和运行报告。个性化的订阅功能可让用户自行选择自己喜欢的转换格式。& & 报告提交功能详细信息& & 报告转换选项的范围& & && & Web 格式 (HTML)& & && & 打印格式 (PDF, TIFF)& & && & 数据 (Excel, XML, CSV)& & && & 通过开放式 API 实现的其他格式& & 灵活的提交选项& & && & 按计划& & && & 由事件驱动& & && & 个性化的订阅& & && & 显示的报告或链接交付& & && & 数据驱动的订阅& & && & 集成的其他应用程序& & 七、总结& & Microsoft SQL Server 2005 是一个完整的商务智能平台,它所提供的基础结构和服务器组件可用于构建:& & && & 易于查询且维护成本较低的大型复杂数据仓库;& & && & 较小规模的企业或大型企业中的部门可以轻松构建和管理小型报告和分析系统;& & && & 向操作用户交付分析数据的低延迟系统;& & && & 闭环分析和数据挖掘系统;以及& & && & 扩展商务智能的嵌入式系统。& & 为用户所熟悉的工具(SQL Server 关系数据库、DTS、Reporting Services 和 Analysis Services OLAP 以及数据挖掘)也都得到了极大的改进。新增功能(如 Business Intelligence Development Studio 和 SQL Server Management Studio)进一步扩展了 Microsoft BI 平台。每个工具都具有创新性,其设计都可令您事半功倍:用比以前更少的硬件、规模更小的团队更快更好地构建、部署和管理重要的商务智能应用程序。& & 附录 A:代码示例递归查询示例USE AdventureWorks& & GO& & /*& & This query brings back a list of managers, and the count of employees& & who report to them directly or indirectly).& & */& & WITH reps_cte (emp, mgr, recursion_level)& & AS& & (& & /*Get the initial list of employees.*/& & SELECT EmployeeID, ManagerID, 0& & FROM Employee AS E& & /*Get a Union of the anchor and the recursive term.*/& & UNION ALL& & SELECT reps_cte.emp, E.ManagerID, recursion_level+1& & FROM Employee E, reps_cte    -- Join with Employee& & WHERE reps_cte.mgr=E.EmployeeID  -- This employee&#39;s manager& & AND recursion_level<=20    -- up to 20 levels& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& & of mgmt& & )    -- End of common table expression& & /*Now query the recursive common table expression reps_cte*/& & SELECT r.mgr, E.[LastName]+&#39;, &#39; + E.[FirstName]& & AS MgrName, count(*) CntEmployees& & FROM reps_cte r INNER JOIN [Employee] E ON (r.mgr=E.EmployeeId)& & GROUP BY mgr, E.[LastName]+&#39;, &#39; + E.[FirstName]& & HAVING count(*) > 1      -- Means they manage at least one person& & ORDER BY 3 DESC      -- Sort by count of employees& & GO& & 关 键 字:SQL2005& & 相关文章:& & 怎样对SQL&Server&2005存储过程解密& & SQL&Server&2005之客户端网络库& & 微软公司宣布:免费赠送SQL&Server&2005& & 如何自动备份SQL&Server&2005分析服务& & 深入讲解SQL&Server&2005的数据库开发& &
声明:该文章系网友上传分享,此内容仅代表网友个人经验或观点,不代表本网站立场和观点;若未进行原创声明,则表明该文章系转载自互联网;若该文章内容涉嫌侵权,请及时向
论文写作技巧
上一篇:下一篇:
相关经验教程

我要回帖

更多关于 仓库温湿度监控系统 的文章

 

随机推荐