Introdução

Concluído

Você pode escrever uma fórmula DAX (Data Analysis Expressions) para adicionar uma tabela calculada ao seu modelo. A fórmula pode duplicar ou transformar dados de modelo existentes para produzir uma nova tabela.

Observação

Uma tabela calculada não pode se conectar a dados externos. Você precisa usar o Power Query para realizar essa tarefa.

Uma fórmula de tabela calculada precisa retornar um objeto de tabela. A fórmula mais simples pode duplicar uma tabela de modelo existente.

As tabelas calculadas têm um custo: Elas aumentam o tamanho do armazenamento de modelo e podem prolongar o tempo de atualização de dados. O motivo é que as tabelas calculadas recalculam quando têm dependências de fórmulas nas tabelas atualizadas.

Duplicar uma tabela

A seção a seguir descreve um desafio de design comum que pode ser resolvido com a criação de uma tabela calculada. Primeiro, você deve baixar e abrir o arquivo Adventure Works DW 2020 M03.pbix e, em seguida, alternar para o diagrama de modelo.

No diagrama de modelo, observe que a tabela Sales tem três relações com a tabela Date.

O diagrama de modelo mostra três relações porque a tabela Sales armazena dados de vendas por data do pedido, data da remessa e data de conclusão. Se você examinar as colunas OrderDateKey, ShipDateKey e DueDateKey, observe que uma relação será representada por uma linha sólida, que é a relação ativa. As outras relações, que são representadas por linhas tracejadas, são relações inativas.

Observação

Somente uma relação ativa pode existir entre duas tabelas de modelo.

No diagrama, focalize o cursor sobre a relação ativa para realçar as colunas relacionadas, que é como você interagiria com o diagrama de modelo para saber mais sobre as colunas relacionadas. Nesse caso, a relação ativa filtra a coluna OrderDateKey na tabela Sales. Assim, os filtros aplicados à tabela Date serão propagados para a tabela Sales para filtrar por data do pedido. Eles nunca serão filtrados por data da remessa ou data de conclusão.

A próxima etapa é excluir as duas relações inativas entre a tabela Date e a tabela Sales. Para excluir uma relação, clique nela com o botão direito do mouse e selecione Excluir no menu de contexto. Certifique-se de excluir ambas as relações inativas.

Em seguida, adicione uma nova tabela para permitir que os usuários de relatório filtrem as vendas por data da remessa. Altere para o modo de exibição de relatório e, na guia de faixa de opções Modelagem no grupo Cálculos, selecione Nova tabela.

Na barra de fórmulas (localizada abaixo da faixa de opções), insira a definição de tabela calculada a seguir e pressione Enter.

Ship Date = 'Date'

A definição da tabela calculada duplica os dados da tabela Date para produzir uma nova tabela denominada Ship Date. A tabela Ship Date tem exatamente as mesmas colunas e linhas que a tabela Date. Quando os dados da tabela Date são atualizados, a tabela Ship Date é recalculada, para que elas sempre estejam em sincronia.

Alterne para o diagrama de modelo e observe a adição da tabela Ship Date.

Em seguida, crie uma relação entre a coluna DateKey na tabela Ship Date e a coluna ShipDateKey na tabela Sales. Você pode criar a relação arrastando a coluna DateKey na tabela Ship Date para a coluna ShipDateKey na tabela Sales.

Uma tabela calculada duplica somente os dados; ela não duplica nenhuma propriedade do modelo nem objetos, como hierarquias ou visibilidade da coluna. Você precisará configurá-los na nova tabela, se necessário.

Dica

É possível renomear as colunas de uma tabela calculada. Neste exemplo, é uma boa ideia renomear colunas para que elas descrevam melhor a finalidade delas. Por exemplo, a coluna Fiscal Year na tabela Ship Date pode ser renomeada como Ship Fiscal Year. Da mesma forma, quando os campos da tabela Ship Date são usados em visuais, os nomes deles são automaticamente incluídos em legendas como os rótulos de eixo ou o título visual.

