SSAS 內建 9 種演算法,實務上常需依領域問題開發客製化演算法。SSAS 提供Managed Plug-in 架構,繼承基底類別並註冊 COM 元件即可整合自訂演算法。

DMPluginWrapper 並加入參考。RegAsm + gacutil)。AlgorithmMetadataBase (中繼資料):服務名稱、描述、支援輸入/預測內容類型、DMX 函數、參數集合等。AlgorithmBase (核心邏輯):Train、Predict、GetModel 等方法。ICaseProcessor (資料列處理):定義案例讀取與屬性存取方式。AlgorithmNavigationBase (瀏覽器支援):提供模型內容瀏覽功能。[ComVisible(true), MiningAlgorithmClass(typeof(MyAlgorithm)), Guid("YOUR-GUID")]
public class MyMetadata : AlgorithmMetadataBase
{
public override string GetServiceName() => "MyCustomAlgorithm"; // 無空格
public override string GetServiceDescription() => "Custom Clustering Algorithm";
public override PlugInServiceType GetServiceType() => PlugInServiceType.ServiceTypeOther;
public override MiningScaling GetScaling() => MiningScaling.Medium;
public override MiningTrainingComplexity GetTrainingComplexity() => MiningTrainingComplexity.High;
public override MiningPredictionComplexity GetPredictionComplexity() => MiningPredictionComplexity.Medium;
public override bool GetSupportsDrillThrough() => true;
public override MarginalRequirements GetMarginalRequirements() => MarginalRequirements.AllStats;
public override MiningColumnContent[] GetSupInputContentTypes() => new[] {
MiningColumnContent.Discrete, MiningColumnContent.Continuous,
MiningColumnContent.Discretized, MiningColumnContent.Key };
public override SupportedFunction[] GetSupportedStandardFunctions() => new[] {
SupportedFunction.PredictProbability, SupportedFunction.PredictSupport,
SupportedFunction.PredictHistogram, SupportedFunction.PredictNodeId };
public override AlgorithmBase CreateAlgorithm() => new MyAlgorithm();
}
英文原文:SQL Server Data Mining Managed Plug-In Algorithms Tutorial (附件可下載)。C++ 版本範例請參考 SQL Server 2005 Samples 中的 stub 專案。