03 2012 档案
摘要:在SSIS开发ETL(Extract-Transform-Load),数据抽取、转换、装载的过程。我们需要自己定义变量一、SSIS变量简介SSIS(SQL Server Integration Services,SQL Server整合服务)变量分分为两种,一种是系统变量,一种用户定义的变量。系统变量包括有关包、容器、任务或事件处理程序的非常有用的信息。例如,在运行时,MachineName系统变量包含运行包含的计算机的名称,StartTime变量包开始运行的时间。系统变量是只读的。在SSIS中,用户变量是用户在开发的过程中根据需要申明的变量。用户变量可以使用在脚本中,在由优先约束、For循环
阅读全文
摘要:--sql server 2000SELECT 表名 = case when a.colorder=1 then d.name else '' end, 表说明 = case when a.colorder=1 then isnull(f.value,'') else '' end, 字段序号 = a.colorder, 字段名 = a.name, 标识 = case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' e
阅读全文
摘要:在我们平常编程中,时间久了有时候会形成一种习惯性的思维方式,形成固有的编程风格,但是有些地方是需要斟酌的,即使是一个很小的错误也可能会导致昂贵的代价,要学会善于总结,从错误中汲取教训,尽量不再犯同样错误,注重编程之美,代码的优雅,总结几个平常经常犯的错误。1、在C#编程中,字符型类型是最容易处理出错的地方,代价是非常昂贵,在.Net Framwork中,字符串是一个相当特别的引用类型,string本省就是一个不可继承的密封类,但是它具有了值类型所应用的特点,但是它在CLR中内存还是保存于托管堆之上,也就是说,当我们每次定义一个字符串类型的时候,就在堆内存中开辟一端内存,而当我们字符串被修改之.
阅读全文
摘要:首相我们讨论一下并发性问题,然后讨论处理乐观锁的3种方法,乐观锁不能从根本上解决并发问题,由此而产生了悲观锁,我们对各个级别列举了实例进行说明,使概念更清晰。为什么使用锁? 在多用户环境下,在同一时间可能会有很多个用户跟新相同的记录,就会产生冲突。这个就是就是并发性问题,我们图来展示下:并发性问题会造成什么矛盾?并发性一般会造成四种常见的矛盾1、更新丢失(Lost Update) :两个会话都同时更新同一个资源,但是第二个会话却覆盖了第一个会话事务的更新结果。 比如,两个用户A,B同时要修改值5,A将5改成3,B用户将5改成了2,然后A先提交了结果,B后提交,这样就造成了A用户更改丢失了。2、
阅读全文
摘要:目的前面我们学习了如何创建维度,在本章中,我们将使用多维数据集向导将这些维度与数值在多维数据集中结合起来。接着,将使用多维数据集设计器来修改多维数据集,使其方便使用,并添加度量值和计算,增强其功能。内容在设计器多维数据集之前,应该熟悉包含在事实表中的数据,这些数据将被装载到多维数据集的度量值组中。查看事实数据,并尝试理解组织的业务流程是如何产生这些数据的。您需要知道该用每个事实表中的那些列来创建多维数据集中的度量值。关系型数据库表名称和列名称通常是隐晦的。并且这些列中不包含任何关于数据应该如何被格式化的信息。我们可以给度量值组合度量值添加更加方便使用的名字,并对数据进行格式化。确定每一个事实应
阅读全文
摘要:目的在许多组织中,管理者有他们个人的工作指标和基于团队的工作指标。在这些情况下,管理者的名字需要在Employees维度中出现两次。同时,还需要判断这两个名字实例中,那个代表管理者自身的工作指标,那个代表他的团队的工作指标。我们通过父子维度来管理好这两种指标。内容下图展示了David Bradley团队的Employee维度的一小部分。David Bradley作为父成员的实例代表了其团队的工作指标。通常情况下,这是团队成员的累加或平均值。David Bradley作为子成员的实例代表了他个人的工作指标。子成员也被称作数据成员。我们可以对他们做标记,使其容易识别。我们此处“(Direct)”作
阅读全文
摘要:目的父子维度的不同之处在于处于其包含了一个基于递归关系(Recursive relationship)的层次关系,比如,上级和下级雇员的层次结构关系是典型的递归关系。在一线工作的雇员会有一个主管,而该主管也是一名雇员。监督者之上会有一名同样的雇员的管理者,而管理者之上也会有一名同样的雇员的经理。经理会有一名行政助理,而行政助理没有下属。组织中的递归雇员关系可以使用雇员(Emporee)维度表来模拟,其中每位雇员包含一条记录。表的主键是EmployeeKey列,包含了对应于每位雇员的唯一的ID。雇员的上级管理者所拥有的唯一的ID保存在ParentEmployeeKey列。也就说,ParentEm
阅读全文
摘要:目的联系创建时间维度自定义层次结构内容1、在“属性”窗格中右击Calendar Year属性,并选择“启用新的层次结构”2、将Calendar Quarter属性从“属性”窗口拖动到“<新级别>”上3、重复上述步骤,将Month和Date属性添加进来4、右击层次结构表头并选择“重命名”,输入Calendar Date5、右击Month级别并选择“重命名”,输入Calendar Month。现在我们已经创建一个新的用户自定义层次结构Calendar Date,包含下图所示的Calendar Year、Calendar Quarter、Calendar Month和Date级别。我们来
阅读全文
摘要:目的 在我们实际项目中,很少存在项目不创建时间维度的OLAP数据库。通常情况下,时间维度将月度作为最低的细节级别——聚合成季度或年度。有时候,时间维度以天作为最低的细节。偶尔的情况下也可能会创建分钟甚至秒作为最低级别的维度,比如:在监控依稀那个制造业务或互联网活动、股票等。不管是那种级别的细节数据,时间维度都具有一些独特的属性。 例如,时间通常以固定的时间间隔出现。每小时有60分钟,每天有24小时,每季度有3个月每年有4个季度。时间的自然重复性促使了某些问题的产生,例如,“今年的某月和去年同期相比怎样”。其实如果我们应用MDX具备轻松回答此类问题,通过将一个维度标记为时间维度,并将该维度中的某
阅读全文
摘要:目的通过创建属性关系来优化维度设计,并理清维度之间的关系。内容上一节中我们创建了自定义层次结构,但是系统给我们提出了设计警告,虽然对维度进行了修改,但波浪线依然出现在“属性”窗格的Product维度下面,而且在这个两个定义层次结构的名称下也出现了波浪线。下面我们练习查看这些警告,基于其中的某些警告并修改设计,并忽略其余警告。BIDS甚至允许移除那些希望忽略的设计警告,这样他们就永远不会出现在设计器中。1、查看Product维度设计警告在“属性”窗格中指向Product维度,将出现工具提示“避免将属性的可见属性层次结构用作用户自定义的层次结构中的级别”。这个提示说的有点含糊,其实意思就是:由于我
阅读全文
摘要:本文非原创,转自博客园:http://www.cnblogs.com/netfocus/archive/2011/10/10/2204949.html领域驱动设计值领域模型2004年Eric Evans发表Domain-Driven Design-Tackling Complexity in the Heart of Software(领域驱动设计),简称为Evans DDD。领域驱动设计分为两个阶段:1、以一种领域专家、设计人员、开发人员能理解的“通用语言”作为互相交流的工具,在不断交流的过程不断发现一些主要的领域概念,然后将这些概念设计成领域模型;2、由领域模型驱动设计,用代码来表现该领域
阅读全文
摘要:目的本篇只要还是通过自定义层次结构来回应设计警告,并根据提示的设计警告进行层次关系的定义。我们创建两个自定义层次结构,通过前几篇的介绍,我们知道自定义层次结构有包含Category、Subcategory和Product属性成员的级别组成,这是一个自然层次结构,因为每个产品只有一个父子类,而后者只有一个父类别。对于用户来说,通常都是希望深入挖掘来使用自然层次结构。第二个自定义层次结构由包含Color和Size的属性成员的级别组成。该层次结构帮助用户了解对于某种颜色而言,那些尺寸可供选择。在该层次结构中,单个尺寸可能有多个颜色,因此他不是一个自然层次结构。内容1、在“属性”窗口中,右击Produ
阅读全文
摘要:目的我们可以在维度设计器来增强维度设计。在“维度结构”选项卡中,可以创建额外的属性,创建自定义的层次结构、修改维度、属性和层次结构属性。在“属性关系”选项卡中,可以创建供分析服务用于聚合数值数据用的自然层次结构。在“翻译”选项卡中,可以设置使其多种语言显示维度、属性、层次结构和成员名。后面的文章我们将介绍。维度向导只允许将NameCoumn设置成关键属性。如果希望将NameColumn设置为其他属性,就必须使用维度设计器。当您在浏览Product(产品)维度时,可以看到Category和Subcategory属性成员以显示的是整数。本篇我们将练习如何修改NameCloumn属性以使这两种属性可
阅读全文
摘要:目的 在我们开发的周期的前期查看维度成员,一保证没有任何错误,确定是否有数据问题会影响维度设计,确定维度成员按照预先设置的出现。当我们发现问题的时候,可以及时的通过增加或修改数据源视图的计算成员来改变维度成员名的格式,或是某个属性的顺序需要改变。在浏览维度成员前,我们必选先将设计部署到Analysis Services服务器中。内容在运行完维度向导的所有页面后,系统会创建一个包含维度设计的XML文件。我们可以在解决方案管理器中该项目的“维度”文件夹找到该文件:Dim Product.dim。在部署该项目数据库时,数据库中所有的Xml文件的内容,包括Dim Product.dim文件,都将被复制
阅读全文
摘要:本系列文章主要是结合书籍,加上自己的总结,整理出来的一系列读书笔记,涉及微软SQL Server2008中商务智能开发中的多维分析模块,先把目录整理如下:《分析服务从入门到精通读书笔记》第一章、数据分析基础(1)《分析服务从入门到精通读书笔记》第一章、数据分析层次结构(2)《分析服务从入门到精通读书...
阅读全文
摘要:1、什么是集群集群(cluster)就是一组计算机,他们作为整体向用户提供一组网络资源。这些单个的计算机系统就是集群的节点(node)。一个理想的集群是,用户从不会意识到集群系统底层的节点,在他/她们看来,集群是一个系统,而非多个计算机系统。并且集群系统的管理员可以随意的增加和删除集群系统的节点。2、集群的优点<1>高扩展性<2>高可用性HA:集群中的一个节点失效,它的任务可传递给其他节点。可以防止单点失效<3>高性能:负载平衡集群允许系统同时接入更多的用户<4>高性能价比:可以采用廉价的复合工业标准的硬件来构造高性能的系统。3、集群系统的分类虽
阅读全文
摘要:目的我们需要用维度向导来创建维度的初始结构。在向导的运行步骤中,需要选择数据源表、关键属性和其他需要包含在维度中的属性。同时还需要使用向导来配置其他一些重要的属性参数。然而,多睡情况下,维度设计不会一次完成。在使用向导完成了初始维度设计后,还需要经常的使用维度设计器来进一步增强维度。我们本章就是学习具体的步骤。内容1、在解决方案资源管理器中,右击“维度”文件夹,选择“新建维度”,然后就会弹出新建维度向导的界面,直接点击下一步。 在“选择创建方法”页中显示了创建维度的4种方法,如下图所示,我们推荐的一种最常用的方式:“使用现有表”2、确认“使用现有表”选项中已被创建,然后点击“下一步”。这是会出
阅读全文
摘要:目标在第一章中,我们通过向数值添加包含属性和层次结构的维度,可以将数据转化为信息。对数值而言,维度增加了上下文的语境和意义。这是维度数据库所带来的主要好处之一。在第二章中,我们知道可以在SQL Server中创建维度数据库,并能利用其中的数据,在分析服务中创建多维OLAP数据库。在第三章解释了如何在关系型数据库和分析服务之间建立连接。还说明了如何指定包含了希望载入分析服务维度和多维数据集的数据的关系型数据库表。在本章中,我们将使用一个已包含数据源和数据源视图的分析服务项目。数据源视图引用的数据集市中的维度表。我们将创建基于此修改属性和浏览数据。我们将通过创建3种不同类型的维度(标准、时间和父子
阅读全文
摘要:目的其实在我们这个应用的数据库中,包含在数据源视图内的产品类别和子类信息的表。这两个表的元数据是不完整的,没有定义主键和关系,下面。我们就将在Internet Sales关系图中显示这些表,并添加逻辑主键关系。数据库的主键是唯一能标示表中不同行的,并不且允许任何的行主键列值重复。同样,数据源视图中的逻辑主键也指定了唯一能标示表中不同行的列,但不强制唯一性。我们必须采用其他方式来保证表格中的每一行都有唯一值,否则,在处理维度时,分析服务会出现错误。内容1、在“表”列表框中,选中DimProductSubcategory,将其拖动到关系窗口中并放置到DimProduct表的旁边。2、在DimPro
阅读全文
摘要:目的上面创建的数据源视图包含了从源数据库中读取的元数据,我们可以通过增加额外的元数据来增强数据源视图。可以添加逻辑主键和关系,也可以向表中添加SQL表达式或者基于SQL查询的逻辑表。一个数据源视图关系图包含了大量的表和关系,这使得理解源数据的结构变得困难,为了获得易于理解的数据视图,我们可以创建额外的数据源视图关系图,这个关系图包括相关表的子表。<1>创建主题区域关系图我们可以在数据视图中创建包含表子集的关系图。这里面有个技巧:我们可以每个事实表和其他的维度表来创建关系图。在“数据源视图”菜单,选择新建“新建关系图”,此时在“关系图组织程序”中将出现新的关系图,这里可以自己给它命名
阅读全文
摘要:目的数据源视图是物理源数据库和分析维度与多维数据集之间的逻辑数据模型。在创建数据源视图时,需要在源数据库中指定包含创建维度和多维数据集所需要的数据表格和视图。BIDS与数据库连接,读取表格和视图定义,并在数据源视图中存储元数据。元数据是“关于数据的数据”:即表格和视图的名称、列名称、数据类型、主键列和外键关系等。数据源视图允许您提供额外的元数据。如果需要转换数据,可以向表格中添加含有SQL表达式的命名计算。如果需要创建筛选、分组或从多个表中连接数据,可以创建被称作为命名查询(named query)的逻辑表,其中包括SQL选择语句,尽管源数据通常存储在打那个数据仓库或数据集市中,但有时需要访问
阅读全文
摘要:目的本章主要学习如何创建分析服务数据库的第一步,首先使用商业智能解决防范创建分析服务。分析服务包含一个分析服务数据库所需要的全部代码,其次,将数据源添加到项目中。我们用的开发工具就是SQL Server2008自带的Business Intelligence Development Studio(BIDS)来设计,数据库同样用的也是微软自己的案例数据库AdventureWorks2008,可以到它官网上下载。内容第一步,老规矩打开BIDS,新建项目,BIDS为我们提供了7个项目模板,后续的文章中我们以此使用到这些项目,到时候我们在介绍他们的功能和区别,本篇中则主要介绍Analysis Serv
阅读全文
摘要:Microsoft提供了一套完整的商业智能平台应用程序。使我们能够创建企业级、功能齐全的商业智能系统。Microsoft商业智能平台基于SQL Server 2008和Microsoft Office 2007系统。先看Miscrosoft Server2008所包含的产品套装<1>SQL Server数据库引擎 通常被简单的称作SQL Server,SQL Server数据库引擎是一个关系型数据库管理系统,能满足数据源层的要求。许多业务系统,例如企业资源规划(ERP)、财务和会计,人力资源和销售点,将SQL Server作为数据库引擎。SQL Server也作为商业智能系统的数据
阅读全文
摘要:基于元数据的查询在关系型数据库中查询时,我们使用结构化查询语言(Structred Query Language,SQL)SQL是一种很棒的语言,但它主要是为事务处理系统开发的,而不是为报表应用程序开发的,SQL存在一个问题不是语言本身,而是关系型数据库提供了相对较少的关于数据如何存储和结构化的信息,更为严重的是,很少有关于数据意义的信息。换句话说:数据库只包含很少数量的元数据。另一方面,OLAP数据库则包含大量的元数据。例如,OLAP多维数据集时,不但定义度量值是什么内容,而且定义他们应该怎样聚合,标题应该是什么,甚至应该怎样格式化数字。同样的,在OLAP多维数据集中,创建带有许多属性的维度
阅读全文
摘要:持续的快速相应OLAP获得持续的快速相应速度的一种方式是预先存储计算好的数值。一般来说,要么在查询时花时间进行相关计算,要么在查询前就已经进行了相关的计算。OLAP允许提前进行计算,因此查询能运行的更快。就数据如何在物理上存储而言。OLAP工具通常分为两个基本模式:电子表格模式和数据库模型。分析服务存储通常是数据库模型,但是,理解电子表格模式的OLAP的问题和优势是非常有用的。我们可以向电子表格中的任一单元格插入数值或公式。电子表格对于复杂的公式很有帮助,因为它便于用户操控。然而,电子表格的缺点之一是它在大小方面很受限制,并且电子表格本质上只是一个二维结构。OLAP多维数据集可以包含远比电子表
阅读全文
摘要:目的商业智能是一种思维方式。数据仓库是一种存储数据的通用结构,而这些数据是好的商业智能所必须使用的。但是只有将数据仓库中的数据转化为决策者所需要的信息时,这些数据才是有价值的。在本章中,我们将首先学习联机分析处理(OLAP)——将数据转化为信息的最佳手段。内容1985年,E.F.Codd发明了联机事务处理(online transaction processing,OLTP)这个术语,同时提出了12条定义OLTP数据库的标准。这个术语和标准被广泛接受,称为了管理公司日常事务(事务)数据库的标准。1993年,Codd提出了联机分析处理(online analytical processing,O
阅读全文
摘要:目的 多维OLAP数据库处在数据存取层和表示层之间,它将关系性数据仓库中的数据转换成完全实现的维度模型,从而使分析报表的创建和数据的可视化更加快速和灵活。由于不同的OLAP数据库提供的特性和物理方式不同,我们将介绍分析服务如何实现维度模型。内容事实表中包含数值数据的列对应维度模型中的度量值。因此,每个事实表都是一组度量值,分析服务用一种称作度量值组(measure group)的逻辑结构组织信息,度量值组与当个事实表以及相关的维度相对应。概念上,度量值组合事实表相似,但有一些显著的差异,就像事实表一样,度量值组包含了代表每个维度的列以及每个度量的列。同样,度量值组包含了每个维度中的成员的每个可
阅读全文
摘要:在业务数据库中,保证数据在所有应用程序中一致是极为重要的:如果在系统的某一部分修改了顾客的地址,这个修改后的地址立即在系统的所有部分显现出来,由于这种一致性的需要。倾向于将业务数据系统拆分成许多个表,这样任何值只在单个表中存储一次。任何时候需要某个值,包含这个值的表的连接就会被创建。保证一个值只存储在一个地方是规范化(normalization)进程的一个部分,这在业务系统数据库系统是十分重要的。在数据仓库维度中,可能有许多属性来构成自然层次结构。熟悉创建业务系统数据库的数据库设计师希望将维度规范化。从而使层次结构中的妹级都有一张独立的表。例如,业务数据库的设计者可以通过创建一个子类表和一个类
阅读全文
摘要:使用整数键值代表维度成员的一个原因是减少事实表的大小。同样,整数键允许将看似重复的成员存储在同一个维度表中。例如,在“顾客”维度中,可以有两个都叫Tom的顾客,但每个人都分配了唯一的“顾客”键,保证了维度表中成员键只出现一次。当然,由于数据仓库是通过提取业务系统的中数据产生的,上述两个Tom毫无疑问已经有了唯一的键值。其中一个可能是C12323A,另一个可能是F23454B。这些键称作为程序键(application key)或业务键(bussiness key),因为他们来源于用于经营业务的应用程序键。数据仓库为何还要产生新的代理键呢?有三个理由:<1>代理键可以使整数<2
阅读全文
摘要:简介商业智能系统将维度数据仓库作为数据存取层。数据仓库存储在关系型数据库管理系统(RDBMS)中,打一个非常简单的比方,你可以将关系数据库简单地想作一系列的表格。每个表格有行和列,就行Excel电子表格一样。在维度数据仓库中,维度存储在维度表中,度量值被称作事实并存储于事实表(fact table)中。目的介绍数据仓库中的维度表和事实表的概念及逻辑模型内容一、事实表 在维度数据仓库中,存储度量值的详细值或事实的表称作事实表。表1.14给出了FactSales事实表前几行的概念视图,它存储了按照州、产品和月份划分的销售量和销售额。表1.14 FactSales事实表 州 产品 月份 销售量 ..
阅读全文