Para concluir o design da tabela Ship Date, você pode:

  • Renomear as seguintes colunas:
    • Data para Data da Remessa
    • Ano Fiscal para Ano Fiscal de Remessa
    • Trimestre Fiscal para Trimestre Fiscal da Remessa
    • Mês para Mês da Remessa
    • Data Completa para Data Completa da Remessa
  • Classifique a coluna Data Completa da Remessa pela coluna Data da Remessa.
  • Classifique a coluna Mês da Remessa pela coluna MonthKey.
  • Ocultar a coluna MonthKey.
  • Criar uma hierarquia chamada Fiscal, com os seguintes níveis:
    • Ano Fiscal da Remessa
    • Trimestre Fiscal da Remessa
    • Mês da Remessa
    • Data Completa da Remessa
  • Marque a tabela Data da Remessa como uma tabela de data usando a coluna Data da Remessa.

As tabelas calculadas são úteis para trabalhar em cenários quando há várias relações entre duas tabelas, conforme descrito anteriormente. Elas também podem ser usadas para adicionar uma tabela de data ao seu modelo. As tabelas de data são necessárias para aplicar filtros de tempo especiais conhecidos como inteligência de tempo.

Criar uma tabela de data

No próximo exemplo, uma segunda tabela calculada será criada, desta vez usando a função DAX CALENDARAUTO.

Crie a tabela calculada Due Date usando a definição a seguir.

Due Date = CALENDARAUTO(6)

A função DAX CALENDARAUTO usa um argumento opcional, que é o último número do mês do ano e retorna uma tabela de coluna única. Se você não inserir um número do mês, supõe-se que seja 12 (para dezembro). Por exemplo, na Adventure Works o ano financeiro termina em 30 de junho de cada ano, portanto, o valor 6 (para junho) é inserido.

A função examina todas as colunas de data e data/hora no seu modelo para determinar os valores de data armazenados mais antigos e mais recentes. Em seguida, ele produz um conjunto completo de datas que abrangem todas as datas no seu modelo, garantindo que os anos completos das datas sejam carregados. Por exemplo, se a data mais antiga armazenada no seu modelo for 15 de outubro de 2021, a primeira data retornada pela função CALENDARAUTO será 1º de julho de 2021. Se a data mais recente armazenada no modelo for 15 de junho de 2022, a última data retornada pela função CALENDARAUTO será 30 de junho de 2022.

Efetivamente, a função CALENDARAUTO garante que os seguintes requisitos para marcar uma tabela de data sejam atendidos:

  • A tabela precisa incluir uma coluna do tipo de dados Data.
  • A coluna precisa conter os anos completos.
  • A coluna não pode ter datas ausentes.

Dica

Você também pode criar uma tabela de data usando a função DAX CALENDAR e passando dois valores de data, que representam o intervalo de datas. A função gera uma linha para cada data dentro do intervalo. Você pode inserir valores de data estáticos ou expressões de passagem que recuperam as datas mais antigas/mais recentes de colunas específicas no seu modelo.

Em seguida, alterne para o modo de exibição de dados e, no painel Campos, selecione a tabela Due Date. Agora, examine a coluna de datas. Talvez você queira ordená-la para ver a data mais antiga na primeira linha, selecionando a seta no cabeçalho da coluna Data e, em seguida, classificando em ordem crescente.

Observação

A ordenação ou a filtragem de colunas não altera o modo como os valores são armazenados. Essas funções ajudam você a explorar e a entender os dados.

Agora que a coluna Data está selecionada, examine a mensagem na barra de status (localizada no canto inferior esquerdo). Ela descreve quantas linhas a tabela armazena e quantos valores distintos são encontrados na coluna selecionada.

Quando as linhas de tabela e os valores distintos são os mesmos, isso significa que a coluna contém valores exclusivos. Isso é importante por duas razões: Ela atende aos requisitos para marcar uma tabela de data e permite que essa coluna seja usada em uma relação de modelo como um lado.

A tabela calculada Due Date será recalculada sempre que uma tabela que contém uma coluna de data for atualizada. Em outras palavras, quando uma linha for carregada na tabela Sales com uma data de pedido de 1º de julho de 2022, a tabela Due Date será estendida automaticamente para incluir datas até o final do próximo ano: 30 de junho de 2023.

A tabela Due Date requer colunas adicionais para dar suporte aos requisitos conhecidos de filtragem e agrupamento, especificamente por ano, trimestre e mês.