创建和使用SQL Server SSAS本地多维数据集
Microsoft SQL Server SSAS的本地多维数据集(即Local Cube,也叫脱机多维数据集)和本地挖掘模型(Local Mining Models)允许在客户端机器上脱机执行离线分析(多维分析与数据挖掘),从而对有离线分析要求(能够在断开网络连接的情况下脱离SSAS服务器进行数据分析)的软件开发提供了一种备选手段。
本地多维数据集联机/脱机示意
1、创建本地多维数据集
创建本地多维数据集有多种方式,按默认约定生成的本地文件扩展名为*.cub。
1) 从SQL Server服务器上现有的SSAS多维数据集(Cube)创建
在这种方式下,创建的结果是选定的源Cube的子集,可以在创建语句中指定Local Cube中包含的度量值、维度,还可以指定维度的切片和切块等。
源Cube中需要包含在Local Cube中的计算成员和命名集无需指定,SSAS在生成Local Cube时将执行语法分析,在Local Cube中能够满足依赖关系的计算成员和命名集会被自动包含进来,而不符合依赖关系者将会在生成Local Cube时自动排除。
具体有两种比较方便的手段:
A)MDX语句
从现有SSAS Cube创建时,可使用”Create global cube” MDX语句创建Local Cube,如果数据量大,最好直接在SSAS服务器上本地执行MDX语句。
B)Excel操作
用Excel创建local Cube,该方法很方便,但只适合数据量很小的情况。步骤是:
通过Excel的“数据➡来自其他数据源➡来自Analysis Service”菜单项,启动连接SSAS数据源的向导窗体后,一路向后随意点击生成pivottable,然后通过“数据透视表工具➡OLAP工具➡脱机OLAP”菜单项启动excel“创建脱机数据文件”的向导。
2) 从关系数据库,从头定义、创建和填充多维数据集
这种方式需要使用 Analysis Services Scripting Language(ASSL)脚本语言,能够构造出非常强大、灵活的解决方案。
以下是从SQL Server 2008/2008R2/2012附带的Adventure Works多维数据库,用MDX语句创建Local Cube的示例。
1)示例1——从SSAS服务器上的[Adventure Works] 示例多维数据集创建Local Cube,结果是“Reseller Sales”度量值组的子集。
|
1
2
3
4
5
6
7
8
|
CREATE GLOBAL CUBE [LocalReseller]Storage 'D:\temp\LocalAWReseller.cub'FROM [Adventure Works](MEASURE [Adventure Works].[Reseller Sales Amount],DIMENSION [Adventure Works].[Reseller],DIMENSION [Adventure Works].[ Date ]) |
2)示例2——从SSAS服务器上的[Adventure Works] 示例多维数据集创建Local Cube,结果是 “Sales Summary”度量值组的子集
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
CREATE GLOBAL CUBE [LocalSalesSummary]Storage 'D:\temp\LocalSalesSummary.cub'FROM [Adventure Works](//计算成员无法包含在 Local Cube 中 //MEASURE [Adventure Works].[Average Sales Amount],//MEASURE [Adventure Works].[Average Unit Price],//MEASURE [Adventure Works].[Expense to Revenue Ratio],MEASURE [Adventure Works].[Extended Amount],MEASURE [Adventure Works].[Freight Cost],//MEASURE [Adventure Works].[Gross Profit],//MEASURE [Adventure Works].[Gross Profit Margin],MEASURE [Adventure Works].[ Order Quantity],//MEASURE [Adventure Works].[Ratio to All Products],//MEASURE [Adventure Works].[Ratio to Parent Product],MEASURE [Adventure Works].[Sales Amount],MEASURE [Adventure Works].[Standard Product Cost],MEASURE [Adventure Works].[Tax Amount],MEASURE [Adventure Works].[Total Product Cost], DIMENSION [Adventure Works].[ Date ],DIMENSION [Adventure Works].[Delivery Date ],//DIMENSION [Adventure Works].[Destination Currency],DIMENSION [Adventure Works].[Product],DIMENSION [Adventure Works].[Promotion],DIMENSION [Adventure Works].[Sales Channel],//DIMENSION [Adventure Works].[Sales Summary Order Details],DIMENSION [Adventure Works].[Sales Territory],DIMENSION [Adventure Works].[Ship Date ],DIMENSION [Adventure Works].[Source Currency]) |
2、使用本地多维数据集
针对不同应用目的,客户端应用程序可通过以下几种方式执行加载本地多维数据集引擎、创建本地多维数据集、打开本地多维数据集、查询本地多维数据集等操作。
1)OLE DB for OLAP
2)ADMOD.NET
3)Analysis Management Objects (AMO)
在使用本地多维数据集时,如果不想在客户端机器上安装SQL Server SSAS服务器/客户端应用,则可以访问微软网站,下载SQL Server 2008/2008R2/2012特性包(sql server feature pack)中的ADOMD.net、AMO、Ole DB for Olap等组件的单独安装文件,在客户端安装即可支持。
以下ADMOD.NET方式使用Local Cube的示例
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
//声明using adoMdClient = Microsoft.AnalysisServices.AdomdClient;private adoMdClient.AdomdConnection cnAdomd;……//连接 Local CubecnAdomd = new Microsoft.AnalysisServices.AdomdClient.AdomdConnection();cnAdomd.ConnectionString = “Data Source= D:\ temp \LocalAWReseller.cub”;cnAdomd. Open ();……//提交MDX查询并获取多维查询结果adoMdClient.AdomdCommand mdxCommand = cnAdomd.CreateCommand();mdxCommand.CommandText = “ select [Measures].[Sales Amount] on 0, [Product].[Product Categories].[ All Products].Children on 1 from [Adventure Works]”;adoMdClient.CellSet adomdCellSet = mdxCommand.ExecuteCellSet(); |
3、补充说明
关于刷新和重新创建脱机多维数据集文件,本地多维数据集在创建、使用、安全性等方面的约束条件等话题,请查阅SSAS手册详细了解。
4、附图:Excel创建Local Cube的示意图
在Excel中创建本地多维数据集-1
在Excel中创建本地多维数据集-2
创建和使用SQL Server SSAS本地多维数据集的更多相关文章
- 批处理创建数据库(Sql Server)
ylbtech-Miscellaneos:批处理创建数据库(Sql Server) 1.A,资源(Resource) - 创建数据返回顶部 1.A.1,InstallDatabases.cmd - 编 ...
- Sql Server把本地数据库传到服务器数据库
上一篇文章我们已经把网站布署到服务器中了,如果是动态网站肯定是有数据库的,接下来通过Sql Server把本地数据库上传到服务器数据库中. 打开Sql Server连接本地数据库,选中要导出的数据库, ...
- 微软BI 之SSAS 系列 - 多维数据集维度用法之三 多对多维度 Many to Many
开篇介绍 对于维度成员和事实数据直接的关系看到更多的可能还是一对一,一对多的关系.比方在事实维度(或退化维度)中一个订单和明细号组合而成的ID,对应的就是事实表中的一条数据,这就是一对一的关系.比方说 ...
- 微软BI 之SSAS 系列 - 多维数据集维度用法之二 事实维度(退化维度 Degenerate Dimension)
这篇文章是基于上一篇 SSAS 系列 - 多维数据集维度用法之一 引用维度 Referenced Dimension 继续讲解多维数据集维度用法中的事实维度. 事实维度,顾名思义就是把事实表 Fact ...
- Sql Server 的本地时间和UTC时间
一,本地时间和UTC时间 本地时间 世界的每个地区都有自己的本地时间,整个地球分为二十四时区,每个时区都有自己的本地时间. UTC时间 在国际无线电通信中,为统一而普遍使用一个标准时间,称为通用协调时 ...
- Microsoft SQL Server 获得本地帮助方法
微软的自带的帮助文档不管是对于开发人员还是DBA都是相当的重要.一般在有网络的状况下可以直接访问 http://msdn.microsoft.com/query/dev10.query?appId=D ...
- 如何创建和还原SQL Server 2005数据库?
在还原SQL Server 2005数据库文件之前,建议先把要还原的数据库文件复制粘贴到某个盘的根目录下,这样便于一会儿找到相关的文件,比如C盘. 先打开SQL Server 2005的Microso ...
- 如何创建和还原SQL Server 2000数据库?
说明:这篇文章是几年前我发布在网易博客当中的原创文章,但由于网易博客现在要停止运营了,所以我就把这篇文章搬了过来,虽然现如今SQL Server 2000软件早已经过时了,但仍然有一部分人在使用它,尤 ...
- SQL Server在本地计算机上用SSMS(SQL Server Management Studio)登录不上,错误消息:(Microsoft SQL Server, Error: 18456)
今天遇到了一个奇怪的问题,公司目前在SQL Server上都采用AD域账号登录,由于账号人数众多,所以我们建立了一个AD Group(域组),将大家的AD账号加入了这个AD Group,然后我们将这个 ...
随机推荐
- SqlDataReader的关闭问题
原文:SqlDataReader的关闭问题 昨天一个朋友使用Repeater绑定数据源时,老是出现"阅读器关闭时尝试调用 FieldCount 无效."错误. 我看了他的代码,使用 ...
- [推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到)
原文:[推荐]ORACLE PL/SQL编程之四:把游标说透(不怕做不到,只怕想不到) [推荐]ORACLE PL/SQL编程之四: 把游标说透(不怕做不到,只怕想不到) 继上两篇:ORACLE PL ...
- 空连接ipc$入侵
使用命令 net use url=file://\\IP\ipc$\\IP\ipc$ "" /user:"" 就可以简单地和目标建立一个空连接(需要目标开放ip ...
- 快速构建Windows 8风格应用35-触控输入
原文:快速构建Windows 8风格应用35-触控输入 引用 Windows 8设备通常具有多点触摸屏,用户可以同时使用多个手指来进行不同的输入交互,如点击.拖动或收缩等手势操作.另外Windows ...
- ajax的get请求
get和post是http请求方法最主要的两种方式. get: 先实现一个简单的get请求 index.html <!DOCTYPE html> <html lang="e ...
- 并行编程之PLINQ
并行编程之PLINQ 并行 LINQ (PLINQ) 是 LINQ 模式的并行实现.PLINQ 的主要用途是通过在多核计算机上以并行方式执行查询委托来加快 LINQ to Objects 查询的执行速 ...
- HAProxy+apache实现web服务动静分离
HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费.快速并且可靠的一种解决方案. HAProxy提供高可用性.负载均衡以及基于TCP和HTTP应用的代理,支 ...
- 学习GDI+ (1)
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- In C# 代码实现
SOLID 设计原则 In C# 代码实现 [S] Single Responsibility Principle (单一职责原则) 认为一个对象应该仅只有一个单一的职责 namespace Si ...
- C#事件与委托的区别
C#事件与委托的区别 1. 委托 事件是利用委托来定义的,因此先解释委托.委托是一个类,它与其他类如int,string等没有本质区别,int代表的是所有的整形,而string代表的是字符串,委托则代 ...