Plugin Algorithms

In addition to the algorithms that Microsoft SQL Server Analysis Services provides, there are many other algorithms that you can use for data mining. Accordingly, Analysis Services provides a mechanism for "plugging in" algorithms that are created by third parties. As long as the algorithms follow certain standards, you can use them within Analysis Services just as you use the Microsoft algorithms. Plugin algorithms have all the capabilities of algorithms that SQL Server Analysis Services provides.

For a full description of the interfaces that Analysis Services uses to communicate with plugin algorithms, see the CodePlex Web site.

Algorithm Requirements

To plug an algorithm into Analysis Services, you must implement the following COM interfaces:

  • IDMAlgorithm
    Implements an algorithm that produces models, and implements the prediction operations of the resulting models.

  • IDMAlgorithmNavigation
    Enables browsers to access the content of the models.

  • IDMPersist
    Enables the models that the algorithm trains to be saved and loaded by Analysis Services.

  • IDMAlgorithmMetadata
    Describes the capabilities and input parameters of the algorithm.

  • IDMAlgorithmFactory
    Creates instances of the objects that implement the algorithm interface, and provides Analysis Services with access to the algorithm-metadata interface.

Analysis Services uses these COM interfaces to communicate with plugin algorithms. Although plugin algorithms that you use must support the Microsoft OLE DB for Data Mining specification, they do not have to support all the data mining options in the specification. You can use the MINING_SERVICES schema rowset to determine the capabilities of an algorithm. This schema rowset lists the data mining support options for each plugin algorithm provider.

You must register new algorithms before you use them with Analysis Services. To register an algorithm, include the following information in the .ini file of the instance of Analysis Services on which you want to include the algorithms:

  • The algorithm name

  • ProgID (this is optional and will only be included for plugin algorithms)

  • A flag that indicates whether the algorithm is enabled or not

The following code sample illustrates how to register a new algorithm: