[.NET] Acesso ao Analysis Services 2005 com ADOMD.NET
Objectivo: Utilizando o ADOMD.NET para aceder ao Analysis Services 2005, criar um browser que permita visualizar a metadata associada aos cubos e consultá-los através de queries MDX.
Tecnologia:
- Microsoft Visual Studio .NET 2005 Beta 2
- Microsoft SQL Server 2005 Beta 2 April CTP
- ADOMD.NET
- C#
ADOMD.NET é o novo modelo de objectos managed para aceder ao Analysis Services. Pemite construir aplicações cliente para fazer browsing tanto de metadata como de dados através de MDX e é suportado por XMLA, que é um standard para interacção entre clientes e providers de dados analíticos (ver www.xmla.org).
Ao contrário do que acontecia com o SQL Server 2000, onde era necessário um intermediário (XMLA/SDK) para o acesso, a versão 2005 tem suporte nativo para o XMLA, pelo que todo o acesso ao AS2005 é feito via XMLA. É de relevar que o ADOMD.NET pode ser utilizado com o AS2000 se combinado com XMLA SDK.
É bastante similar ao ADO.NET e mantém o modelo de objectos do ADOMD (para facilitar a vida aos programadores) adicionando mais alguns objectos como o NamedSet e o KPI. Providencia alguns mecanismos para melhorar a performance como caching de metadados, segundos pedidos de listagem de cubos e outros são obtidos directamente no cliente, utiliza XML binário para comunicar com o servidor e providencia ainda compressão, já que os pedidos XMLA poder-se-ão tornar bastante palavrosos. Ao nível da segurança, por omissão todas as comunicações com o servidor são cifradas.
Para começar a utilizar o ADOMD.NET, adicionar a referência Microsoft.AnalysisServices.AdomdClient.
Conexão: começemos por ilustrar uma conexão ao servidor.
[C#]
AdomdConnection adomdconn = new AdomdConnection("Data Source=servername;Initial Catalog=Adventure Works DW;");
adomdconn.Open();
[/C#]
Estabelecer uma ligação com o AS é muito simples, um exemplo de uma connection string, poderá ser aquela que é passada por parâmetro, caso esteja instalado o sample Adventure Works. (Sample este que não é instalado por omissão na versão Beta). Atenção que o utilizador que está a correr a aplicação tem de ter permissões sobre o catalog.
Metadados: Para obter os metadados, pouco há a dizer também, pelo o que é mais proveitoso observar o código. No entanto é de mencionar que, o objecto adomdconn do tipo AdomdConnection, contém uma colecção(Cubes e Dimensions) de CubeDef e Dimension. Como era de esperar, cada objecto Dimension contém uma colecção (Hierarchies) de Hierarchy e finalmente, esta última possui uma colecção (Levels) de Level. Aceder à informação de metadados, é tão fácil como iterar por essas colecções. Apresento um exemplo da obtenção dos nomes dos cubos disponíveis:
[C#]
foreach (CubeDef cube in adomdconn.Cubes)
{
comboBox1.Items.Add(cube.Caption);
}
[/C#]
Query: Finalmente vamos ver como se pode fazer uma query MDX ao AS. Mais uma vez é tudo muito fácil. Existem mais maneiras de o fazer, mas devido à minha familiaridade com o ADO.NET, vou mostrar a maneira mais similar com esse modelo:
[C#]
DataSet ds = new DataSet();
AdomdCommand adcomm = new AdomdCommand();
adcomm.Connection = adomdconn;
adcomm.CommandText = "MDX QUERY";
AdomdDataAdapter ada = new AdomdDataAdapter(adcomm);
ada.Fill(ds);
[/C#]
Para quem já utilizou ADO.NET, o código acima não encerra qualquer segredo. É criado um objecto para albergar a query, AdomdCommand, associa-se a esse objecto a conexão e a query MDX. A query é feita via o objecto AdomdDataAdapter que posteriormente preenche um DataSet com a resposta. Voilá :) .

0 Comments:
Enviar um comentário
<< Home