(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como usar a função RELATED em DAX: passo a passo

João Barros 15 de July de 2026 4 min de leitura

A função RELATED em DAX serve para ir buscar um valor de outra tabela seguindo uma relação que já existe no teu modelo. É especialmente útil num modelo em estrela, em que a tabela de factos (as vendas) está separada das dimensões (produtos, clientes ou datas). Com um exemplo simples de vendas e produtos, vais aprender a usar RELATED para colocar o preço e a categoria certos em cada linha de venda.

Pré-requisitos

  • O Power BI Desktop instalado (a função também existe no Power Pivot do Excel e no Analysis Services).
  • Duas tabelas no modelo: uma de factos, Sales, e uma de dimensão, Products.
  • Uma relação entre as duas tabelas, ligada por uma coluna comum como ProductID.
  • Saber criar uma coluna calculada (basta um clique com o botão direito na tabela).

Passo 1: Perceber o modelo de dados

Imagina duas tabelas. A tabela Sales regista cada linha de encomenda e tem as colunas ProductID e Quantity. A tabela Products descreve cada artigo e tem ProductID, ProductName, Category e UnitPrice. Entre elas há uma relação muitos-para-um: muitas vendas apontam para o mesmo produto.

O objetivo é comum: queres saber o total de cada linha de venda (quantidade × preço), mas o preço está na tabela Products e não na tabela Sales. É exatamente para isto que existe a função RELATED.

Passo 2: Confirmar que existe uma relação

RELATED só funciona se houver uma relação entre as tabelas. Abre a vista Modelo no Power BI Desktop e confirma que existe uma linha a ligar Sales[ProductID] a Products[ProductID]. O lado "um" é a tabela Products (cada produto aparece uma vez) e o lado "muitos" é a tabela Sales.

RELATED segue sempre a relação do lado "muitos" para o lado "um". Ou seja, é chamada a partir da tabela de factos para ir buscar valores à dimensão.

Passo 3: Criar uma coluna calculada com RELATED

Seleciona a tabela Sales, cria uma nova coluna e escreve a fórmula abaixo. Ela traz o preço unitário do produto correspondente para dentro da tabela de vendas:

UnitPrice = RELATED( Products[UnitPrice] )

Repara que só indicas a coluna que queres — Products[UnitPrice]. Não precisas de dizer qual é a relação a usar: o DAX descobre o caminho sozinho, porque a relação já existe no modelo.

Passo 4: Calcular o total de cada linha

Com o preço disponível em cada linha, já podes calcular o valor de cada venda. Cria outra coluna calculada na tabela Sales:

LineTotal = Sales[Quantity] * RELATED( Products[UnitPrice] )

Isto funciona porque uma coluna calculada tem row context (contexto de linha): o DAX sabe em que linha está e, por isso, sabe qual o produto a procurar. Da mesma forma, podes trazer a categoria para depois agrupar as vendas:

Category = RELATED( Products[Category] )

Passo 5: Usar RELATED dentro de uma medida com SUMX

Nem sempre queres criar colunas físicas. Podes usar RELATED dentro de um iterador como o SUMX, que percorre a tabela linha a linha e cria, em cada uma, o row context de que RELATED precisa:

Total Sales =
SUMX(
    Sales,
    Sales[Quantity] * RELATED( Products[UnitPrice] )
)

Esta medida devolve o total de vendas sem ocupar espaço com colunas calculadas — uma boa prática em modelos grandes.

Passo 6: Erro comum e a função inversa

Um erro frequente é usar RELATED numa medida simples, do género = RELATED( Products[UnitPrice] ). Não resulta: uma medida não tem contexto de linha e o DAX devolve erro. Usa RELATED apenas em colunas calculadas ou dentro de iteradores (SUMX, AVERAGEX, FILTER e afins).

Se precisares do sentido contrário — do lado "um" para o lado "muitos" — usa RELATEDTABLE. Por exemplo, para contar quantas vendas cada produto teve, cria esta coluna na tabela Products:

NumSales = COUNTROWS( RELATEDTABLE( Sales ) )

Verificar o resultado

Cria uma tabela visual com Products[ProductName] e a medida Total Sales. Os valores devem coincidir com a soma manual de quantidade × preço de cada produto. Confirma também a coluna LineTotal: escolhe uma linha qualquer e vê se o resultado é mesmo a quantidade multiplicada pelo UnitPrice desse produto. Se aparecer (Blank) ou um erro, verifica se a relação existe e se os valores de ProductID têm correspondência nas duas tabelas.

Conclusão

Aprendeste a usar a função RELATED para trazer valores de uma dimensão para a tabela de factos seguindo as relações do modelo, e a usar RELATEDTABLE para o caminho inverso. O passo seguinte é combinar RELATED com CALCULATE para criar métricas mais ricas, ou aprofundar como o row context e o filter context se relacionam. Qual vai ser a primeira coluna que vais deixar de copiar à mão graças ao RELATED?