O Que É uma Camada Semântica? Definição e Comparação de Suporte em Ferramentas de Analytics
Entenda o que é uma camada semântica, o que ela contém, e como Looker, Power BI, Tableau, dbt, Cube, Snowflake e Databricks dão suporte a ela.

Uma camada semântica é o lugar onde uma empresa escreve, uma única vez, o que seus números significam. Ela diz como a "receita" é calculada, quais tabelas se juntam a quais, o que "cliente ativo" significa, e quem pode ver o quê. Ferramentas de BI, planilhas e agentes de IA então perguntam à camada semântica por "receita por região" em vez de escrever seu próprio SQL contra as tabelas brutas.
Este artigo dá uma definição precisa, mostra o que vai dentro de uma camada semântica, e compara como Looker, Power BI, Tableau, dbt, Cube, Snowflake, Databricks e algumas ferramentas menores dão suporte a isso. Todas as afirmações sobre capacidades vêm da própria documentação de cada fornecedor.
O que é uma camada semântica?
Uma camada semântica é uma camada governada entre o seu data warehouse e as ferramentas que leem dele. Ela guarda definições de métricas, dimensões, caminhos de join, nomes de negócio e regras de acesso, para que ferramentas diferentes recebam a mesma resposta para a mesma pergunta.
A Cube descreve isso como uma camada independente e governada entre suas fontes de dados e as ferramentas que consomem os dados. A AtScale lista as cinco coisas que ela padroniza: métricas, dimensões, relacionamentos, terminologia de negócio e regras de acesso. O dbt define isso como um lugar central para construir e armazenar a lógica de métricas, para que muitos endpoints possam ler dados consistentes e governados.
A ideia é antiga. Em 1991, a Business Objects patenteou um "sistema de acesso a banco de dados relacional usando objetos semanticamente dinâmicos", que se tornou o "Universe". As primeiras camadas semânticas eram amarradas a um único produto de BI, como MicroStrategy, Business Objects ou Cognos. Hoje a mesma ideia existe em quatro lugares: dentro da ferramenta de BI, dentro da ferramenta de transformação, dentro do warehouse, ou como um serviço independente que qualquer ferramenta pode consultar.
Uma pesquisa da Forrester de 2021 descobriu que mais de 61% das organizações usam quatro ou mais ferramentas de BI, e 25% usam dez ou mais! Com tantas ferramentas, cada uma definindo "receita" à sua própria maneira produz números diferentes em dashboards diferentes.
O que uma camada semântica contém?
Uma camada semântica contém tabelas lógicas, dimensões, fatos, métricas, relacionamentos, sinônimos, descrições e regras de acesso. A especificação de semantic view da Snowflake é a lista pública mais clara dessas partes, então eu uso o vocabulário dela aqui.
Parte | O que é | Exemplo |
|---|---|---|
Tabela lógica | Uma view nomeada sobre uma tabela física ou consulta SQL | orders sobre analytics.marts.fct_orders |
Dimensão | Uma coluna pela qual você agrupa ou filtra | region, order_date |
Fato | Um número no nível da linha ligado a um evento | order_amount |
Métrica | Uma agregação de fatos, com SUM, AVG, COUNT, etc. | revenue = SUM(order_amount) |
Relacionamento | Como duas tabelas lógicas se juntam | orders.customer_id com customers.customer_id |
Sinônimos e descrições | Outras palavras que as pessoas usam para a mesma coisa | "vendas" e "vendas totais" para receita |
Modificador de acesso | Se um campo é público ou escondido de consultas | uma métrica intermediária privada |
A especificação da Snowflake separa fatos, que são valores no nível da linha, de métricas, que agregam fatos. Uma métrica derivada pode combinar métricas de várias tabelas, por exemplo uma margem de lucro construída a partir de receita total e custo total.
Aqui está uma semantic view mínima no formato YAML da Snowflake, seguindo a especificação:
name: salestables: - name: orders base_table: database: analytics schema: marts table: fct_orders primary_key: columns: [order_id] dimensions: - name: region synonyms: ["market", "territory"] expr: region data_type: VARCHAR facts: - name: order_amount expr: amount data_type: NUMBER metrics: - name: revenue description: "Sum of order amounts" synonyms: ["sales", "total sales"] expr: SUM(orders.order_amount)
A mesma especificação também carrega verified queries, que combinam uma pergunta em linguagem natural com o SQL que a responde, e uma configuração de staleness no nível superior. Definir max_staleness ativa a materialização, e o valor mínimo permitido é 120 segundos.
Outras ferramentas usam formatos diferentes para as mesmas partes. O Looker usa LookML. O Power BI usa TMDL, a Tabular Model Definition Language, mais DAX para medidas. O dbt usa MetricFlow YAML. O GoodData usa MAQL, sua Multi-Dimension Analytical Query Language. O Databricks usa SQL DDL ou uma interface com validação em YAML. As partes são as mesmas; o formato do arquivo muda.
Uma camada semântica é um data warehouse, um modelo dbt, ou um cubo OLAP?
Uma camada semântica é uma camada de significado sobre dados armazenados, então ela é uma coisa diferente do warehouse que armazena os dados, dos modelos dbt que os moldam, e dos cubos OLAP (Online Analytical Processing) que antes os pré-calculavam. Fornecedores modernos entregam todos eles em um único produto, o que confunde as linhas.
Warehouse. Um banco de dados relacional armazena e organiza dados em tabelas estruturadas sem focar no significado de negócio. Um modelo semântico adiciona nomes claros, relacionamentos e métricas predefinidas em cima disso. Snowflake e Databricks agora entregam objetos semânticos dentro do warehouse, o que levanta a questão de se o Snowflake é uma camada semântica. A resposta é que o Snowflake é um warehouse que também tem um recurso de camada semântica, chamado semantic views.
Modelos dbt. Modelos dbt são transformações SQL que produzem tabelas. A dbt Semantic Layer define métricas em cima de modelos existentes e lida com os joins no momento da consulta. Então a camada semântica é uma camada separada que lê seus modelos, mesmo quando os dois estão no mesmo repositório.
Cubos OLAP. Nos anos 1990, bancos de dados relacionais eram lentos demais para análises complexas. O cubo OLAP resolveu o problema de performance através de pré-agregação: o sistema pré-calculava respostas para combinações de dimensões antes que alguém perguntasse. Uma camada semântica, em vez disso, gera SQL no momento da consulta, e usa cache ou materialização como uma otimização em vez de como o design central.
Onde uma camada semântica se encaixa em uma stack ELT?
A camada semântica vem depois da ingestão e da transformação, e antes de BI, planilhas e IA. Em uma stack ELT (Extract, Load, Transform: carregar os dados brutos primeiro, depois transformá-los dentro do warehouse), a ordem é fontes, ingestão, warehouse, transformações, camada semântica, consumidores.
Ingestão é o primeiro passo. A Erathos extrai dados de uma fonte como PostgreSQL ou HubSpot, os deixa em staging em um bucket na nuvem, e os carrega no warehouse com COPY ou o equivalente do destino, depois apaga os arquivos temporários. Os destinos incluem BigQuery e Databricks, ambos com seus próprios recursos de camada semântica mais adiante (o LookML do Looker no BigQuery, as metric views do Unity Catalog no Databricks).
As transformações vêm em seguida, geralmente no dbt, e produzem as tabelas limpas que a camada semântica lê. Então a camada semântica define métricas sobre essas tabelas. Depois, ferramentas de BI, Excel, notebooks e agentes de IA consultam a camada semântica. Se você quiser o contexto de ELT primeiro, escrevemos sobre ETL vs. ELT e as principais diferenças.
A camada semântica só funciona se as tabelas abaixo dela estiverem completas e atualizadas. Uma métrica como receita fica errada se os pedidos de ontem à noite nunca carregaram. É por isso que a observabilidade do pipeline na etapa de ingestão importa para as pessoas que são donas das definições de métricas, mesmo que elas raramente mexam na ingestão.
Por que ferramentas de IA e text-to-SQL se beneficiam de uma camada semântica?
Ferramentas de IA de text-to-SQL se beneficiam de uma camada semântica porque um esquema de banco de dados sozinho não diz como o negócio calcula suas métricas. A Snowflake afirma que soluções genéricas de IA têm dificuldade com text-to-SQL quando recebem só um esquema, porque esquemas não têm definições de processos de negócio e tratamento de métricas.
A camada semântica fornece exatamente as peças que faltam: fórmulas de métricas, caminhos de join, sinônimos ("vendas" significa receita), descrições e consultas de exemplo verificadas. O Cortex Analyst da Snowflake é uma API REST que usa semantic views para gerar SQL. O Databricks permite que agentes Genie consultem metric views da mesma forma que dashboards e notebooks fazem. A Strategy Mosaic documenta acesso via MCP (Model Context Protocol, o padrão que agentes de IA usam para chamar ferramentas) ao lado de suas interfaces SQL, DAX, MDX e REST.
Nenhum dos documentos primários que li publica um número de acurácia para text-to-SQL com e sem uma camada semântica, então não estou citando nenhum. O modelo só pode ser tão correto quanto a definição que recebe.
Uma camada semântica também é uma coisa diferente de uma "context layer" ou uma "ontologia", termos que aparecem nas mesmas conversas sobre IA. O resumo da MotherDuck sobre essa diferença é útil.
Quais ferramentas de analytics dão suporte a uma camada semântica?
A maioria das plataformas de BI, os principais data warehouses na nuvem, e o dbt dão suporte a uma camada semântica, mas colocam ela em lugares diferentes. A forma útil de organizar é por onde as definições são armazenadas e se outras ferramentas conseguem lê-las.
Onde a camada é definida | Ferramentas | O que isso significa na prática |
|---|---|---|
Dentro da ferramenta de BI | Looker (LookML), Power BI (semantic models), Tableau Next (Tableau Semantics), Metabase (Metrics), GoodData (métricas MAQL), Superset (camada fina) | Definições são escritas na linguagem da ferramenta de BI. Algumas expõem para fora (Looker via JDBC, o padrão Java para conexão com banco de dados; Power BI via XMLA, um protocolo de consulta XML, e REST); outras não (métricas do Metabase só funcionam no seu próprio query builder). |
Dentro da ferramenta de transformação | dbt Semantic Layer (MetricFlow), Lightdash (YAML dentro de um projeto dbt) | Definições ficam armazenadas no mesmo repositório Git dos modelos. Consumidores chegam até elas por APIs ou integrações nativas. |
Dentro do warehouse | Snowflake Semantic Views, Databricks Unity Catalog metric views | Definições são objetos de esquema, governados por permissões do warehouse. Qualquer cliente SQL consegue consultar. |
Independente (headless) | Cube, AtScale, Strategy Mosaic | Um serviço independente com endpoints SQL, REST, GraphQL ou MDX aos quais muitas ferramentas de BI se conectam. |
Dois detalhes da tabela merecem um olhar mais de perto.
O Power BI trata camadas semânticas de terceiros de forma restrita: ele dá suporte apenas a SAP BW, SAP HANA (como fonte multidimensional) e AtScale como modelos semânticos externos. Colocar um modelo semântico de terceiros entre o próprio modelo do Power BI e o banco de dados geralmente não tem suporte, porque combinar duas camadas semânticas pode produzir resultados incorretos.
O Superset vai pelo caminho contrário. A camada dele é fina: métricas virtuais são agregações SQL e colunas calculadas virtuais customizam colunas individuais. Com a feature flag experimental SEMANTIC_LAYERS, o Superset consegue se conectar a camadas externas como dbt Semantic Layer ou Cube como fontes de dados.
Como Looker, Power BI, Tableau, dbt, Cube, Snowflake e Databricks se comparam?
Aqui está a comparação detalhada, construída somente a partir da documentação de cada fornecedor. Onde um documento não cobria uma coluna, a célula diz isso em vez de adivinhar.
Ferramenta | Nome do recurso | Formato de definição | Como outras ferramentas o acessam | Cache ou materialização | Limites documentados |
|---|---|---|---|---|---|
Looker | Camada de modelagem semântica LookML | LookML, com integração Git | Open SQL Interface via JDBC; Explores aparecem como tabelas | Não coberto na página revisada | Open SQL Interface precisa de um projeto LookML em uma conexão BigQuery; só SELECT; sem JOIN, window functions ou subqueries |
Power BI | Semantic models | TMDL para metadados, DAX para medidas | Endpoint XMLA para ferramentas de visualização de terceiros; REST para CRUD, consulta e refresh; TOM para .NET | Import mode, DirectQuery e Direct Lake (Delta Lake parquet, Iceberg, OneLake) sem refreshes | Empilhar semantic models geralmente não tem suporte; só SAP BW, SAP HANA e AtScale como modelos de terceiros |
Tableau Next | Tableau Semantics | Semantic models construídos no Semantic Model Builder no Data 360 | Conector Tableau Semantics para Tableau Cloud, Server e Desktop | Não coberto na página revisada | Documentado para Tableau Next e Data 360, não para fontes de dados do Tableau legado |
dbt Semantic Layer | MetricFlow | YAML no projeto dbt | JDBC, ADBC, GraphQL, Python SDK; integrações nativas para Power BI, Tableau, Google Sheets, Excel, Omni, Hex, Mode, Sigma (preview), entre outras; exportações para qualquer ferramenta de BI | Precisa de uma conta dbt Starter ou Enterprise | |
Cube | Camada semântica Cube | Arquivos de data model do Cube | Cache em memória mais pré-agregações; consultas com SQL pushdown pulam pré-agregações mas podem usar o cache em memória | Limite padrão de 10.000 linhas por consulta, máximo de 50.000 | |
Snowflake | Semantic Views | Especificação YAML ou SQL DDL (data definition language, os comandos CREATE); objetos em nível de esquema com controle de acesso baseado em papéis, compartilhamento e integração de catálogo do Snowflake | Qualquer cliente SQL do Snowflake; API REST do Cortex Analyst para linguagem natural | Materialização quando max_staleness é definido (mínimo de 120 segundos) | Nativo do Snowflake; definições não viajam para outro warehouse |
Databricks | Unity Catalog metric views | SQL DDL ou interface do Catalog Explorer com validação em YAML | Qualquer conexão SQL usando MEASURE(); wrapper views; modo de compatibilidade com BI; integrações nativas com parceiros | Materialização que pré-calcula e atualiza agregações de forma incremental, com reescrita automática de consultas | Uma wrapper view tem um conjunto fixo de dimensões, então cada combinação de dimensões precisa da sua própria view |
Lightdash | Camada semântica Lightdash | YAML versionado em um projeto dbt, ou YAML do Lightdash sem dbt | API e Python SDK | Cache de resultados, cache do warehouse, pré-agregados | Não coberto na página revisada |
Metabase | Metrics | Definidas no query builder, armazenadas em coleções | Só o query builder do Metabase | Métricas estão amarradas a uma fonte de dados e não podem ser reutilizadas em outra | |
Strategy Mosaic | Camada semântica universal | Mosaic Models e Mosaic Schema | Não coberto na página revisada | Página do fornecedor; alegações de performance ali são alegações de casos de clientes |
O padrão de BI externo do Databricks é o exemplo mais claro de uma camada nativa do warehouse alcançando uma ferramenta externa. Qualquer ferramenta de BI que consiga passar SQL executa isto:
SELECT `Order Month`, MEASURE(`Total Revenue`), MEASURE(`Order Count`)FROM main.sales.orders_metric_viewGROUP BY ALL;
Toda measure precisa passar pela função MEASURE(), e metric views não têm suporte a SELECT *. Para ferramentas que não conseguem passar SQL customizado, o Databricks documenta uma wrapper view que embute as chamadas MEASURE() em uma view padrão, para que a ferramenta de BI a leia como qualquer tabela.
Do lado do dbt, aqui está a lista de integrações nativas.
Quais são os trade-offs e as armadilhas de implementação?
Os principais trade-offs são lock-in em um formato de uma ferramenta, limites de como ferramentas externas conseguem consultar a camada, e o custo de manter o cache ou a materialização atualizados. Cada fornecedor documenta sua própria versão desses pontos.
Lock-in de formato. LookML, TMDL, MetricFlow YAML, YAML da Snowflake e MAQL são todas linguagens diferentes para os mesmos conceitos. Mover um catálogo de métricas de uma para outra é uma reescrita. O Databricks resolve isso parcialmente com o Genie Code, que importa um arquivo do Tableau ou do Power BI e recria o modelo de dados como uma metric view.
Limites de consulta de saída. O Open SQL Interface do Looker é só SELECT, sem JOIN, window functions ou subqueries, e precisa de um projeto LookML apoiado em BigQuery. As métricas do Metabase funcionam só no seu próprio query builder. Uma "camada semântica" que só o próprio produto consegue ler é um recurso de métricas, e isso é aceitável enquanto você só tem uma ferramenta de BI.
Duas camadas empilhadas. A Microsoft diz que empilhar um modelo semântico de terceiros sob um semantic model do Power BI geralmente não tem suporte porque a combinação pode dar números errados. Se você adotar dbt ou Cube como a camada central, planeje o Power BI para lê-la através de uma integração nativa ou uma exportação, e mantenha o próprio modelo do Power BI fino.
Atualidade versus velocidade. As pré-agregações da Cube, as materializações da Snowflake, a materialização incremental do Databricks, e o cache declarativo do dbt todos trocam atualidade por velocidade. A Snowflake torna essa troca explícita com um valor max_staleness em segundos que você precisa escolher.
Limites de linhas. A Cube retorna no máximo 10.000 linhas por padrão e 50.000 no máximo. Uma camada semântica serve para respostas agregadas; extrações em massa ainda vão direto contra o warehouse.
Quando um time deve centralizar uma métrica?
Uma métrica pertence à camada semântica quando mais de uma ferramenta ou time a lê, ou quando um valor errado mudaria uma decisão. Um cálculo pontual em um único notebook pode continuar local.
Os mecanismos que as ferramentas oferecem dizem como o "centralizado" deveria parecer. A especificação da Snowflake tem verified queries com uma pergunta, o SQL que a responde, quem verificou e quando. A camada do dbt define uma métrica uma única vez em cima de modelos existentes, então uma mudança na definição alcança toda integração que a consulta. O Metabase separa métricas verificadas das não verificadas nos seus planos pagos.
Então uma métrica centralizada tem uma descrição, sinônimos que as pessoas usam para ela, um dono, pelo menos uma consulta verificada, e um histórico de mudanças no Git ou na ferramenta. Qualquer coisa a menos disso é um cálculo salvo, e vai desviar com o tempo.
Resumo
- Uma camada semântica guarda métricas, dimensões, relacionamentos, nomes de negócio e regras de acesso entre o warehouse e as ferramentas que o leem.
- É uma camada diferente do warehouse, dos modelos dbt e dos cubos OLAP, mesmo quando um fornecedor entrega todos eles juntos.
- A camada pode estar dentro da ferramenta de BI, dentro da ferramenta de transformação, dentro do warehouse, ou rodar como um serviço independente. A pergunta chave é se outras ferramentas conseguem consultá-la sem redefinir a métrica.
- Ferramentas de IA de text-to-SQL precisam da camada semântica porque um esquema sozinho não carrega definições de métricas.
- A métrica só é tão boa quanto as tabelas abaixo dela, então a ingestão precisa chegar completa e no prazo.
A Erathos cuida dessa etapa de ingestão: conecte uma fonte, escolha um destino como BigQuery ou Databricks, e os dados chegam no warehouse prontos para o dbt e para a camada semântica em cima. Experimente a Erathos grátis por 14 dias.