Skip to content

fix: aplicar pushdown de ad_reached_countries no Meta Ad Library#57

Merged
magroski merged 1 commit into
mainfrom
codex/meta-ad-library-country-pushdown
May 4, 2026
Merged

fix: aplicar pushdown de ad_reached_countries no Meta Ad Library#57
magroski merged 1 commit into
mainfrom
codex/meta-ad-library-country-pushdown

Conversation

@patrickadeelino
Copy link
Copy Markdown
Collaborator

Contexto

A investigação do conector meta_ad_library mostrou que o Data Agent estava gerando consultas com WHERE ad_reached_countries = ..., mas o handler do MindsDB não tratava esse filtro como parte da request à Meta API. Na prática, o campo acabava sendo interpretado como se fosse uma coluna local da tabela ads, o que abria espaço para binder errors e para queda de comportamento para consultas mais amplas sem o filtro de país desejado.

O que foi implementado

Implementei a extração de ad_reached_countries a partir das conditions SQL no handler meta_ad_library, com suporte a EQUAL e IN. Quando esse filtro aparece na query, ele passa a ser normalizado e enviado como parâmetro da request para a Meta API, com marcação de applied=True para evitar que o mecanismo local tente reaplicar a condição como se ela fosse uma coluna do dataframe.

Também cobri esse comportamento com testes unitários para os cenários principais: filtro simples, lista de países, valor JSON serializado e filtro vazio, garantindo que o handler mantenha o escopo original do datasource quando não houver país válido para fazer pushdown.

Arquitetura e decisões

A decisão aqui foi tratar ad_reached_countries como filtro de request-time, e não como coluna da tabela ads. Isso preserva o contrato real da Meta Ad Library API e evita modelar como row-level data algo que, semanticamente, pertence à busca e não ao resultado por linha.

Também mantive a precedência da query sobre a configuração persistida do datasource: quando o SQL explicita ad_reached_countries, esse valor deve vencer o escopo administrativo salvo na conexão. Quando a query não fornece um filtro válido, o handler continua usando o escopo já configurado na connection data.

Pontos de atenção para review

O principal ponto de review é validar se a extração de ad_reached_countries cobre bem o shape de conditions que o parser do MindsDB entrega para EQUAL e IN, sem introduzir efeitos colaterais em outros filtros já suportados pelo handler.

Também vale revisar a decisão de não expor ad_reached_countries como coluna selecionável da tabela, já que a mudança assume explicitamente que esse campo deve existir apenas como filtro de pushdown e não como dado retornado no schema do datasource.

@patrickadeelino patrickadeelino marked this pull request as ready for review May 4, 2026 14:20
@magroski magroski merged commit cd1eb0b into main May 4, 2026
1 of 3 checks passed
@magroski magroski deleted the codex/meta-ad-library-country-pushdown branch May 4, 2026 17:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants