19 de junho de 20266 min de leitura

Novas funções e operadores de string no Fabric Data Warehouse: o que muda para analytics e tratamento de dados no Brasil

Banner - Novas funções e operadores de string no Fabric Data Warehouse: o que muda para analytics e tratamento de dados no Brasil

Novas funções e operadores de string no Fabric Data Warehouse (Preview)

TL;DR: Fabric Data Warehouse agora oferece funções de busca aproximada (fuzzy matching) — EDIT_DISTANCE, EDIT_DISTANCE_SIMILARITY, JARO_WINKLER_DISTANCE, JARO_WINKLER_SIMILARITY — e operadores modernos (||, ||=, UNISTR). Para empresas brasileiras, isso significa detectar variações de nomes, endereços e dados cadastrais diretamente no T-SQL, reduzindo pipelines externos e acelerando projetos de deduplicação e integração de dados.

Por que isso importa para quem lida com dados reais?

Dados do mundo real são imprevisíveis. Em cadastros de clientes brasileiros, é comum o nome "Ana Maria" aparecer como "Ana-Maria", "Ana maria" ou "Ana Maria Silva". Cidades como "São Paulo" viram "Sao Paulo", " S.Paulo" ou "SAO PAULO". Endereços, nomes de produtos e categorias sofrem do mesmo problema. Essas diferenças tornam buscas exatas (WHERE nome = 'Ana Maria') ineficazes para tarefas como deduplicação, enriquecimento de dados ou análise de similaridade.

O Fabric Data Warehouse ataca esse problema com funções nativas de comparação aproximada de strings. Não é preciso mais extrair dados para um job Python, usar bibliotecas externas ou configurar pipelines complexos de limpeza. A lógica de matching pode ser aplicada diretamente na consulta T-SQL.

Como as novas funções funcionam na prática?

A Microsoft disponibilizou quatro funções principais, divididas em dois grupos:

Função Objetivo Uso típico
EDIT_DISTANCE Mede quantas edições (inserção, remoção, substituição) separam duas strings Encontrar o 'custo' de transformar uma string em outra
EDIT_DISTANCE_SIMILARITY Retorna um score normalizado (0 a 1) de similaridade baseado em edit distance Filtrar ou ranquear candidatos a match com threshold
JARO_WINKLER_DISTANCE Mede distância baseada em trocas de caracteres, com peso extra para prefixos comuns Comparação de nomes próprios, onde o começo da palavra é mais relevante
JARO_WINKLER_SIMILARITY Versão normalizada da distância Jaro-Winkler Ideal para agrupar variações de um mesmo nome (ex.: "Philip" vs "Phillip")

Além disso, o Fabric Data Warehouse agora suporta:

  • Operador ||: Concatenação de strings no estilo ANSI SQL, mais legível e portável entre bancos (útil para quem migra de PostgreSQL ou MySQL).
  • Operador ||=: Concatenação direta em variáveis, simplificando scripts de stored procedures.
  • Função UNISTR: Permite usar sequências de escape Unicode em strings, essencial para trabalhar com caracteres acentuados, símbolos e textos internacionais sem depender de collation.

Exemplo real: detectando variações de nomes de cidades em notas fiscais

Suponha que você tenha uma tabela de invoices com city names inconsistentes — "Hongkong", "Hong-Kong", "Hong Kong". Antes, você precisaria de uma lógica complexa ou de uma ferramenta externa. Agora:

SELECT city, COUNT(*) 
FROM invoices
WHERE EDIT_DISTANCE(city, 'Hong Kong') <= 2
GROUP BY city;

Isso retorna todas as variações que estão a até 2 edições de "Hong Kong", agrupando-as. O mesmo padrão se aplica a dados brasileiros: EDIT_DISTANCE(cidade_cliente, 'São Paulo') <= 2 capturaria "Sao Paulo", "S Paulo", "São Paulo" e similares.

E para identificar potenciais duplicatas?

Use JARO_WINKLER_SIMILARITY com um threshold:

SELECT *
FROM clientes
WHERE JARO_WINKLER_SIMILARITY(nome, 'João Silva') > 0.90;

