Construir aplicativos empresariais globais significa lidar com diversas linguagens e entrada de dados inconsistentes. Como um banco de dados sabe classificar “Äpfel” depois de “Apfel” em alemão ou tratar “ç” como “c” em francês? Ou lidar com os usuários digitando “John Smith” versus “john smith” e decidir se são iguais?
Os agrupamentos simplificam o processamento de dados definindo regras para classificar e comparar texto de maneira que respeitem o idioma e a distinção entre maiúsculas e minúsculas. Os agrupamentos tornam os bancos de dados conscientes do idioma e do contexto, garantindo que eles manipulem o texto conforme os usuários esperam.
Temos o prazer de anunciar que os agrupamentos agora estão disponíveis em Visualização Pública com Databricks Runtime 16.1 (em breve para SQL de blocos de dados e Tabelas dinâmicas Delta do Databricks). Agrupamentos fornecem um mecanismo para definir regras de comparação de strings adaptadas a requisitos específicos de idioma, como distinção entre maiúsculas e minúsculas e sensibilidade ao sotaque. Neste weblog, exploraremos como funcionam os agrupamentos, por que eles são importantes e como escolher o mais adequado para suas necessidades.
Agora, com os agrupamentos, os usuários podem escolher entre mais de 100 regras de agrupamento específicas de idioma para implementar em seus fluxos de trabalho de dados, facilitando operações como classificação, pesquisa e junção de conjuntos de dados de texto multilíngues. O suporte de agrupamento facilitará a aplicação das 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 que não diferenciam maiúsculas de minúsculas e acentos.
Principais recursos de suporte de agrupamento
O suporte à compilação do Databricks inclui:
- Mais de 100 idiomas, com variações de sensibilidade a maiúsculas e minúsculas
- Mais de 100 expressões Spark e SQL
- Compatibilidade com todas as operações de dados (junções, classificação, agregação, clustering, and so on.)
- Implementação otimizada para fótons
- Suporte nativo para tabelas Delta, incluindo otimizações de desempenho, como salto de dados, ordenação z, clustering líquido, partição dinâmica e remoção de arquivos
- Simplifica as migrações de sistemas de banco de dados legados
O suporte de agrupamento é totalmente de código aberto e integrado ao Apache Spark™ e ao Delta Lake.
Usando agrupamentos em suas consultas
Os agrupamentos oferecem uma integração robusta com funcionalidades estabelecidas do Spark, permitindo que operações como junções, agregações, funções de janela e filtros funcionem perfeitamente com os dados agrupados. A maioria das expressões de string são compatíveis com agrupamentos, permitindo seu uso em diversas expressões como CONTAINS, STARTSWITH, REPLACE, TRIM, entre outras. Mais detalhes estão no agrupamento documentação.
Resolvendo tarefas comuns com agrupamentos
Para começar com agrupamentos, crie (ou modifique) uma coluna da tabela com o agrupamento apropriado. Para nomes gregos, você usaria o EL_AI agrupamento, onde EL é o identificador de idioma para grego e IA significa insensível ao sotaque. Para nomes em inglês (que não possuem acentos), você usaria UTF8_LCASE.
Para mostrar os cenários desbloqueados por agrupamentos, vamos realizar as seguintes tarefas:
- Use comparação sem distinção entre maiúsculas e minúsculas para encontrar nomes em inglês
- Use a ordem do alfabeto grego para classificar nomes gregos
- Pesquise nomes gregos sem distinção de sotaque
Usaremos uma tabela contendo os nomes dos heróis da obra de Homero Ilíada em grego e inglês para demonstrar:
Para listar todos os agrupamentos disponíveis, você pode consultar agrupamentos TVF- SELECT * FROM agrupamentos().
Você deve executar o ANALISAR comando após o ALTERAR comandos para garantir que as consultas subsequentes possam aproveitar o salto de dados:
Agora você não precisa mais fazer MAIS BAIXO antes de comparar explicitamente os nomes em inglês. A remoção de arquivos também acontecerá nos bastidores.
Para classificar de acordo com as regras da língua grega, você pode simplesmente usar ENCOMENDAR POR. Observe que o resultado será diferente da classificação sem o EL_AI agrupamento.
E para pesquisar, sem distinção de acentos, digamos todas as linhas que se referem a Agamenon (ou Ἀγαμέμνων em grego), basta aplicar um filtro que irá corresponder à versão acentuada do nome grego:
Desempenho com agrupamentos
O suporte de agrupamento elimina a necessidade de realizar operações dispendiosas para obter resultados que não diferenciam maiúsculas de minúsculas, simplificando o processo e melhorando a eficiência. O gráfico abaixo compara o tempo de execução usando a função LOWER SQL versus o suporte de agrupamento para obter resultados que não diferenciam maiúsculas de minúsculas. A comparação foi feita em 1B strings geradas aleatoriamente. A consulta tem como objetivo filtrar, em alguma coluna ‘col’, todas as strings iguais a ‘abc’ sem distinção entre maiúsculas e minúsculas. No cenário em que o agrupamento UTF8_BINARY herdado é usado, a condição de filtro é LOWER(col) == ‘abc’. Quando a coluna ‘col’ é agrupada com o agrupamento UTF8_LCASE, a condição de filtro é simplesmente col == ‘abc’, que atinge o mesmo resultado. Usando agrupamento produz até Execução de consultas 22x mais rápida aproveitando o salto de arquivo Delta (nesse caso, Photon não é usado em nenhuma das consultas).
Com Photon, a melhoria de desempenho pode ser ainda mais significativa (as velocidades reais variam dependendo do agrupamento, função e dados). O gráfico abaixo mostra velocidades com e sem Photon para comparação de igualdade, funções SQL STARTSWITH, ENDSWITH e CONTAINS com agrupamento UTF8_LCASE. As funções foram executadas em um conjunto de dados de strings somente ASCII geradas aleatoriamente com comprimento de 1.000 caracteres. No exemplo, STARTSWITH e ENDSWITH mostraram Aceleração de desempenho de 10x ao usar agrupamentos.
Com exceção da implementação otimizada para Photon, todos os recursos de agrupamento 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 no Spark de código aberto e no Delta Lake. Isso significa que os clientes não ficam presos e devem ver seu código como portátil em todo o ecossistema Spark.
O que vem a seguir
Num futuro próximo, os clientes poderão definir agrupamentos no nível de Catálogo, Esquema ou Tabela. O suporte para RTRIM também estará disponível em breve, permitindo que comparações de strings ignorem espaços em branco indesejáveis. Fique ligado na página inicial do Databricks e nas páginas de documentação do que está por vir para atualizações.
Começando
Comece com agrupamentos, leia os Databricks documentação.
Para saber mais sobre Databricks SQL, visite nosso website ou leia a documentação. Você também pode conferir o tour do produto para Databricks SQL. Se você deseja migrar seu warehouse existente para um knowledge warehouse de alto desempenho e sem servidor, com uma ótima experiência do usuário e custo complete mais baixo, o Databricks SQL é a solução. experimente de graça.