O Amazon Redshift é um serviço de data warehousing sem servidor fornecido pela AWS para executar o processamento analítico on -line (OLAP). É muito eficiente e permite trabalhar em consultas complexas e problemas de big data usando seus nós de computação paralela. Como o Redshift é projetado no banco de dados baseado em SQL, ele permite que os usuários utilizem muitas funções SQL e também possuem suas próprias funções internas. Neste artigo, você será esclarecido sobre o desvio para o vermelho Listagg função para concatenar as entradas de diferentes linhas para formar uma string.
Como o seu nome define, essa função é usada para agregar a lista. Ou em palavras mais simples, é usado para concatenar entradas de diferentes linhas em uma tabela para formar uma string. Certamente isso é difícil de digerir teoricamente, por isso o guiaremos mais sobre isso usando certos exemplos. Mas primeiro vamos pular em sua sintaxe e explorar mais sobre isso.
Sintaxe para usar a função ListAgg
O Listagg A função no desvio para o vermelho pode ser usada seguindo a sintaxe dada.
Selecione Listagg (distinto , ) dentro do grupo (ordem por ) de
A sintaxe acima mostra os atributos necessários para o uso da função ListAgg.
Nome da coluna: A coluna na tabela de desvio para o vermelho na qual você vai usar esta função.
Delimitador: Este é simplesmente o separador da lista que você deseja usar. Na maioria dos casos. Isso é opcional para mencionar e, por padrão, seu valor é nulo.
Lista de pedidos: Isso é usado para definir como você deseja classificar os valores.
Nome da tabela: Esta é apenas a tabela de banco de dados na qual você está trabalhando tudo isso.
Usando a função listagg
Nesta seção, mostraremos alguns casos de uso prático e exemplos para explicar brevemente como a função ListAgg no Redshift pode ser usada para obter o resultado desejado.
Uso de uso 1
Primeiro, vamos dar o exemplo mais simples para mostrar como a função ListAgg no Redshift funciona. Suponha que você tenha uma tabela de banco de dados nomeada it_team tendo uma única coluna para os nomes das pessoas que trabalham naquele departamento.
Agora, você simplesmente deseja apresentar todos os nomes em uma única forma de sequência separada por vírgulas. Para esse fim, você usará a função ListAgg da seguinte maneira.
Selecione Listagg (nome, ',') da organização.it_team
Na saída, você receberá todos os valores da coluna nome em uma única linha na forma de uma corda.
Então, você pode ver como é fácil usar a função ListAgg e concatenar as linhas de uma tabela no Redshift.
Uso de uso 2
Tome um caso em que deseja descobrir todos os líderes de equipe que trabalham em diferentes projetos em sua organização. O que você tem é uma tabela chamada dev_team que mostra todos os projetos e líderes de equipe em diferentes colunas.
Agora, existem poucos casos em que uma única pessoa está trabalhando como líder da equipe para mais de um projeto, mas você só quer tomar cada nome apenas uma vez. Para esse fim, precisamos usar o Distinto opção disponível com a função ListAgg para ignorar os valores repetidos.
Selecione Listagg (Distinct Team_Lead, '|') como Team_Leaders da organização.dev_team
Você pode ver que, na saída, temos todos os líderes de nossa equipe e também não há duplicação de nomes, pois usamos o Distinto opção. Além disso, você pode ver que o nome da coluna de saída é alterado para Líderes de torcida. Em vez do nome da coluna padrão para melhorar a compreensão dos dados. O delimitador usado aqui é um símbolo de tubo para separar os nomes dos leads.
Uso de uso 3
Suponha que seu veterano tenha atribuído a você uma tarefa para descobrir os projetos sob cada líder da equipe e apresentá -los em uma única string. Vamos considerar novamente o dev_team mesa.
Para uma relação individual entre projetos e líderes de equipe, essa tarefa seria simples. Nesse caso, pode -se observar que há ainda mais de um projeto sob alguns líderes de equipe. Para isso, você precisa criar uma nova consulta do Redshift, como mostrado abaixo.
Selecione Team_Lead, listagg (Project_name, ',') como projetos da organização.dev_team Grupo de Team_Lead
Nesta consulta, a função agregada é aplicada ao Nome do Projeto coluna. Ele também possui mais um parâmetro usado para agrupar a saída da função para o Liderança da equipe coluna.
Você pode ver que nosso alvo necessário é alcançado e com a eficiência que ele organizou tudo de maneira excelente. A partir disso, você pode ver facilmente qual líder de equipe está lidando com quais projetos em sua organização.
Uso de uso 4
Em todos os exemplos anteriores, estamos apenas concatenando as linhas de uma única coluna da tabela. Mas agora, neste exemplo, você verá que podemos até formar uma única string a partir de valores de várias linhas e colunas diferentes.
Suponha que, ao trabalhar no departamento de vendas de uma grande empresa, você recebe uma tarefa para analisar os detalhes de seus clientes e todos os projetos concedidos por cada cliente com o tempo de conclusão dos projetos. Todos esses dados estão presentes em uma única tabela de banco de dados nomeada Detalhes do Projeto tendo três colunas.
Vamos criar uma consulta para alcançar a saída desejada, utilizando a função Redshift ListAgg. Você estará usando a seguinte consulta para obter a saída desejada:
Selecione Nome do cliente, listagg (Projetos || 'será concluído em' || conclusão_time, ',') Dentro do grupo (ordem por client_name) da organização.Detalhes do Projeto grupo por client_name
A função listagg é aplicada em duas colunas projetos e conclusão_time Usando o símbolo de tubo duplo. Em um só lugar, usamos a expressão vai completar como delimitador e vírgula para a outra posição. A produção é ordenada em ordem alfabética ascendente em relação ao Nome do cliente coluna. A saída da consulta Redshift acima será a seguinte:
Agora, você pode ver que obtivemos nossos resultados. Ele mostra cada projeto com sua duração e o cliente a quem pertence.
Conclusão
A função Redshift ListAgg é muito útil se você deseja representar os dados de várias linhas de uma coluna em uma única linha. A função
[cc lang = "python" width = "100%" altura = "100%" escapado = "true" tema = "Blackboard" Nowrap = "0"] pode assumir vários atributos e pode gerar saída em diferentes formas, conforme necessário. Você pode criar consultas simples e complexas usando esta função.