Isso pode revelar registros como "João Silva", "João SIlva" ou "Joao Silva", ajudando na limpeza e na unificação de bases.

O que muda no dia a dia do time de dados?

  • Menos pipelines de limpeza: a lógica de fuzzy matching fica no SQL, reduzindo dependência de camadas externas (Python, Spark, ferramentas de ETL).
  • Consultas mais expressivas: operadores || e ||= tornam o código T-SQL mais limpo e portável entre bancos.
  • Suporte a Unicode nativo: com UNISTR, caracteres acentuados e símbolos são tratados de forma explícita, evitando surpresas com charset.
  • Portabilidade: desenvolvedores que vêm de outros bancos (PostgreSQL, MySQL) encontram um ambiente mais familiar.

No entanto, fique atento: as funções estão em preview. Antes de usar em produção, vale testar a performance com datasets reais — especialmente EDIT_DISTANCE, que pode ser custosa em tabelas muito grandes se aplicada sem filtros.

Impacto para empresas brasileiras

Para times de dados no Brasil, essa atualização é especialmente relevante. Dados cadastrais brasileiros são notoriamente inconsistentes — nomes com acentos, abreviações, variações regionais ("Rio de Janeiro" vs "Rio", "RJ") e erros de digitação. Ter funções de approximate string matching diretamente no warehouse reduz a fricção de projetos de:

  • Deduplicação de clientes (CRM, bases legadas, importação de terceiros)
  • Integração de dados (fusão de bases de diferentes sistemas)
  • Análise de localização (cidades, bairros, endereços)
  • Enriquecimento de dados (correção automática baseada em similaridade)

Em vez de construir um pipeline complexo com Python + Spark + bibliotecas de fuzzy matching, você pode começar com uma simples consulta SQL. Claro, para volumes muito grandes ou matching multi-campo, uma solução dedicada ainda faz sentido — mas para 80% dos casos, as novas funções já resolvem.

Próximos passos

Teste as funções em seu ambiente Fabric Data Warehouse (em preview). Comece com um caso real: pegue uma tabela com nomes de clientes ou cidades e experimente EDIT_DISTANCE_SIMILARITY com thresholds de 0.8 a 0.95. Compare os resultados com sua base tratada. Se encontrar variações que seu pipeline atual não captura, isso é um sinal de que as novas funções podem reduzir retrabalho.

Para mais detalhes, consulte a documentação oficial:

Perguntas Frequentes

  • Qual a vantagem prática do EDIT_DISTANCE para empresas brasileiras?
    Empresas brasileiras lidam frequentemente com dados cadastrais inconsistentes — 'Maria de Souza' vs 'Maria Souza', ou 'Belo Horizonte' vs 'B. Horizonte'. O EDIT_DISTANCE permite encontrar essas variações com uma simples consulta T-SQL, sem precisar carregar dados para ferramentas externas de ETL ou bibliotecas Python.

  • O UNISTR resolve problemas de caracteres acentuados no SQL?
    Sim. O UNISTR permite escrever strings Unicode usando sequências de escape. Na prática, você pode representar caracteres como 'ã' (\u00E3) ou 'ç' (\u00E7) de forma explícita no código T-SQL, evitando problemas de collation e encoding que são comuns em ambientes com dados em português.

  • Essas funções substituem o uso de Python ou Spark para fuzzy matching?
    Não completamente. Para datasets muito grandes ou lógicas complexas com múltiplos campos, Python/Spark continuam sendo mais flexíveis. Mas para consultas ad-hoc, validação em tempo real e pipelines leves, as novas funções eliminam a necessidade de orquestrar um job externo — ganho de simplicidade e latência.

  • Essas funções já estão disponíveis em produção ou ainda em preview?
    Estão em preview. Microsoft recomenda testar em ambientes de desenvolvimento e compartilhar feedback. Em produção, é prudente validar o comportamento com dados reais antes de usar em consultas críticas, especialmente em relação a performance com tabelas grandes.


Artigo originalmente publicado em Azure Updates - Latest from Azure Charts.

Gostou? Compartilhe:
Precisa de ajuda?Fale com nossos especialistas 👋
Avatar Walcew - Headset