SQL Server 2005 Analysis Services数据挖掘算法扩展方法

本文是对英文原文SQL Server Data Mining Managed Plug-In Algorithms Tutorial的部分翻译及整理,主要是描述SSAS数据挖掘算法的基本扩展方法和开发过程。本文的内容只是原文的一部分,如果想了解更多信息可以下载原文。英文原文在本文附件中下载。

SSAS为我们提供了九种数据挖掘算法,但是在应用中我们需要根据实际问题设计适当的算法,这个时候就需要扩展SSAS,使它能应用更多的算法,SSAS有比较好的可扩展性,它提供了一个完整的机制来进行扩展,只要继承一些类并按适当的方法进行注册就可以在SSAS中使用自己的算法了。下面我将通过实例分别用几篇文章来介绍一下如何开发SSAS算法插件。本文介绍的算法插件开发方法是基于托管代码的,是用C#开发的(算法插件也可以用C++开发,并且SQLSERVER2005的案例中附带C++版本的代码stub)。整个过程大至为六个步骤。在开始开发之前需要做一些准备工作,就是要去下载一个用C++编写的COM组件,叫DMPluginWrapper(可以通过下载本文附带的附件获得),它作为SSAS与算法插件的中间层,用于处理SSAS与算法插件之间的交互以及封装从SSAS到算法插件的参数和从算法插件到SSAS的处理结果。DMPluginWrapper、SSAS和算法插件之间的关系可以由下图来描述。


图表 1: DMPluginWrapper、SSAS和算法插件之间的关系

下面开始创建算法扩展的项目。

首先新建一个类库项目(名为AlgorithmPlugin)将刚才的DMPluginWrapper项目引用到新建的这个AlgorithmPlugin类库项目中。你可以选择为这个类库项目进行程序集签名,这样就可以将其注册到GAC中。另外还要为DMPluginWrapper添加后生成脚本将程序集注册到GAC,参考脚本如下(根据机器具体设置而定):

"C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe" $(TargetPath)
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /u $(TargetName)
"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /if $(TargetPath)

如果第一行脚本不能正确运行的话,算法插件是不能被SQLSERVER分析服务器识别的。另外两行脚本就是将算法程序集注册到GAC。

接下来的几个步骤主要是继承一些基类的工作,包括AlgorithmMetadataBase类、AlgorithmBase类和ICaseProcessor接口和AlgorithmNavigationBase类。首先在AlgorithmPlugin中新建一个类文件并命名为Metadata,为这个类添加ComVisible、MiningAlgorithmClass(typeof(Algorithm))和Guid属性(Algorithm是下面要创建的算法类),并为Guid属性指定一个GUID编码。这个类要继承于AlgorithmMetadataBase类。现在要做的事情就是覆盖基类的方法。下面是所有需要覆盖的方法(对于较简单的实现写在表格中):

方法名 实现(参考) 备注
GetServiceName return "MyFirstAlgorithmPlugin" 这个方法的返回值中不能带有空格字符
GetServiceDescription return "Sample Algorithm Plugin";  
GetServiceType PlugInServiceType.ServiceTypeOther;  
GetViewerType return string.Empty  
GetScaling return MiningScaling.Medium; 用于指定算法适用的规模,这个值不会被服务器使用而是显示在模式行集中,为用户提供算法的一些相关信息。
GetTrainingComplexity return MiningTrainingComplexity.Low 用于指定算法训练适用的复杂度,这个值不会被服务器使用而是显示在模式行集中,为用户提供算法的一些相关信息。
GetPredictionComplexity return MiningPredictionComplexity.Low 用于指定预测复杂度,这个值不会被服务器使用而是显示在模式行集中,为用户提供算法的一些相关信息。
GetSupportsDMDimensions retrun false;  
GetSupportsDrillThrough return false; 指定这个算法是否支持钻透功能。
GetDrillThroughMustIncludeChildren return false;  
GetCaseIdModeled return false;  
GetMarginalRequirements return MarginalRequirements.AllStats  
GetParametersCollection return null; 算法参数,因为本文中的例子没有参数,所以这里返回空。
GetSupInputContentTypes MiningColumnContent[] arInputContentTypes = new MiningColumnContent[]

{

MiningColumnContent.Discrete,

MiningColumnContent.Continuous,

MiningColumnContent.Discretized,

MiningColumnContent.NestedTable,

MiningColumnContent.Key

};

return arInputContentTypes;

指定算法所支持的输入属性的数据类型,如连续型、离散型等。
GetSupPredictContentTypes MiningColumnContent[] arPredictContentTypes = new MiningColumnContent[]

{

MiningColumnContent.Discrete,

MiningColumnContent.Continuous,

MiningColumnContent.Discretized,

MiningColumnContent.NestedTable,

MiningColumnContent.Key

};

return arPredictContentTypes;

与上一个方法类似,这里是指定预测属性所支持的数据类型。
GetSupportedStandardFunctions SupportedFunction[] arFuncs

= new SupportedFunction[] {

SupportedFunction.PredictSupport,

SupportedFunction.PredictHistogram,

SupportedFunction.PredictProbability,

SupportedFunction.PredictAdjustedProbability,

SupportedFunction.PredictAssociation,

SupportedFunction.PredictStdDev,

SupportedFunction.PredictVariance,

SupportedFunction.RangeMax,

SupportedFunction.RangeMid,

SupportedFunction.RangeMin,

SupportedFunction.DAdjustedProbability,

SupportedFunction.DProbability,

SupportedFunction.DStdDev,

SupportedFunction.DSupport,

SupportedFunction.DVariance,

// content-related functions

SupportedFunction.IsDescendent,

SupportedFunction.PredictNodeId,

SupportedFunction.IsInNode,

SupportedFunction.DNodeId,

};

