Ir para o conteúdo principal

Apresentando Collations para Databricks

Respeite facilmente as diferenças de idioma ao processar dados

Introducing Collations to Databricks

Published: January 10, 2025

Produto7 min de leitura

Summary

  • As colações tornam os bancos de dados conscientes da linguagem e do contexto em mais de 100 idiomas, garantindo que eles lidem com o texto como os usuários esperam.
  • Use colações para tarefas como comparação insensível a maiúsculas e minúsculas para encontrar nomes em inglês, ordenação do alfabeto não inglês e pesquisas insensíveis a acentos.
  • Alcance até 22 vezes mais rápido a execução de consultas em comparação com métodos tradicionais para obter resultados insensíveis a maiúsculas e minúsculas.

Construir aplicações empresariais globais significa lidar com idiomas diversos e entrada de dados inconsistente. Como um banco de dados sabe ordenar "Äpfel" após "Apfel" em alemão ou tratar "ç" como "c" em francês? Ou lidar com usuários digitando "John Smith" versus "john smith" e decidir se são os mesmos?   

As colações simplificam o processamento de dados ao definir regras para classificar e comparar textos de maneiras que respeitam a linguagem e a sensibilidade ao caso. As colações tornam os bancos de dados conscientes da linguagem e do contexto, garantindo que eles manipulem o texto conforme esperado pelos usuários. 

Estamos animados para compartilhar que as colações agora estão disponíveis em Visualização Pública com o Databricks Runtime 16.1 (em breve para Databricks SQL Canal de Visualização com a versão 2024.50 e Databricks Delta Live Tables). Colações fornecem um mecanismo para definir regras de comparação de strings adaptadas a requisitos de idioma específicos, como sensibilidade a maiúsculas e minúsculas e sensibilidade a acentos. Neste blog, exploraremos como as colações funcionam, por que são importantes e como escolher a correta para suas necessidades.

Agora, com as Collations, os usuários podem escolher entre mais de 100 regras de collation específicas para cada idioma para implementar em seus fluxos de trabalho de dados, facilitando operações como ordenação, pesquisa e junção de conjuntos de dados de texto multilíngues. O suporte a colação tornará mais fácil aplicar as mesmas regras ao migrar de sistemas de banco de dados legados. Essa funcionalidade melhorará significativamente o desempenho e simplificará o código, especialmente para consultas comuns que exigem comparações insensíveis a maiúsculas e acentos.

Principais características do suporte à colação

O suporte à colação do Databricks inclui:

  • Mais de 100 idiomas, com variações de sensibilidade a maiúsculas e minúsculas e acentos
  • Mais de 100 expressões Spark & SQL
  • Compatibilidade com todas as operações de dados (junções, classificação, agregação, agrupamento, etc.)
  • Implementação otimizada para Photon
  • Suporte nativo para tabelas Delta, incluindo otimizações de desempenho como omissão de dados, ordenação z, agrupamento líquido, partição dinâmica e poda de arquivos
  • Simplifica as migrações de sistemas de banco de dados legados

O suporte a Collation é totalmente de código aberto e integrado ao Apache Spark™ e Delta Lake.

Usando colações em suas consultas

As colações oferecem uma integração robusta com as funcionalidades estabelecidas do Spark, permitindo que operações como junções, agregações, funções de janela e filtros funcionem perfeitamente com dados colados. A maioria das expressões de string é compatível com colações, permitindo seu uso em várias expressões como CONTAINS, STARTSWITH, REPLACE, TRIM, entre outras. Mais detalhes estão na colação documentação.

Resolvendo tarefas comuns com colações

Para começar com as colações, crie (ou modifique) uma coluna de tabela com a colação apropriada. Para nomes gregos, você usaria a colação EL_AI, onde EL é o identificador de idioma para o grego e AI significa insensível ao acento. Para nomes em inglês (que não têm acentos), você usaria UTF8_LCASE.

