BI笔记之SSAS库Process的几种方案

摘要:
本文综合描述SSAS库的处理的几种方案,并简单介绍各种方案的应用场景。环境约定:SQLServer2008示例库:AdventureWorksDW方式一:直接在项目中Process这种方法在开发阶段和测试阶段是经常使用的。可以看到在出现的Process界面中处理的级别是Database。实际处理cube的时候,就可以在枚举的过程中,加入自己的逻辑来判断这个SSAS对象是否需要被处理,如果需要被处理的话,调用其Process方法就可以。

本文综合描述SSAS库的处理的几种方案,并简单介绍各种方案的应用场景。

环境约定:SQL Server 2008

示例库:Adventure Works DW

方式一:直接在项目中Process

这种方法在开发阶段和测试阶段是经常使用的。

如图这种处理方式通常是第一次的全量处理,如果SSAS库犹更新的话会提示先部署。

BI笔记之SSAS库Process的几种方案第1张

可以看到在出现的Process界面中处理的级别是Database。

BI笔记之SSAS库Process的几种方案第2张

同时也可以直接点击cube(或者是挖掘结构)单独处理它们:

BI笔记之SSAS库Process的几种方案第3张

如果是处理Cube的话也会有很多种方式:

BI笔记之SSAS库Process的几种方案第4张

同时维度也是可以单独处理的:

BI笔记之SSAS库Process的几种方案第5张

还有,分区也是可以单独处理的(如果存在分区的话),不过就不是在Solution界面了,而是得打开Cube设计视图,然后点分区:

BI笔记之SSAS库Process的几种方案第6张

关于处理增量的选项,在SSAS库刚部署好的时候是没有的,只有在处理过一次SSAS库之后这个处理选项才会存在。

这个方法是最基本的方法,毕竟SSAS库本身诞生于此。适用于开发和测试阶段及生产和开发不是隔离,对安全要求不是很高的情况。

方式二:在SSIS包中Process

这个方法的优点是定义很方便。

在BIDS中直接新建项目,选择商业智能下的集成服务项目:

BI笔记之SSAS库Process的几种方案第7张

里面有一个模块式专门用来处理SSAS库。

BI笔记之SSAS库Process的几种方案第8张

可以看到在每一个模块中可以分别定义都处理什么内容。

BI笔记之SSAS库Process的几种方案第9张

通常,都是先处理维度,然后再处理Cube的。

BI笔记之SSAS库Process的几种方案第10张

同样,在这里可以自己设计增量方案。如果定义好了增量方案的话,按照这种方案走的BI方案就成型了。最后需要做的就是,将SSIS包部署到集成服务上,然后设置好Job和Schedule。

关于如何部署和发布SSIS包,可以参考下面两个链接:

http://msdn.microsoft.com/zh-cn/library/ms137592.aspx

http://msdn.microsoft.com/zh-cn/library/ms365338.aspx

关于Cube的增量处理方案,可以参考我的这篇文章:BI笔记之---增量方式处理多维数据集

这种方法应该算是微软产品线中最标准的方法。适用范围很广。

方式三:代码中Process

代码的处理方式虽然比较复杂,但还是比较灵活的,主要还是调用AMO对象来实现。

这里只简单介绍如何处理Database级别的逻辑。(通过枚举AMO下的Server对象的各子对象可以很简单的定义每个SSAS对象的处理)

Server _server = new Server();

_server.Connect("localhost");

Database _db = _server.Databases["Adventure Works DW 2008"];

//generate xmla command.

_server.CaptureXml = true;

//process command.

_db.Process();

_server.CaptureXml = false;

//out put xmla.

foreach (string item in _server.CaptureLog)

{

Console.WriteLine(item);

}

Console.WriteLine("Processing");

//execute

XmlaResultCollection _result = _server.ExecuteCaptureLog(true,true);

Console.WriteLine("Process finished");

//out put result

foreach (XmlaResult r in _result)

{

foreach (XmlaMessage m in r.Messages)

{

Console.WriteLine(m.Description);

}

}

Console.WriteLine("Finished");

Console.ReadLine();

[2011-03-26补充]:另附Powershell版的Process

[void][reflection.assembly]::LoadFile("C:\Program Files\Microsoft SQL Server\100\SDK\Assemblies\Microsoft.AnalysisServices.dll")

$server=New-Object Microsoft.AnalysisServices.Server

$server.Connect("localhost")
$db=$server.Databases.GetByName("Adventure Works DW 2008R2")

$server.CaptureXml=$true
$db.Process()
$server.CaptureXml=$false

write-output "Processing..."

$result = $server.ExecuteCaptureLog($true,$true)
foreach ($r in $result)
{
foreach ($m in $r.Messages)
{
write-output $m.Description
}
}

write-output "Done"

