随笔-6  评论-14  文章-0  trackbacks-0
  2007年1月19日

ADOMD.net将多维数据集的数据分做两个地方存放。一个叫做CellSet,另一个就是CubeDef了。
其中CellSet主要存放维度的成员以及度量值表,而CubeDef存放的则是多维数集的元数据,也就是比如集合名称、维度名称等等。

有些地方说CellSet有点类似DataSet,其实2者差的非常远。通常DataSet我们会通过数据适配器的Fill方法来填充,但CellSet不行,它必须通过连接类的执行方法成员来返回。不能直接实例化。

例如:
adomdconn.Open();

CellSet cs = AdomdCom.ExecuteCellSet();

adomdconn.Close();

CellSet的成员结构很复杂,就维度说,CellSet包括轴集合Axes,轴包括不同维度成员集合Positions、维度成员集合又包括级别成员集合members。CellSet还有一个度量数据的集合Cells。但如果对多维数据查询了解的话这些应该不难理解,他们在查询后分别会被填充不同的值。


CubeDef存放的是数据集的元数据,可以直接从连接对象的属性中提取。提取出来的是一个CubeDef集合。

adomdconn.Open();

CubeCollection Cubes = adomdconn.Cubes;

adomdconn.Close();

这个集合按理来说应该是对应同一个数据源上的多个数据集的,但实际上并非如此,即使你的数据源上只有1个数据集,他仍然会提出多个元数据集合,都是带有$标志的一些源数据表,其意义就不清楚。有代研究。

posted @ 2007-01-19 16:14 猪小小 阅读(262) 评论(1) 编辑
  2007年1月16日
今天在论坛里看到某牛人,说要用C#写病毒。

之后,当然是经过广大人民群众才智的充分发挥下,总结出了如何写这个病毒的几个方案:

首先,声明法:这个病毒最好带个Readme文件,以友情提醒中毒者,这个病毒要.net framework框架才能运行。并建议中毒者先去微软的网站更新.net框架文件,再尝试运行此病毒。

二、捆绑法:毕竟运行一个病毒还要用户更新,这也太不贴心用户了。为什么不直接把.net框架也帮用户直接装好呢?这个病毒在生成后完全可以直接捆绑.net框架,以方便用户的使用。虽然有点宣宾夺主(注:.net框架大概也就30~40M左右把,普通宽带用户染毒时间大概需要10分钟左右。)。但毕竟是非常体贴的方法了。

三、升级法:在网络上传播一个40M左右的病毒实在是太不明智了。但新技术总是有的,我们可以把这个病毒分做2个部分,一部分用于感染发作,另一部分用于帮助用户更新最新的.net框架。这样病毒感染后,先会帮助用户升级操作系统,更新了最新的.net框架以后,再把运行病毒本身。怎么样,这个办法比上面两个好多了吧。

四、更新法:无奈微软的东西变化实在太快,极有可能存在今天这个病毒还正常使用,明天就又出新的解决方案导致病毒效率下降。所以我们还要为这个病毒建立一个webserver,这样可以让用户方便的定期更新病毒,以保证病毒的发作效率。该智能webserver还能根据不同的用户.net框架自动帮助用户更新不同版本的病毒。

五、无奈大多用户的机器配置并不高,运行.net框架的病毒需要一定的等待时间,建议这个病毒最好能制作一个发作进度条,最起码要能够提示“病毒发作中,请等待。。。”

posted @ 2007-01-16 13:54 猪小小 阅读(1220) 评论(5) 编辑
ADOMD.net在傻呼呼的从微软那下了几个小时之后,终于安装在了我的VS里面。我的计划是在网站中测试这个数据源。
      新建了一个网站,添加了ADOMD.net的引用。命名空间为:Microsoft.AnalysisServices.AdomdClient。就从最基本的连接开始吧。

      ADOMD.net的连接类叫做AdomdConnection,连接语句我想应该和普通的连接方式没什么不同。但设置好后居然不能open()?于是上网查询了别人的连接语句,但是奇怪了,放我这就是不行。因为我的数据库并不是本地的,我查了查服务器的情况,发现居然提示我的ip地址有病毒,自动提掉了我的连接。晕,于是呼赶紧杀毒,感情机器上已经成了病毒乐园了。

几个小时后,我重新设置了连接,但还是无法接上服务器,换了几组网上搜索到的语句都不行。怒了。还不如自己想办法,我打开了原先设置多维数据集的商业智能项目,那里对多维数据集的连接是正常的,查看连接源代码,得到如下语句:
"Provider=SQLNCLI.1;Data Source=SYHSPS;Integrated Security=SSPI;Initial Catalog=Analysis Services one"
记录下来后,直接贴到了我的AdomdConnection上面,终于正常连接了。

对比原先网络上提供的语句,发现关键不同的地方是Provider的值,究竟为什么这样?还请高手指教下了。
posted @ 2007-01-16 10:04 猪小小 阅读(350) 评论(4) 编辑
  2007年1月13日

对于习惯了关系数据库,刚接触多维数据集的人来说,概念的对比是最容易糊涂的了。

2个简单的表。

主表Table1 ,从表Table2,他们之间为一对多的关系。

Table1的字段有2个,date1和keyid
Table2的字段为key,date2.

两表的连接依靠的是Table1.keyid = Table2.key

现在我们把他们转为多维数据集,看看结果变成如何。

Table1:事实表,date1的数据称之为度量值,keyid是作为和Table2连接的键。
Table2:维度表,key,date2都称呼为table2的属性。而他们所代表的数据的分类称之为成员。

事实表其实不是一张表,而是很很多张表的集合。每个维度表的属性都会在事实表中映射出一张表。

例如:Table1和2数据如下:
date1   keyid                        key    date2
A         a                                a      m
B         a                                b      m
C         b                                c      n
D         c

那么在多维度数据集中,事实表就还存在着这样两张表。
date1   key         date1  date2
A+B      a         A+B+C   m
C           b         D            n
D           c

第一张表是table2的key字段通过在table1中相同的数据直接映射出来的,所以key属性是table2维度表的第一层。
第二张表是table2的date2字段,不过这个字段的数据在table1并没有对应的数据,所以他是通过key字段才能在Table1中映射,所以date2属性是从属于key属性的第二层。这个就是维度表所谓的“层次结构”了。

成员这样也好理解了,原本date2的数据是m,m,n。但其实他只有2个成员,m,n。属性成员来自于相应的字段数据,但是是对数据结果的分类。

posted @ 2007-01-13 13:25 猪小小 阅读(296) 评论(1) 编辑
  2007年1月12日
多维数据集是怎样一个概念?在MSDN上一开始就给出了这样一个解释:

Microsoft SQL Server 2005 Analysis Services (SSAS) 中,多维数据集是基于在数据源视图中建模的表和视图开发的。多维数据集是度量值(事实数据)和维度(可涵盖感兴趣的各个方面,例如时间、产品和客户)组成的集合。多维数据集在计算、关键性能指标 (KPI)、操作、分区、透视和转换方面得到了增强。多维数据集实质上与 UDM 等效。

但这专业的解释之中,无奈又增加了新的概念。我自己使用之后,觉得可以用一个比较无赖的方法来形象的描述一下。

我们假设普通的关系数据库中有以下3个表。
A:只有1个字段 x 数据为连续自然数1,2,3,4...
B:只有1个字段 y 数据为连续负整数-1,-2,-3,-4...
M:3个字段,x,y,m xy同上,m为{x,y}的结构。

现在就用这3个表组建多维数据集,A,B为维度表,M为事实表。关系为A.x=M.x,B.y=M.y。

部署之后,浏览这个多维数据集,M.m做数据,把A.x字段放做columns,B.y字段放做rows,怎么样,结果就是一个标准的解析几何的第三象限了。A.x就是X轴,B.y就是Y轴,M.m则是空间坐标。只要初中文化过关的,应该都可以做反向联想了把。可以把数据关系表上的各种概念一一放到这里来看看究竟代表空间上的什么几何意义。还可以自己增加Z轴。

当然,一般多维数据集通常都有10个以上的轴,而我们只有3维的空间。以上的方式只能作为入门了解的方式而已。

posted @ 2007-01-12 14:50 猪小小 阅读(565) 评论(3) 编辑
 

1、什么是商业智能?

商业智能也称作BI,是英文单词Business Intelligence的缩写。

从广义上来说,我们都接触过商业智能。统计报表就可以看作早期的商业智能。而现代的商业智能包括了更多的需求,最常见就是功能就是分析及预测。(例子)

商业智能的技术实际上是一种原有的技术的综合运用。其中包括了数据仓库、OLAP和数据挖掘。

 

2、什么是数据仓库、数据挖掘以及OLAP(联机分析处理系统)?

数据仓库:

在现代的一些信息化非常集中的企业,都必须要用到数据仓库。数据仓库是一种对原有数据重新结构化设计的方案,其主要目的就是利用空间换取性能。摆脱关系数据库的二维设计方案,采用多维的角度来衡量数据。

OLAP

即联机分析处理系统,这种系统是相对于OLTP联机事务处理系统)来说的。我们通常设计的关系数据库的主要功能就是增加数据、更新数据,属于OLTP。而OLAP的则是用于统计数据、分析数据。

数据挖掘:

数据挖掘从广义上来解释,其实就是BI的最终实现。普通的关系数据库回答不了“那些人更容易购买我们的电脑产品?”这样的问题,而数据挖掘就是为了回答这类问题而设计的。

 

最早的数据库只能回答“我们去年的营业总额是多少?”这类问题。

关系数据库可以回答“上个月我们的营业额达到了多少?”。

而数据挖掘可以回答“明年我们的销售额预计可以达到多少?”

 

3、如何实现这些功能?

以上的功能的实现涉及到各种功能上的数据转换、数据算法。而使用sql2005Analysis Services系列工具可以很方便的实现以及测试效果。Analysis Services设计的是一种基于UDM的模型方案,他包含了多维数据集、数据挖掘模型以及其他应用程序的创建

4、什么是UDM

UDM既“统一维度模型/统一空间模型”,这种结构设计的目的在于可以让用户直接访问数据源去寻找他们需要的数据。

 

 

5、如何理解多维数据集?

多维数据集的结构把关系数据库的2维扩展 任意的维度,维度是多维数集的核心概念。每个维度都代表对度量值的一种观察角度。

例如常见的销售业绩作为度量值的话,就可以把销售人员、客户、产品等等信息都做为维度。通常多维数据集合都有几十个到几百个维度。通过多维表达式 (MDX)的查询,任意几个维度都可以互相组合以快速查询到需要的统计数据。

posted @ 2007-01-12 14:19 猪小小 阅读(121) 评论(0) 编辑
仅列出标题