摘要: 父子维度与其他维度不同的地方就是维度中的数据是递归层次关系的。如adventureworksdw库中的DimEmployee表中数据(上级和下级雇员的层次关系)就是递归关系。表中的主键是EmployeeKey列,对应于每个雇员的ID,雇员上级的ID保存在ParentEmployeeKey列。也就是说ParentEmployeeKey和EmployeeKey列是外键关系。1、 在维度文件夹上右键,选择新建维度。在欢迎使用维度向导页上,单击下一步。2、 在选择创建方法页上,选择使用现有表并单击下一步。3、 在指定源信息中选择新建的数据源视图”AdventureWorks DW“(我这保持默认)单击 阅读全文
posted @ 2011-08-15 08:00 秋无语 阅读(1509) 评论(0) 推荐(0) 编辑
摘要: 今天又翻出了Don Box的《Essential .Net》,又看到了当初曾经反复琢磨的虚方法分派的问题。在.net中,如果基类的构造器中调用了一个虚方法,它并不是直接调用基类中的虚方法,而是在子类中不存在override版本的时候才调用基类的虚方法,如果子类中有override版,那么就调用子类的方法。可以看个小例子,感觉下这种调用方式public class Fruit { publicFruit() { WriteFruitName(); } public virtual voidWriteFruitName() { Console.WriteLine("Fruit's 阅读全文
posted @ 2011-08-15 07:50 秋无语 阅读(981) 评论(1) 推荐(0) 编辑
摘要: 在这篇文章里,用XML DOM方式和LINQ方式对XML文档进行同样的操作,对比下有什么不同的,首先,生成如下格式的XML文档,<?xml version="1.0" encoding="utf-8" standalone="yes"?><categories name="Technical"> <category name=".NET"> <books> <book>CLRVia C#</book> <book> 阅读全文
posted @ 2011-08-08 07:30 秋无语 阅读(698) 评论(3) 推荐(0) 编辑
摘要: MapReduce这个名词随着hadoop的用户的增多,越来越被人关注。MapReduce可谓MongoDB之中的亮点,我也想深入了解MapReduce,加上MongoDB操作简单,所以就选择了它。MapReduce可以把问题划分为多个不同部分并分发到不同服务器并行处理问题,每台服务器都把分配给自己的一部分问题处理完毕后,把结果返回给主服务器,主服务器汇总结果,最终完成问题的处理。Map首先将文档映射到集合并操作文档,这一步可能产生多个键和多个值或者什么也没有(文档中要处理的值为空)。而后按照键分组,并将产生的值组成列表放到对应的键中。Reduce则把列表中的值化简为一个值。这个值被返回,而后 阅读全文
posted @ 2011-08-05 07:52 秋无语 阅读(3816) 评论(0) 推荐(2) 编辑
摘要: 在这篇文章里简单演示下把对象插入MongoDB以及修改对象、删除对象。首先要建立两个类,做测试使用先建立数据库的连接,下面代码建立一个Blog数据库和一个泛型集合(类似关系数据库中的表),Remove方法可以清空集合中的所有对象。创建一个post对象并调用Insert方法插入数据库Blog中,为了演示方便,再添加另一个对象,修改post对象的title,并调用save方法保存修改可以用linq筛选出有两条评论的blog并打印出结果,执行结果如下调用Remove方法删除title为“MongoDB Is Very Good”的对象,再次查看结果,这次遍历整个集合,执行结果如下 阅读全文
posted @ 2011-08-02 07:55 秋无语 阅读(1273) 评论(4) 推荐(0) 编辑
摘要: 商业智能提供的解决方案能够从多种数据源获取数据并且能够把各种数据转化成同一格式数据进行存储,最终达到让用户可以快速访问解读数据,为用户分析和制定决定提供有效的数据支持。可以人为的把商业智能分为以下几层:数据源层:公司日常工作中会存在多种格式的数据,如文本文档,excel文件,access数据库文件,SQL Server数据库文件等。数据转换层:由于数据源存在多样化,为了方便分析,需要对它们进行一定的加工,使其数据格式相同,最终存入数据存储系统。数据存取层:关系数据库管理系统(RDBMS)中创建数据仓库,保存数据。数据分析层:多维联机分析处理数据库做为数据分析层,负责把数据转换成信息。数据表示层 阅读全文
posted @ 2011-08-01 07:54 秋无语 阅读(1292) 评论(0) 推荐(0) 编辑
摘要: .NET中的迭代器非常个性,它不是一次性的返回集合中的所有值,而是每次只返回一个,接着再返回下一个,一个接一个直到迭代结束。Linq中的查询语句依赖于延迟求值,它也并不是一次返回整个查询结果,而是和迭代一样一个一个的返回。下面的代码是查询一个数组并依次对数组中的每一个元素进行操作。执行结果如图从结果可以看出,查询并不是一次性的执行完毕,而是每传入一个值执行一次。反编译以上代码生成的EXE文件,整理后,类似于以下代码上面的代码都是每请求一次,执行一次代码。假如想在请求之前就让查询对数组中的每个值都调用过一次Calculate方法。那么就需要调用ToList方法依次访问查询中的结构,并返回一个Li 阅读全文
posted @ 2011-08-01 07:43 秋无语 阅读(284) 评论(1) 推荐(0) 编辑
摘要: 在这篇文章里简单介绍下建立多维数据集,这种东西操作比较简单,但是需要一定的时间来消化吸收。1、 右键“多维数据集”出现多维数据集向导,点击下一步一直到出现如下界面,选择factResellerSales这张事实表,点击下一步。2、 在选择度量值中选中“orderquantity“和”Sales Amount“,如图3、 点击下一步出现选择维度,保持默认。4、 点击下一步出现创建新维度向导,为了保持简单,去掉所有新维度,如图5、 点击下一步,出现如图界面,点击完成。6、 点击完成后,出现多维度集设计页面。7、 点击“浏览器“选项,拖动字段到报表窗口,可以查看数据,类似如下界面 阅读全文
posted @ 2011-07-25 08:38 秋无语 阅读(256) 评论(2) 推荐(0) 编辑
摘要: 在JavaScript里实现定时器效果可以用setTimeout()和setInterval()两个函数。在WEB开发总是采取setTimeout()函数延迟一段时间执行函数或者加载数据为了达到更好的用户体验。setInterval()函数主要用于每隔一段时间执行一次函数调用。setTimeout()函数JavaScript函数是单线程执行的,假如说到了setTimeout函数设置的时间了,它就把代码插入执行队列,如果这个队列没有执行的代码,那就立即执行定时器代码,如果有正在执行的代码那么就要等到代码执行完毕后才执行定时器代码。这就意味并不是在定时器时间到了就立即执行代码而是把代码添加到执行队 阅读全文
posted @ 2011-07-25 08:32 秋无语 阅读(1508) 评论(0) 推荐(0) 编辑
摘要: HTML元素那些事在WEB开发中两个主要人物就是document类型和element类型。HTMLElement继承自Element并添加了一些属性。在实际的开发程序中总是通过HTML元素的属性去办一些事,有时候标准属性满足不了需求,就要添加一些自定义属性来来办事。如下:<div id="divDom" title="dom那些事" customAttr="myDom"></div>可以通过如下代码访问这些属性function MyAttr() { var div = document.getElementBy 阅读全文
posted @ 2011-07-18 08:32 秋无语 阅读(460) 评论(0) 推荐(1) 编辑