top of page

Posts do fórum

Leandro Malaquias
30 de mar. de 2023
In Discussões gerais
Índices Os índices são um dos recursos mais importantes do SQL Server e de outros sistemas de gerenciamento de bancos de dados relacionais, eles são uma forma de acelerar consultas ao banco de dados, permitindo que as buscas sejam executadas mais rapidamente e com maior eficiência, são semelhantes aos índices em livros, que ajudam a encontrar rapidamente a informação desejada. Os índices são criados em colunas de tabelas e contêm uma lista de valores únicos associados a um conjunto de registros correspondentes. Em termos simples, um índice é uma estrutura de dados que organiza os registros de uma tabela em uma ordem lógica que facilita a pesquisa. Os índices podem ser classificados em dois tipos principais: índices clusterizados e índices não clusterizados. O índice clusterizado é criado em uma coluna da tabela que determina a ordem física dos dados na tabela, cada tabela pode ter apenas um índice clusterizado e os dados são organizados em ordem crescente ou decrescente com base na coluna escolhida. Já os índices não clusterizados são criados em colunas diferentes daquelas utilizadas para criar o índice clusterizado. Eles também possuem uma lista de valores únicos associados a um conjunto de registros correspondentes, mas não determinam a ordem física dos dados na tabela. Criando um índice não clusterizado Para criar um índice não clusterizado em uma tabela, você pode utilizar o comando CREATE INDEX. Por exemplo, suponha que você tenha uma tabela chamada Clientes com uma coluna Nome que é frequentemente usada em consultas. Você pode criar um índice não clusterizado nessa coluna da seguinte forma: Isso criará um índice não clusterizado chamado idx_Clientes_Nome na tabela Clientes, usando a coluna Nome como chave de índice. Criando um índice clusterizado Para criar um índice clusterizado em uma tabela, você pode utilizar o comando CREATE CLUSTERED INDEX. Suponha que você tenha uma tabela chamada Pedidos com uma coluna IDPedido que é única e frequentemente usada em consultas. Você pode criar um índice clusterizado nessa coluna da seguinte forma: Isso criará um índice clusterizado chamado idx_Pedidos_IDPedido na tabela Pedidos, usando a coluna IDPedido como chave de índice. Um exemplo de como os índices podem ser utilizados para melhorar o desempenho de consultas é em uma tabela de vendas de uma loja. Suponha que o gerente da loja queira saber o total de vendas por produto em um determinado período. Sem um índice, o SQL Server precisaria percorrer todos os registros da tabela de vendas, o que pode ser bastante demorado em uma tabela com muitos registros. Com um índice na coluna de código do produto, no entanto, o SQL Server pode localizar rapidamente todos os registros correspondentes e calcular o total de vendas de cada produto. Outra maneira como os índices ajudam a melhorar o desempenho de consultas é permitindo que o banco de dados utilize um plano de execução otimizado, quando um índice é criado em uma ou mais colunas relevantes para uma consulta, o banco de dados pode usar o índice para criar um plano de execução otimizado para essa consulta. Monitorando o desempenho de índices Para monitorar o desempenho dos índices em uma tabela, você pode utilizar a função sys.dm_db_index_usage_stats. Essa função retorna informações sobre o uso de índices em uma instância do SQL Server, incluindo informações como a última vez que um índice foi usado, o número de vezes que foi usado, o número de leituras físicas e lógicas, entre outras. Por exemplo, para verificar o desempenho do índice idx_Clientes_Nome na tabela Clientes, você pode executar a seguinte consulta: Essa consulta retornará informações sobre o uso do índice idx_Clientes_Nome na tabela Clientes. O plano de execução é uma representação interna do caminho que o banco de dados seguirá para executar a consulta. Quando um índice relevante é usado na consulta, o plano de execução pode ser otimizado para usar o índice da maneira mais eficiente possível. Isso pode incluir a seleção de um índice diferente, a mudança da ordem de junção das tabelas e outras otimizações que ajudam a melhorar a velocidade da consulta. No entanto, a criação de índices não deve ser feita de forma indiscriminada, pois pode levar a um consumo excessivo de recursos de memória e disco. É importante considerar cuidadosamente quais colunas da tabela realmente precisam de um índice e quais consultas são mais frequentes e críticas em termos de desempenho. Desvantagens associadas ao uso de índices: · A criação de índices pode aumentar o tempo de inserção de dados na tabela, já que o SQL Server precisa atualizar os índices a cada nova inserção. Além disso, índices ocupam espaço em disco, o que pode ser um problema em sistemas com restrições de espaço. Algumas das vantagens do índices são: · A utilização de índices pode trazer diversas vantagens para um sistema de gerenciamento de banco de dados, uma delas é a melhora no desempenho de consultas, uma vez que o banco de dados pode encontrar os registros relevantes mais rapidamente. · a possibilidade de realizar buscas em colunas específicas com maior eficiência, sem precisar percorrer todos os registros da tabela. · índices podem ajudar a garantir a integridade dos dados, por exemplo, é possível criar um índice em uma coluna que não permite valores duplicados, garantindo que não haja registros duplicados na tabela. · Os índices podem ser criados em diferentes tipos de colunas de uma tabela, incluindo colunas de chave primária, colunas de chave estrangeira e colunas de dados. · Eles podem ser criados de forma manual, usando instruções SQL específicas, ou automaticamente pelo SQL Server, em resposta a determinadas consultas. Em resumo, os índices são estruturas de dados importantes em SQL Server que podem melhorar significativamente a performance de consultas em tabelas grandes. Eles são criados em colunas de tabelas e ajudam a localizar rapidamente os registros que correspondem a uma determinada condição da consulta. Embora haja algumas desvantagens associadas ao uso de índices, as vantagens geralmente superam os potenciais problemas, tornando os índices uma ferramenta valiosa para os desenvolvedores de bancos de dados. Particionamento de Dados O particionamento é uma técnica que consiste em dividir grandes tabelas ou índices em partes menores, chamadas de partições. Essa técnica é fundamental na modelagem de dados, uma vez que possibilita o gerenciamento mais eficiente e escalável de grandes volumes de informações. O particionamento dos dados é baseado em um atributo, ou seja, um campo da tabela que é verificado no momento da inserção. Com isso, o motor do SQL Server sabe para qual filegroup enviar o registro. Além disso, o particionamento também pode ser aplicado em índices e views indexadas, funcionando de maneira semelhante à tabela. Quando um índice segue a mesma regra de particionamento da tabela, dizemos que eles estão alinhados, ou seja, os dados da tabela e do índice são armazenados no mesmo filegroup. Para implementar o particionamento em uma tabela, índice ou view indexada, é necessário criar uma função de partição e um esquema de partição no banco de dados. A função de partição é um objeto independente que estabelece os limites (intervalo) dos dados a serem inseridos nas tabelas e que pode ser reutilizado em mais de um particionamento. Já o esquema de partição é um objeto que está diretamente relacionado à função de partição e que aponta para o intervalo correspondente ao filegroup no qual os dados devem ser armazenados. Esse esquema também é declarado no momento da criação da tabela, índice ou view indexada. Para criar uma tabela, índice ou view indexada no banco de dados, é necessário criar uma função de partição e um esquema de partição. A função de partição é um objeto independente que define os limites dos dados a serem inseridos nas tabelas e pode ser reutilizado em vários particionamentos. O esquema de partição é um objeto relacionado diretamente à função de partição e indica em qual filegroup os dados devem ser armazenados, além de ser declarado durante a criação da tabela, índice ou view indexada. Particionando Tabelas em SQL Server O particionamento de tabelas é uma técnica utilizada para dividir uma tabela extensa em segmentos menores e mais fáceis de gerenciar, sem a necessidade de criar tabelas distintas para cada segmento. Os registros em uma tabela particionada são armazenados fisicamente em grupos de linhas chamados partições, e cada partição pode ser acessada e mantida independentemente das demais. Por exemplo: - Todas as linhas com data anterior a 2012 estão alocadas na primeira partição - Todas as linhas com data anterior a 2013 estão alocadas na segunda partição - Todas as linhas com data anterior a 2014 estão alocadas na terceira partição - Todas as linhas com data 2015 ou superior, estão alocadas na quarta partição * Se a coluna tiver algum valor nulo, este estará alocado na primeira partição. Função de Particionamento Ao implementar o particionamento no SQL Server, o primeiro procedimento após identificar a tabela e a coluna de referência é criar uma função de particionamento, que tem como principal objetivo estabelecer os limites de cada partição. -- Cria uma função de particionamento para ser usada em coluna do tipo DATE usando a opção RIGHT CREATE PARTITION FUNCTION pfSales (DATE) AS RANGE RIGHT FOR VALUES ('2013-01-01', '2014-01-01', '2015-01-01') Range LEFT ou RIGHT O exemplo acima usa a opção RANGE RIGHT para informar a função que deve ser considerada como parte da partição o valor informado e todos os valores maiores do que ele, na opção LEFT, seria o inverso. Na imagem fica mais claro, na sequência como seria a partição com LEFT e RIGHT Esquema de Partição Com a função de particionamento já criada, é viável definir o plano de particionamento que irá atribuir os intervalos de valores às partições que serão alocadas nos filegroups, que foram anteriormente criados e associados a arquivos de dados. -- Cria o esquema que utiliza os limites definidos na função de particionamento e mapeia os filegroups para cada RANGE criado CREATE PARTITION SCHEME myRangePS AS PARTITION pfSales TO (test1fg, test2fg, test3fg, test4fg) ; Tabela Particionada Com a função e o esquema criados, agora é hora de criar a tabela e apontar para o esquema configurado anteriormente. -- Cria uma tabela particionada e utiliza a coluna col1 para segmentar de acordo com o esquema CREATE TABLE PartitionTable (id int PRIMARY KEY, col1 date)) ON myRangePS (col1) ; GO Em resumo o processo consiste em criar os filegroups, definir a função, o esquema e criar a tabela utilizando o esquema. A função de partição é responsável por determinar como uma tabela será particionada com base nos valores da coluna de partição. A tabela particionada é então criada no esquema de partição, que utiliza a função de partição para associar as partições lógicas aos grupos de arquivos físicos correspondentes. Caso cada partição seja mapeada para um grupo de arquivos diferente, é possível alocar as partições em discos com diferentes velocidades de leitura e gravação, dependendo da frequência com que elas são acessadas. Além disso, as partições históricas podem ser configuradas como somente leitura, e as partições individuais podem ser copiadas e restauradas de forma independente, com base na criticidade dos dados armazenados em cada uma delas. Algumas das vantagens do particionamento são: · Melhora o desempenho das consultas: Ao particionar grandes tabelas, as consultas podem ser direcionadas para uma partição específica, o que pode aumentar significativamente a velocidade de recuperação dos dados. · Facilita a manutenção e backup dos dados: As partições podem ser gerenciadas de forma independente, o que permite fazer backup, recuperação ou migração de uma partição sem afetar o restante dos dados. · Melhora a escalabilidade: Particionar as tabelas permite distribuir os dados em vários dispositivos ou servidores, o que aumenta a capacidade de armazenamento e a capacidade de processamento. Além disso, o particionamento também pode ser usado para organizar os dados por data, geolocalização, ou outras características, tornando mais fácil e rápido para os usuários encontrar e analisar os dados relevantes para as análises. Autores: Eder do Prado Borges Leandro Lourenço Malaquias Área: Analytics Função: Engenheiro de Dados Data: 30/03/2023 REFERENCIAS https://learn.microsoft.com/pt-br/sql/t-sql/statements/create-index-transact-sql?view=sql-server-ver16 https://learn.microsoft.com/pt-br/sql/relational-databases/partitions/create-partitioned-tables-and-indexes?view=sql-server-ver16 https://www.devmedia.com.br/particionamento-de-dados-no-sql-server/26713#:~:text=O%20esquema%20de%20parti%C3%A7%C3%A3o%20%C3%A9,tabela%2C%20%C3%ADndice%20ou%20view%20indexada http://leandrobarbieri.blogspot.com/2019/04/particionando-tabelas-em-sql-server.html https://www.cathrinewilhelmsen.net/table-partitioning-in-sql-server/ www.datascienceacademy.com.br
Índices e Partições no SQL SERVER content media
0
0
815
Leandro Malaquias
15 de mar. de 2023
In Discussões gerais
Olá, pessoal, neste artigo/tutorial irei mostrar as instruções para instalar e configurar o Pentaho Data Integration Community Edition (CE) no Microsoft Windows. Primeiro, vamos definir alguns requisitos: · Ter sistema operacional Microsoft Windows 8 ou 10. · Permissão para baixar e instalar o Java. · Conta de Administrador ou Permissão para editar variáveis de ambiente em seu computador. · Configurar as variáveis de ambiente do JRE e JDK para Pentaho Data Integration. Agora vamos iniciar os passo-a-passo: Passo 1. Baixe o software Pentaho Data Integration Primeira coisa a se fazer é baixar os arquivos do Pentaho Data Integration, neste link você encontra a página para fazer download do ‘pdi’. No meu caso, irei baixar o arquivo Pentaho 8.0, mas você pode ir para a versão mais atual que tiver. Clique no botão “Download” para iniciar o download do arquivo .zip em seu computador. Depois que o download do arquivo zip for concluído, extraia os arquivos para pasta Disco Local (C:) do seu computador. Sua pasta deve ter a seguinte aparência: Passo 2. Instale as dependências Java, se necessário Para executar o Pentaho Data Integration, o JRE e o JDK são necessários. Para verificar se você já os tem instalados, vá para este caminho em seu explorador de arquivos: C:\Program Files\Java ou em: C:\Arquivos de programas (x86)\Java Se esta pasta existir você verá pastas semelhantes a estas: Se não existir estas pastas ou você não vê uma ou ambas as pastas acima, então você precisa fazer a instalação do JRE e/ou JDK. Para isso indico o seguinte tutorial: https://medium.com/@mauriciogeneroso/configurando-java-1-instalação-do-jre-e-do-jdk-no-windows-38cacace0377 Passo 3. Configurar as variáveis de ambiente Existem três variáveis de ambiente que precisam ser configuradas. A maneira mais fácil de abrir o menu de variáveis de ambiente é digitar “variáveis de ambiente” na barra de pesquisa do Windows assim: Clique na opção “Editar as variáveis de ambiente do sistema”. Isso abrirá a janela “Propriedades do sistema”. Em seguida, vai abrir uma janela igual a esta: Atenção... pois nesta etapa vamos adicionar três novas variáveis de sistema, muito importante prestar atenção em cada etapa e colocar o caminho correto dos arquivos. Clique no botão “Novo…” em “Variáveis do sistema” e digite o seguinte: 1ª Variável – PENTAHO_JAVA Certifique-se de que o caminho do arquivo de valor da variável seja o mesmo existente em seu computador. Você pode ir até o diretório da pasta Java\jre...\bin e copiar e colar o caminho ou, através do Botão “Procurar Arquivo...” e encontrar o mesmo caminho. Não se esqueça de digitar o nome do arquivo \java.exe após a palavra bin. Pressione “OK” e faço o mesmo caminho para as outras duas variáveis. 2ª Variável – PENTAHO_JAVA_HOME 3ª Variável – JAVA_HOME Obs.: Na 2ª e 3ª variável veja que não é necessário digitar o nome do arquivo \java.exe Pressione “OK” e feche todas as janelas anteriores pressionando “OK” novamente. Passo 4: Criando atalho para Área de Trabalho A pasta data-integration que você baixou anteriormente será semelhante a esta: O arquivo que executa o aplicativo é denominado “Spoon.bat”. Você pode criar um atalho para área de trabalho e para isso, clique sobre ele e com o botão direito do mouse vai em ‘Enviar para’ > ‘Área de trabalho’. Em sua área de trabalho deverá aparecer o arquivo do Spoon.bat Passo 5: Definindo ícone do Spoon Para alterar o ícone e colocar o logo do PDI é bem simples, clique novamente com botão direito no arquivo Spoon.bat, vá em Propriedades e irá abrir a seguinte janela: Clique no botão ‘Alterar ícone...’ e então vai aparecer a seguinte mensagem, mas você pode clicar em OK e seguir adiante. Após você ter clicado em OK, irá abrir a seguinte janela abaixo: Nesta tela já vai mostrar vários ícones, mas o logo que precisamos teremos que buscar em outra pasta. Então, você deve ir ao botão ‘Procurar...’ e clicar nele. Veja que irá abrir uma nova janela dentro da pasta data integration, você deve então procurar pelo ícone spoon.ico, clica sobre ele e em seguida no botão Abrir na parte inferior da tela. Exemplo abaixo: Concluído os passos anteriores, veja que voltamos à tela anterior dos ícones só que agora, o ícone do spoon está selecionado e o caminho dele está na barra acima. Basta clicar em OK. Ao clicar em OK, voltamos para a janela de Propriedades e veja que já aparece o logo do ícone do spoon no arquivo Spoon.bat – Atalho. Após isso, basta clicar em Aplicar e depois em OK novamente. DICA: Nesta mesma janela de Propriedades, você pode ir ao botão Geral na parte superior e alterar o nome do arquivo Spoon.bat. Eu usei a abreviação PDI de (Pentaho Data Integration). Após isso, basta clicar em Aplicar e depois em OK novamente. Passo 6: Abra o aplicativo Pentaho Data Integration Agora que o Java está instalado e as variáveis de ambiente definidas, podemos começar a executar o aplicativo Pentaho Data Integration. Clique duas vezes neste arquivo para abrir o aplicativo Pentaho Data Integration. Neste ponto, você pode começar a usar o PDI clicando nos botões “New transformation” ou “New job”. Para conhecer melhor o ambiente e fazer seus primeiro ETLs, recomendo assistir os vídeos a seguir: Conhecendo o ambiente do PDI, disponível em: Curso de Integração de dados com Pentaho #2 - Conhecendo o ambiente Fazendo primeiro ETL, disponível em: Curso de Integração de dados com Pentaho #3 - Criando o projeto Transformações Simples, disponível em: Pentaho - Transformações Simples Referências https://www.hitachivantara.com/en-us/products/dataops-software/data-integration-analytics/pentaho-tutorials.html?ecid=ms_glo_bd_en_sscepen02?icid=as_us_en_2020068
Pentaho: Como instalar e configurar no Windows content media
1
0
5k
Leandro Malaquias
28 de fev. de 2023
In Big Data
Windows Function + CTE Introdução às funções da janela Windows function, ou função de janela em português, é um recurso da linguagem SQL que permite aplicar funções analíticas em um conjunto de registros selecionados em uma consulta. As funções de janela permitem calcular valores agregados com base em uma janela de registros, que pode ser definida com base em uma ordenação específica, por exemplo. Isso pode ser útil em uma variedade de cenários, como cálculo de médias móveis, classificação de dados em uma tabela ou a identificação de valores máximos e mínimos em um conjunto de registros. As funções de janela têm uma sintaxe específica em SQL e geralmente são escritas junto com a cláusula "OVER", que define a janela de registros a serem considerados na aplicação da função. Existem muitas funções de janela disponíveis em SQL, incluindo funções de agregação como SUM e COUNT, funções de ranking como RANK e DENSE_RANK, e funções analíticas como LAG e LEAD. A principal vantagem de usar funções de janela sobre funções de agregação regulares é: as funções de janela não fazem com que as linhas sejam agrupadas em uma única linha de saída, as linhas retêm suas identidades separadas e um valor agregado será adicionado a cada linha. Em resumo, as funções de janela são uma ferramenta poderosa em SQL que podem ajudar a realizar cálculos e análises mais complexas em um conjunto de registros. Sintaxe SELECT column1, column2, column3, SUM(column3) OVER(PARTITION BY column1 ORDER BY column2) AS sum_column3 FROM table_name Tipos de funções do Windows Uma função de janela agregada é semelhante a uma função agregada comum, exceto que adicioná-la a uma consulta não altera o número de linhas retornadas. Em vez disso, para cada linha, o resultado da função de janela agregada é como se a agregação correspondente fosse executada em todas as linhas na "moldura da janela" especificada pela cláusula OVER. Ao contrário das funções comuns, as funções de janela não podem usar a palavra-chave DISTINCT. Além disso, as funções de janela podem aparecer apenas no conjunto de resultados e na cláusula ORDER BY de uma instrução SELECT. 1. Funções de Janela Agregadas Exemplos: SELECT order_id, order_date, customer_name, city, order_amount ,SUM(order_amount) OVER(PARTITION BY city) as sum_total FROM [dbo].[Orders] No exemplo acima, a função SUM() somou os valores de cada pedido, particionou por cidade e retornou com a soma do valor total. Contudo, a consulta trouxe outra tabela “sum_total” com o valor total para cada linha retendo sua identidade. SELECT order_id, order_date, customer_name, city, order_amount ,AVG(order_amount) OVER(PARTITION BY city) as media FROM [dbo].[Orders] A função Average ou AVG executa igualmente com uma função Window, soma-se o valor total do pedido e divide pela quantidade total de pedidos. O resulta acima demonstra o valor médio dos pedidos para cada cidade. 2. Funções da janela de classificação As funções da janela de classificação são usadas para realizar operações em conjuntos de linhas dentro dessas janelas, as funções RANKING classificarão os valores de um campo especificado e os categorizarão de acordo com sua classificação. Exemplos: SELECT order_id, order_date, customer_name, city, order_amount ,RANK() OVER(ORDER BY order_amount DESC) [Rank] FROM [dbo].[Orders] Na demonstração acima, verifica que a função RANK() em SQL atribui o mesmo ranking para dois registros que possuem o mesmo valor na coluna utilizada para a classificação, o que faz com que a próxima classificação seja ignorada. Dessa forma, se houver dois valores idênticos na classificação 3, ambos receberão a mesma classificação e a próxima classificação será pulada, atribuindo a classificação 5 ao próximo registro. SELECT order_id, order_date, customer_name, city, order_amount ,DENSE_RANK() OVER(ORDER BY order_amount DESC) [Rank] FROM [dbo].[Orders] A diferença entre a função DENSE_RANK() e a função RANK() é que a primeira não deixa lacunas entre as classificações subsequentes. Em outras palavras, a função DENSE_RANK() atribui um rank sequencial para cada linha na tabela, e valores repetidos recebem a mesma classificação. 3. Funções da Janela de Valor As funções da janela de valor em SQL permitem que você trabalhe com valores que aparecem em outras linhas dentro da mesma consulta. Isso é especialmente útil em casos em que você precisa comparar valores em linhas diferentes ou usar um valor de linha anterior ou posterior na análise. As funções que podem ser usadas são LAG(), LEAD(), FIRST_VALUE(), LAST_VALUE() Exemplos: SELECT order_id,customer_name,city, order_amount,order_date, --Na linha abaixo, 1 indica verificar a linha anterior à linha atual. LAG(order_date,1) OVER(ORDER BY order_date) prev_order_date FROM [dbo].[Orders] A função LAG permite que você acesse dados da linha anterior dentro do mesmo conjunto de resultados, sem a necessidade de usar junções SQL. Como demonstrado no exemplo abaixo, ao utilizar a função LAG, é possível obter a data do pedido imediatamente anterior. SELECT order_id,customer_name,city, order_amount,order_date, --Na linha abaixo, 1 indica verificar a linha seguinte à linha atual. LEAD(order_date,1) OVER(ORDER BY order_date) next_order_date FROM [dbo].[Orders] A função LEAD permite que você acesse os dados da linha subsequente dentro do mesmo conjunto de resultados, sem a necessidade de usar junções SQL. Como mostrado no exemplo abaixo, ao utilizar a função LEAD, é possível obter a data do próximo pedido. A função FIRST_VALUE() retorna o primeiro valor na janela especificada, enquanto a função LAST_VALUE() retorna o último valor na janela. Ambas as funções requerem uma expressão de entrada, que é o valor usado para determinar o primeiro e o último valor na janela. Além disso, essas funções também exigem uma cláusula OVER que especifica a janela que deve ser usada para a análise. SELECT order_id,order_date,customer_name,city, order_amount, FIRST_VALUE(order_date) OVER(PARTITION BY city ORDERBY order_date) first_order_date, LAST_VALUE(order_date) OVER(PARTITION BY city ORDERBY city) last_order_date FROM [dbo].[Orders] Na imagem acima, podemos ver claramente que o primeiro pedido recebido em 02/04/2017 e o último pedido recebido em 11/04/2017 para a cidade de Arlington e funciona da mesma forma para outras cidades. CTE (Common Table Expressions) Uma Expressão de Tabela Comum (Common Table Expression - CTE) é um conjunto temporário de resultados nomeado que pode ser referenciado dentro de uma instrução SELECT, INSERT, UPDATE ou DELETE em SQL. As CTEs são frequentemente usadas para simplificar consultas complexas, dividindo-as em partes menores e mais gerenciáveis. A sintaxe para criar uma CTE é a seguinte: WITH cte_nome (coluna1, coluna2, ...) AS ( SELECT coluna1, coluna2, ... FROM nome_da_tabela WHERE condição ) SELECT * FROM cte_nome; Aqui, ‘cte_nome’ é o nome dado à CTE e ‘(coluna1, coluna2, ...)’ é uma lista opcional de nomes de colunas que definem a estrutura da CTE. A instrução SELECT dentro dos parênteses define os dados a serem incluídos na CTE. Depois que a CTE for definida, ela poderá ser referenciada em declarações SQL subsequentes usando seu nome. Por exemplo: WITH sales_cte AS ( SELECT order_id, sum(order_amount) as total_sales FROM Orders GROUP BY order_id ) SELECT * FROM sales_cte WHERE total_sales > 1000; Neste exemplo, a CTE ‘sales_cte’ calcula as vendas totais para cada cliente e, em seguida, a instrução SELECT fora da CTE seleciona apenas os clientes cujas vendas totais são maiores que $1000. Vantagens de usar CTE A seguir estão algumas vantagens de usar expressões de tabela comuns ou CTEs: § Melhore a legibilidade de consultas complexas. Você usa CTEs para organizar consultas complexas de maneira mais organizada e legível. § Capacidade de criar consultas recursivas. Consultas recursivas são consultas que fazem referência a si mesmas. As consultas recursivas são úteis quando você deseja consultar dados hierárquicos. § Use em conjunto com funções. Você pode usar CTEs em conjunto com funções para criar um conjunto de resultados inicial e usar outra instrução select para processar ainda mais esse conjunto de resultados. Autor: Leandro Lourenço Malaquias Área: Analytics Função: Engenheiro de Dados Data: 28/02/2023 Referencias https://learn.microsoft.com/en-us/sql/t-sql/queries/select-window-transact-sql?view=sql-server-ver16 https://mode.com/sql-tutorial/sql-window-functions/#the-usual-suspects-sum-count-and-avg https://www.sqlite.org/windowfunctions.html#aggwinfunc https://www.sqlshack.com/use-window-functions-sql-server/ https://soloweb.com.br/blog/2022/07/17/melhorando-desempenho-de-consultas-sql-com-cte-common-table-expressions/#:~:text=Uma%20CTE%20%C3%A9%20um%20conjunto,durante%20a%20execu%C3%A7%C3%A3o%20da%20consulta. https://www.macoratti.net/13/05/sql_cte1.htm https://learn.microsoft.com/pt-br/sql/t-sql/queries/with-common-table-expression-transact-sql?view=sql-server-ver16
Windows Function + CTE content media
1
0
87

Leandro Malaquias

Mais ações
bottom of page