Banco de Dados - SQL Server

ROLLUP e Cube: Turbine suas Aplicações

Quando vamos trazer um conjunto de registros do Banco de Dados resultantes de uma pesquisa (Recordset), para exibir ao solicitante, costuma-se ter a necessidade de uma espécie de totalizador para um determinado campo ou conjunto deles. É nesse momento que muitos desenvolvedores recorrem aos mais diversos tipos de recursos...

por Active Delphi



Quando vamos trazer um conjunto de registros do Banco de Dados resultantes de uma pesquisa (Recordset), para exibir ao solicitante, costuma-se ter a necessidade de uma espécie de totalizador para um determinado campo ou conjunto deles. É nesse momento que muitos desenvolvedores recorrem aos mais diversos tipos de recursos: Cursor no Banco de Dados, ler o recordset dentro do programa linha a linha e contar atribuindo o valor a uma variável acumulando valores até obter o total, ou até mesmo a execução de duas queries, onde uma traz o recordset e outra para totalizar os valores (dobrando o tempo de processamento) e assim por diante.
Os recursos ROLLUP e Cube existem no sentido de aperfeiçoar a pesquisa submetida ao Banco de Dados e agregar performance na criação do recordset.
Estes recursos também são reconhecido por agregação de valores.
Para efeito de exemplo de outros tipos de agregação de valores existe o SUM() para somar valores ou MAX() e MIN() para obter o maior valor e o menor valor, respectivamente, sempre seguidos da cláusula GROUP BY.
A título de ilustração para maior absorção do conteúdo aqui transmitido, utilizaremos uma tabela chamada TB_LIVRO

Nome

O conteúdo da Tabela após Select é:

Select Nome, Idioma, Ano_Edicao from TB_LIVRO

PMI

Para entender melhor o resultado cada grupo de registro dentro do recordset foi destacado com cores distintas.
Tomando-se como exemplo o livro Database Turbo pode-se constatar que no ano de 2002 foram registradas duas ocorrências, em 2003 foi registrada uma ocorrência e em 2004 foram registradas mais duas ocorrências. A soma deste grupo de registros é igual a cinco ocorrências.
A soma dos totais de cada livro resulta em quatorze ocorrências no Total Geral.
Ao término deste exemplo é possível constatar que a confecção de relatórios passa a ser muito mais rápida e que para este resultado caso não existisse o recurso do ROLLUP seriam necessárias no mínimo três queries distintas.
Com isso conclui-se a apresentação desta poderosa funcionalidade do SQL Server chamada ROLLUP.

Cube

A função do Cube é similar ao do ROLLUP.
Este operador cria e sumariza todas as combinações possíveis de grupos baseados no Group By.

Select Nome, Ano_Edição, Count(Nome) As Qtd_Produzida
from TB_LIVRO
Group by Nome, Ano_Edição
With Cube
Order by Nome

O resultado anterior, após substituir ROLLUP por Cube passa a ser representado da seguinte forma.

Null

Além de produzir um recordset similar ao do ROLLUP, foi realizada a sumarização por Ano_Edicao que faz parte da relação de campos pesquisados da tabela..
Com isso abre a possibilidade para analisar os dados armazenados na Base de Dados sobre as mais diferentes formas, o que pode trazer a quem utiliza estes dados uma diferença preciosa na competitividade no mundo dos negócios.
Os recursos apresentados neste artigo são recursos fundamentais para construção de OLAP e altamente procurados por empresas junto aos consultores de solução na área de TI.
Este assunto porém ficará para um próximo artigo, pois trata-se de um assunto muito longo e de uma complexidade que merece um capítulo a parte.

E para pensar enquanto programa...
"Inicialmente o candidato à liberdade deve procurar eliminar todos os seus vícios".
Buda (Sidarta Gautama), sábio, líder religioso, IND, 563-483 AC

Active Delphi

Active Delphi - Assine a revista:
http://www.activedelphi.com.br/parceiro_revista.php?parceiro=5