留意代码的_server.CaptureXml部分,由于我们要处理的是Database,所以直接枚举到Database的时候直接调用Process方法,其相关的XMLA指令就会保存在_Server的CaptureLog属性中。代码的第一个foreach就是现实生成的XMLA命令的部分。

另:也可以通过ASCMD来处理Cube,关于如何操作ASCMD,请参考上一篇:

BI笔记之--- SSAS部署的几种方式

中关于如何以ascmd.exe部署SSAS库的描述。

通过代码能处理的SSAS粒度很细,参看本文中截图中的Add Analysis Services Object可以看到能枚举到的都有哪些对象,另外通过下列代码,也可以把这些对象都枚举出来:

Server _server = new Server();

_server.Connect("localhost");

foreach (Database _db in _server.Databases)

{

Console.WriteLine("Database:" + _db.Name);

foreach (Cube _cube in _db.Cubes)

{

Console.WriteLine("--Cube:" + _cube.Name);

foreach (MeasureGroup _mg in _cube.MeasureGroups)

{

Console.WriteLine("----Measure Group:" + _mg.Name);

foreach (Partition _pt in _mg.Partitions)

{

Console.WriteLine("------Partition:" + _pt.Name);

}

}

foreach (CubeDimension _dm in _cube.Dimensions)

{

Console.WriteLine("----Dimension:" + _dm.Name);

}

}

}

以下是运行结果:

BI笔记之SSAS库Process的几种方案第11张

可以看出一个SSAS库基本上是这样一个结构:

BI笔记之SSAS库Process的几种方案第12张

上图省略了挖掘结构中的相应部分。

实际处理 cube的时候,就可以在枚举的过程中,加入自己的逻辑来判断这个SSAS对象是否需要被处理,如果需要被处理的话,调用其Process方法就可以。

通过这种方法也可以间接的实现一种增量方案,不过需要数据仓库端实体设计上的一些配合,具体方案已经超出本文范围,但将在后续内容提到。

免责声明:文章转载自《BI笔记之SSAS库Process的几种方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇项目准备流程和django权限六表php抽象类和接口下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

当微信小程序遇到AR(三)

当微信小程序遇到AR,会擦出怎么样的火花?期待与激动...... 通过该教程,可以从基础开始打造一个微信小程序的AR框架,所有代码开源,提供大家学习。 本课程需要一定的基础:微信开发者工具,JavaScript,Html,Css 第三章:基石-接入Three.js 【前情提要】 上一章,我们已经可以在微信小程序中访问摄像头,并且获得每一帧的数据了。接下...

BI笔记之Cube增量处理的一个场景的处理方案

增量处理概述: 通常来说Cube会随着时间的积累而日渐增长,这样一来如果每次都是全量处理的话会导致处理时间逐渐变长。所以对于大规模的 Cube,为了追求处理时间和性能,都会采取增量处理的方案。   场景: 根据数据仓库的数据结构以及业务含义的不通,数据的组织会有差异,这里讨论的是增量处理的其中一个场景,其中: 事实表是以日期键为主键(数据的生成日期)...

Unity3D实践系列02,查看Scene窗口物体

删除"Hierarchy"窗口中的"Directional Light"。 把鼠标放在"Scene"窗口,滑动鼠标滚轮,可以对"Scene"窗口进行缩放。 把鼠标放在"Scene"窗口,按住alt键,按住鼠标左键,可以对"Scene"窗口进行角度调整。 点击"Hierarchy"窗口中的"Main Camera","Secne"窗口中的Camera处于选中...

2019 安装SSDT

2019之前的SSIS,SSAS,SSRS三剑客都是通过单独的安装工具进行安装,从2019开始微软给集成到了Visual Studio中,一时间搞的我有点懵逼。快速一阵 Search,看到官网的一张截图和几句说明,竟然搞定了。 第一步:在Visual Studio中选择Data storage and processing 第二步:在扩展菜单下的Visu...

某公司基于FineBI数据决策平台的试运行分析报告

一、数据平台的软硬件环境 二、组织机构和权限体系 组织机构:平台中已集成一套组织机构,可以建立部门、人员。也可以与现有系统的组织机构集成,将组织机构导入到平台中。 功能权限:通过配置功能点URL的方式实现各个用户相应的BI访问权限。用户第一次访问受保护的资源(某个功能点)时,会发出访问请求,服务器接收到请求后会验证用户权限,如果没有通过验证则返回登录页面...

关于Unity中的transform组件(一)

一、transform组件用途 1.维护场景树 2.对3D物体的平移,缩放,旋转 二、场景树定义 在Hierarchy视图中显示的: 一个game_scene场景,下面有Main Camera节点,Directional Light节点,game_root节点,game_root节点下又有Cube子节点,Sphere子节点,组成game_scene场景树。...