Para mostrar os cenários desbloqueados pelas colações, vamos realizar as seguintes tarefas:

  • Use comparação insensível a maiúsculas e minúsculas para encontrar nomes em inglês
  • Use a ordem do alfabeto grego para classificar nomes gregos
  • Pesquise por nomes gregos de maneira insensível a acentos

Vamos usar uma tabela contendo os nomes dos heróis da Ilíada de Homero em grego e inglês para demonstrar:

Para listar todas as colações disponíveis, você pode consultar collations TVF - SELECT * FROM collations().

Você deve executar o comando ANALYZE após os comandos ALTER para garantir que as consultas subsequentes possam aproveitar a omissão de dados:

Agora, você não precisa mais fazer LOWER antes de comparar explicitamente os nomes em inglês. A poda de arquivos também ocorrerá automaticamente.

Para classificar de acordo com as regras da língua grega, você pode simplesmente usar ORDER BY. Note que o resultado será diferente da classificação sem a EL_AI colação.

E para pesquisar, de maneira insensível ao acento, digamos todas as linhas que se referem a Agamemnon (ou Ἀγαμέμνων em grego), você apenas aplica um filtro que corresponderá à versão acentuada do nome grego:

 

Desempenho com colações

O suporte a colação elimina a necessidade de realizar operações custosas para obter resultados insensíveis a maiúsculas, simplificando o processo e melhorando a eficiência. O gráfico abaixo compara o tempo de execução usando a função SQL LOWER versus suporte a colação para obter resultados insensíveis a maiúsculas. A comparação foi feita em 1B de strings geradas aleatoriamente. A consulta visa filtrar, em alguma coluna 'col', todas as strings iguais a 'abc' de maneira insensível a maiúsculas. No cenário em que a colação UTF8_BINARY legada é usada, a condição de filtro é LOWER(col) == ‘abc’. Quando a coluna 'col' é colada com a colação UTF8_LCASE, a condição de filtro é simplesmente col == ‘abc’, que alcança o mesmo resultado. Usar colação resulta em até 22x mais rápida execução de consultas aproveitando o Delta file-skipping (neste caso, o Photon não é usado em nenhuma das consultas).

Aceleração de desempenho com Collations

Com o Photon, a melhoria de desempenho pode ser ainda mais significativa (as velocidades reais variam dependendo da colação, função e dados). O gráfico abaixo mostra as velocidades com e sem Photon para comparação de igualdade, funções SQL STARTSWITH, ENDSWITH e CONTAINS com colação UTF8_LCASE. As funções foram executadas em um conjunto de dados de strings ASCII geradas aleatoriamente com 1000 caracteres de comprimento. No exemplo, STARTSWITH e ENDSWITH mostraram aceleração de desempenho 10x ao usar colações. 

Colações com Photon

Com exceção da implementação otimizada pelo Photon, todos os recursos de collations estão disponíveis no Spark de código aberto. Não há alterações no formato dos dados, o que significa que os dados permanecem codificados em UTF-8 nos arquivos subjacentes, e todos os recursos são suportados tanto no Spark de código aberto quanto no Delta Lake. Isso significa que os clientes não estão presos e devem considerar seu código como portátil em todo o ecossistema Spark.

O que vem a seguir

No futuro próximo, os clientes poderão definir colações no nível do Catálogo, Esquema ou Tabela. O suporte para RTRIM também está chegando em breve, permitindo que as comparações de strings ignorem espaços em branco indesejados no final. Fique atento à página inicial do Databricks e às páginas de documentação do What’s Coming para atualizações.

Introdução

Comece com collations, leia a documentação da Databricks. 

Para saber mais sobre o Databricks SQL, visite nosso site ou leia a documentação. Você também pode conferir o tutorial do produto para Databricks SQL. Se você deseja migrar seu armazém existente para um armazém de dados sem servidor, de alto desempenho, com uma ótima experiência do usuário e um custo total mais baixo, então o Databricks SQL é a solução -- experimente gratuitamente.

 

(This blog post has been translated using AI-powered tools) Original Post

Nunca perca uma postagem da Databricks

Inscreva-se nas categorias de seu interesse e receba as últimas postagens na sua caixa de entrada