return arFuncs;

指定DMX所支持的函数。
CreateAlgorithm return new Algorithm(); 返回算法实例,Algorithm是接下来要创建的类。
时间: 2024-10-21 17:34:48

SQL Server 2005 Analysis Services数据挖掘算法扩展方法的相关文章

配置HTTP访问SQL Server 2005 Analysis服务器

server|访问|服务器 配置通过HTTP访问SQL Server 2005 Analysis服务器 其HTTP访问机制和SQL2000 Analysis 的一样,通过在IIS中增加应用程序映射(ISAPI扩展)来实现对Analysis服务器的访问 具体步骤如下: 我的机器环境WIN2003+IIS SQL Server 2005 BETA3 1.确定msmdpump.dll文件所在SQLSERVER2005目录的位置,当前它处于下面目录中 C:\Program Files\Microsoft

连接池与SQL Server 2000 Analysis Services

适用于:Microsoft SQL Server? 2000 Analysis Services 摘要:学习如何使用 Microsoft XML for Analysis Provider 附带的连接池对象来开发适用于 Microsoft SQL Server 2000 Analysis Services 的可伸缩客户端和 Web 应用程序. 简介 资源管理是开发可伸缩客户端和基于 Web 的应用程序时需要考虑的一个重要问题.在构造可为许多并发用户提供服务的客户端应用程序时,资源管理的指导原则是

使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程

原文 http://www.cnblogs.com/biwork/archive/2013/05/22/3093896.html BI Work 使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程 以 下内容为我个人对 MSDN 上提供的 "SQL Server 2012 Analysis Services Tabular Model 表格建模" 教程的实践, 包含了每一课中具体操作的图片实例, 一步一步图文记录了从数

教你使用SQL Server 2012 Analysis Services Tabular Mode表格建模

以下内容为我个人对 MSDN 上提供的 "SQL Server 2012 Analysis Services Tabular Model 表格建模" 教程的实践, 包含了每一课中具体操作的图片实例, 一步一步图文记录了从数据源导入 , 创建关系, 计算列, 度量值, 层次结构, 透视, 角色到部署等每一个阶段, 对这个教程相信是一个有 益的补充. 如果觉得光看 MSDN 上文字教程比较枯涩, 对比着图片来一步一步操作也会帮助节省大家宝贵的学习 时间, 可以快速浏览本文了解一下 Tabu

[翻译]初识SQL Server 2005 Reporting Services Part 1

原文:[翻译]初识SQL Server 2005 Reporting Services Part 1 构建和部署基本报表 如果曾经存在一项工作使得"真正的"开发者给他的上司泡蘑菇,那就是构建报表.毕竟那并不是真正的开发,更像是制作美化的格式.而且你所使用的构建报表的工具试图提供一个抽象层,这个经常妨碍你对报表的真正掌控.我以前经常听到这些争论.如果这听上去像你曾经在一个水制冷器旁边的对话,那么我请你仔细关注一下SQL Server 2005 Reporting Services(SSR

[翻译]初识SQL Server 2005 Reporting Services Part 2

原文:[翻译]初识SQL Server 2005 Reporting Services Part 2   在Part 1文章中我们对SQL Server Reporting Services 2005(SSRS)有了一个初步的了解.我们分别通过报表向导和报表设计器构建了两个报表.在Part 2我们将以一个SSRS开发者的身份深入查看更多特征信息. 以下是我们要研究的: l 表达式的用法.这些表达式可以让你动态的控制从控件属性到数据绑定的报表的各个方面. l 报表中用到的计算和操作的通用函数. l

[翻译]初识SQL Server 2005 Reporting Services Part 3

原文:[翻译]初识SQL Server 2005 Reporting Services Part 3 这是关于SSRS文章中四部分的第三部分.Part 1提供了一个创建基本报表的递阶教程.Part 2展现了为制作动态报表所用到的SSRS2005的核心特性和功能.这一部分中我们将把注意力转向SSRS中的图表控件. 微软的图表控件其实是Dundas 图标控件的按比例缩小版.不管是不是缩小版,我敢说这个的确非常好用.对好多人来说,他们使用SSRS就是看中了这个控件. 在这篇中我们要创建一个带有图表控件

[翻译]初识SQL Server 2005 Reporting Services Part 4

原文:[翻译]初识SQL Server 2005 Reporting Services Part 4 这一篇是关于SQL Server 2005 Reporting Services四篇文章中最后一篇:     Part 1,提供了创建基本报表的指南   Part 2,介绍了创建动态报表用到的SSRS核心特性和功能   Part 3,完全介绍了嵌入到SSRS中的图表控件   这里,在Part 4,我们把精力放在报表定义语言(RDL)上.RDL的定义在MSDN2给的很好,所以我在引用一下:   "

sql server 解密-请问Microsoft SQL Server 2005数据库中加密记录解密方法

问题描述 请问Microsoft SQL Server 2005数据库中加密记录解密方法 请问Microsoft SQL Server 2005数据库中类似 0MHCkgK7c4E= 的记录(共12位)是使用什么算法加密得到的?能否提供解密的方式或网址,谢谢! 解决方案 有些用到了base64来加密