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:WINDOWSMicrosoft.NETFrameworkv2.0.50727RegAsm.exe" $(TargetPath) GetServiceDescription GetServiceType GetViewerType GetScaling GetSupportsDrillThrough GetDrillThroughMustIncludeChildren GetCaseIdModeled GetMarginalRequirements GetParametersCollection GetSupInputContentTypes GetSupPredictContentTypes GetSupportedStandardFunctions CreateAlgorithm 方法名:SaveContent
参考实现:
Code 方法名:GetNavigator
参考实现:
Code 接下来要实现的是AlgorithmNavigator类,这个类要继承于 AlgorithmNavigationBase。这个类主要用于显示算法处理结果中所有结点的信息。在这个类中有三个成员变量:Algorithm类型 的algorithm、bool类型的forDMDimension和int类型的currentNode。下面是这个类要实现的方法:
方法名(构造方法):AlgorithmNavigator
参考实现:
Code 方法名 MoveToNextTree GetCurrentNodeId ValidateNodeId LocateNode GetNodeIdFromUniqueName GetUniqueNameFromNodeId GetParentCount GetParentNodeId GetChildrenCount GetChildNodeId GetNodeType GetNodeUniqueName GetNodeAttributes 方法名:
//取得结点的字符串表示
GetStringNodeProperty
参考实现:
Code case NodeProperty.ConditionXml: case NodeProperty.Description: case NodeProperty.ModelColumnName: case NodeProperty.RuleXml: case NodeProperty.ShortCaption: 现在我们已经实现了完所有需要要实现的类,最后要做的就是将算法插件部署到分析服务器。在完成代码后,需要将程序集注册到GAC以便分析服务器 可以从中加载插件。下面的代码就是将DMPluginWrapper加载到GAC的脚本,假如在本文的开头正确地在Visual Studio中设置了后生成(Post-Building)脚本的话可以跳过下面的脚本代码,因为它们是相同的功能:
//将DMPluginWrapper.dll注册到GAC中
声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。
| |