DrillDown no Reporting Services 2008 R2

Fala galera, a algum tempo já estou para escrever sobre isso, então como tive um tempinho livre hoje a noite (domingo – e minha esposa também está aqui trabalhando) vou fazer o post sobre como simular um DrillDown no Reporting Services 2008 R2.

Por conceito, DrillDown é partir de uma informação mais ampla (sumarizada) para uma mais específica (detalhada). A imagem abaixo ajuda a explicar o conceito.

Veja que começamos com as informações bem macro, contendo o nosso universo muito amplo (Participantes). Quando se faz uma mineração neste box, é possivel encontrar quais grupos de informações compuseram aquele ítem anterior, estas informações mais detalhadas (no caso deste exemplo) são Homem e Mulher. Bom, agora já é possível minerar mais informação, neste caso da Figura, a entidade Mulher é composta por outras três entidades Loira, Morena e Ruiva. Por sua vez, as informações da entidade Loira é composta por separações de idades.

image

Se você precisar detalhar mais ainda a questão de idade, pode por exemplo, abrir a derivação de Entre 18 e 65 anos e verificar o grau de instrução escolar. Quando você seleciona por exemplo, o Doutorado desta arvore que foi aberta, o seu universo estatístico é 5níveis mais detalhado do que o inicial, permitindo que sua análise seja focada em PARTICIPANTES >> MULHERES >> LOIRAS >> ENTRE 18 E 65 ANOS >> DOUTORAS.

A mineração dos dados pode ocorrer até você encontrar o grupo ideal para fazer sua análise, ou no máximo, até chegar em um único ítem de resultado.

Agora que todos já sabem (muuuuito superficialmente) o que é uma Mineração de Dados, e o conceito de DrillDown, vamos fazer um exemplo com esse conceito no SQL Server Reporting Services 2008 R2.

O exemplo que vamos utilizar neste post para explicar como criar o DrillDown, é somar todas as vendas anuais das filiais de uma determinada empresa, e sumarizar todas por países. Quando alguém quiser ver o detalhado das vendas das filiais em um determinado país, é só clicar na barra referente ao país e será plotado o gráfico das cidade

Vou entender que todos já estão familiarizados em criar um projeto do SSRS, e também criar um Shared Data Source e um Shared Dataset (está na minha Timeline para próximos artigos falar sobre Shared Data Source e Shared Dataset ).

A primeira atividade que fiz, foi criar esse script contendo a estutura do banco de dados que vou utilizar no exemplo.

Depois criei um Shared Data Source e apontei para meu servidor de SQL Server (chamado dsSQL), e também dois Shared Dataset apontando para as procedures que estão no script (dsTotalVendas aponta para a procedure totalVendas e dsTotalCidades aponta para a procedure totalCidades). Criei também dois relatórios em branco, TotalVendas e TotalCidades.

O primeiro relatório será um simples gráfico de colunas orientado pelo Eixo X, também conhecido como Gráfico de Barras. Para isso, arraste o componente Chart para a tela do relatório em branco, e no momento que abrir o assistente para selecionar qual será o modelo do relatório, selecione o relatório de colunas. Após a seleção do tipo do relatório, o assistente lhe pergunta qual será a origem dos dados, neste momento, selecione o ítem dsTotalVendas que é a informação mais ampla que nós temos. É como se fosse a caixa Participantes da Figura de exemplo acima.

Para informar ao gráfico quais itens aparecerão em cada sessão, dê um duplo clique no gráfico e veja do lado direito as caixas Value, Category Group e Series Groups. Na caixa Value informe o Total e na Series Group informe o nomePais. Se você configurar de acordo com essas orientações acima, seu gráfico será parecido com esse:

image

Lembrando que os valores de vendas das cidades foram gerados aleatoriamente, então seus dados serão diferentes dos apresentados aqui.

Ótimo, se seu gráfico ficou parecido com esse, é hora de criar uma variavel para passar ao outro gráfico. Cada uma das barras representa um país, e de acordo com a estrutura de dados que foi montada para o exemplo, a procedure que devolve os dados das cidades precisa do código do país para fazer o filtro. É isso que será feito agora.

Volte para o modo de design, clique fora do grafico com o botão direito e aponte para Report Property. Na tela que se abre, vá até o menu Variables. Clique no botão ADD e aparecerão duas caixas de texto abaixo. Na primeira, informe o nome da variavel que você quer passar entre os relatórios, lembre-se de informar um nome sugestivo para que seja facil a localização. Neste caso, vou informar intCodigoPais no campo Name, e no campo Value informo a seguinte fórmula: =Fields!codigoPais.Value. Após estas configurações, clico em Ok e finalizo as alterações neste relatório.

Agora é a hora de fazer o segundo relatório, que irá mostrar as cidades de um determinado país. Para isso, vá até o relatório TotalVendas que você criou anteriormente, arraste o controle Chart para este relatório, selecione o tipo de gráfico que quer apresentar os dados (selecionei novamente o Gráfico de Barras) e clique em Ok. Preste atenção agora, que é chegada a hora de informar a origem dos dados. Quando você selecionar o Shared Dataset dsVendasCidades você deve ir até o ítem Parameters e informar qual será o valor que o relatório entenderá como o parametro de entrada. Só que, esse parametro deve ser dinamico e informado através do relatório anterior, então se deve informar a variavel criada lá, para isso, coloque essa formula: =Parameters!intCodigoPais.Value. Veja como ficaria essa tela:

image

Agora é só confirmar e configurar o relatório.

Mais uma vez, é necessário clicar duas vezes no grafico para abrir as caixas a direita. Na caixa Value adicione o Total e na caixa Series Group adicione o nomeCidade.

Pronto, agora você possui os dois gráficos configurados, mas ainda não tem uma ação que faz um gráfico chamar o outro. Para fazer esse vinculo, volte até o gráfico de TotalVendas e clique em uma das barras plotadas. Com as barras selecionadas, clique com o botão direito e vá para Series Properties. Vá até o menu Action e selecione Go to Report. Neste momento, selecione que o Specify a Report será TotalCidades e que haverá um parametro. Ao clicar em Add, selecione intCodigoPais no campo Name e coloque a formula =Fields!codigoPais.Value no campo Value.

Pronto, agora você tem um gráfico com DrillDown configurado. Para testar, vá até o modo Preview do relatório TotalVendas e então clique em alguma das colunas (barras). O grafico será re-processado e mostrará os dados das cidades do país que você selecionou.

image

No caso acima, eu cliquei no Brasil (barra laranja) no primeiro grafico, e ele me trouxe os nomes da cidades do Brasil e qual foi o faturamento delas.

Agora é com vocês, sabendo como fazer DrillDown em seus relatórios, agora pode agregar muito mais valor para seus resultados na empresa. Winking smile

Sobre Diego Nogare 347 Artigos
Diego Nogare é Gerente Técnico de Engenharia de Machine Learning no Itaú-Unibanco. Também é professor em programas de pós graduação no Mackenzie e na FIAP, em São Paulo. Foi nomeado como Microsoft MVP por 11 anos seguidos, e hoje faz parte do programa Microsoft Regional Director.