“T-SQL Window Functions: For data analysis and beyond” – primeiras impressões

Ele chegou um dia antes da data prevista. Achei-o magro, comparado com os anteriores. Mas chegou. Foi encomendado ano passado, ainda na vigência da Black Friday de 2019. Às vezes encomendo livros em livrarias do exterior quando compensa pagar o frete do exterior para o Brasil do que comprar no País. Mas como na época a cotação do dólar estava elevada, e instável, optei por adquiri-lo no Brasil em um esquema de pré-venda, quando a livraria propõe um preço menor pela certeza de importar somente o necessário, sem ficar com livros em estoque. 
Dos tempos de logística aprendi que estoque sem giro é prejuízo, pois é capital parado. Pode não parecer, mas quanto mais tempo um item fica em estoque, maior é o custo daquele item.

p024_capa_livro_twfEncomendei em 1º de dezembro o livro “T-SQL Window Functions: For data analysis and beyond”, de Itzik Ben-Gan, sendo que o livro é um lançamento recente (novembro de 2019). Como era pré-venda e com data de lançamento no Brasil prevista para 6 de janeiro, foram cerca de 45 dias entre a encomenda e a entrega, mas o prazo de entrega atual é bem menor. O exemplar que recebi é da segunda edição.

Eu sou fã das funções de janela (window functions) pois elas permitem em várias situações criar códigos SQL de alta performance, quando comparados com as técnicas tradicionais de programação SQL. No caso do SQL Server, a versão 2012 trouxe muitas novidades para os desenvolvedores, inclusive na parte de funções de janela. Há poucas semanas publiquei o artigo “Novos recursos de programação para SQL Server” justamente relacionando as novidades e apresentando formas de otimizar os códigos SQL ao utilizar os novos recursos. São mais de 50 páginas em tamanho A4, disponível gratuitamente como ebook em formato PDF.

Voltando ao livro, logo na introdução deparo com o seguinte parágrafo: To me, Window functions are the most profound feature supported by both the SQL standard and Microsoft SQL Server’s dialect – T-SQL. They allow you to perform calculations against sets of rows in a flexible, clear, and efficient manner. The design of window functions is ingenious and overcomes a number of shortcomings of the traditional alternatives. Concordo plenamente, sendo que o conhecimento e domínio da cláusula OVER() é a chave para o uso eficiente das funções de janela.

Inicio por folhear o livro, indo do sumário (Contents) ao índice remissivo (Index). Em algumas partes me detenho em trechos ou ilustrações. O livro trata tanto dos recursos de funções de janela que foram implementados em T-SQL como também de alguns recursos que ainda não foram implementados, embora constem no padrão ISO/IEC. Ao longo do livro percebem-se trechos que constam em outros livros do mesmo autor, às vezes ampliados ou atualizados em conteúdo, às vezes simplificados ao mínimo necessário para servir como nivelamento básico do assunto a ser tratado. A versão do SQL Server utilizada no livro é a 2019.

O livro tem 327 páginas e está dividido em 6 capítulos, sendo que nos cinco capítulos iniciais é desenvolvido o assunto funções de janela e no sexto capítulo são demonstrados casos clássicos de SQL, como paginação (paging), totais acumulados (running totals), busca de intervalos (gaps and islands), dentre vários outros.

O capítulo 1, “SQL Windowing”, explica os conceitos de janela no padrão SQL. Ele descreve o design das funções de janela, os tipos de funções de janela bem como os elementos envolvidos na especificação de uma janela. São 35 páginas.

O capítulo 2, “A Detailed Look at Window Functions”, entra nos detalhes e especificidades das diferentes funções da janela. Ele descreve funções de janela agregadas, funções de janela de classificação (ranking), funções de janela de posicionamento (offset) e funções de janela analíticas (statistical). São 65 páginas.

O capítulo 3, “Ordered Set Functions”, descreve o suporte que o T-SQL e o padrão SQL têm para funções de conjuntos ordenados, incluindo concatenação de strings, funções de conjuntos hipotéticos, funções de distribuição inversa, e outras. Para funções padrão que ainda não estão disponíveis no T-SQL, o capítulo fornece soluções de trabalho. São 20 páginas.

O capítulo 4, “Row-Pattern Recognition in SQL”, descreve um conceito padrão profundo para análise de dados denominado de row-pattern recognition ou reconhecimento de padrões de linha. Este conceito ainda não está disponível em T-SQL mas o livro trata de importantes características analíticas padrão mesmo que ainda não estejam disponíveis em T-SQL. São 46 páginas.

O quinto capítulo, “Optimization of Window Functions”, cobre em detalhes a otimização das funções de janela no SQL Server. Ele fornece diretrizes de indexação para um ótimo desempenho, explica como o paralelismo é tratado e como melhorá-lo, processamento em modo de linha (row-mode) versus processamento em modo de lote (batch mode), e muito mais. São 58 páginas.

O sexto e último capítulo, “T-SQL Solutions Using Window Functions”, trata de usos práticos das funções de janela para abordar tarefas comuns de negócios. São 85 páginas.

Tão logo eu tenha lido o livro (e testado os códigos SQL) apresento neste blog resenha do livro. Enquanto isso, aproveito para sugerir a leitura do artigo “Funções de janela”, publicado neste blog.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Crie seu site com o WordPress.com
Comece agora
%d blogueiros gostam disto: