Ir para o conteĆŗdo principal
Produto

Apresentando Collations para Databricks

Respeite facilmente as diferenƧas de idioma ao processar dados

por Kent Marten, Menelaos Karavelas, Aleksandar Tomić, Stefan Kandić e Stevo Mitrić

  • 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

Receba os posts mais recentes na sua caixa de entrada

Assine nosso blog e receba os posts mais recentes diretamente na sua caixa de entrada.