2012-07-12 58 views
0

是否可以使用MDX查询SSAS数据库并将其用作Rhino ETL的数据源?我正在讨论在这里创建一个到SSAS实例的OLE DB连接。SSAS与Rhino ETL?

谢谢!

回答

3

如果您在.NET应用程序中使用Rhino ETL,那么是的。首先,引用Microsoft.AnalysisServices.AdomdClient.dll。然后,执行Rhino ETL的AbstractOperation来提取数据。这里有一个例子:

namespace Etl.Operations 
{ 
    public class ExtactFromAnalysisServices : AbstractOperation 
    { 
     private readonly AdomdConnection _connection; 
     private readonly string _mdx; 

     public ExtactFromAnalysisServices(string connectionString, string mdx) 
     { 
      _connection = new AdomdConnection(connectionString); 
      _mdx = mdx; 

      _connection.Open(); 
     } 

     public override IEnumerable<Row> Execute(IEnumerable<Row> rows) 
     { 
      var command = _connection.CreateCommand(); 

      command.CommandText = _mdx; 

      using (var reader = command.ExecuteReader()) 
       while (reader.Read()) 
        yield return Row.FromReader(reader); 
     } 

     public sealed override void Dispose() 
     { 
      _connection.Close(); 
      _connection.Dispose(); 
      base.Dispose(); 
     } 
    } 
} 

使用它的过程是这样的:

public class Process : EtlProcess 
{ 
    protected override void Initialize() 
    { 
     Register(new ExtactFromAnalysisServices("connection string", "mdx query")); 
     Register(new SomeTransform()); 
     Register(new SomeLoad()); 
    } 
} 
0

我不知道犀牛ETL,但你可以用SSAS和SSIS来做到这一点。