Introdução

Concluído

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

Nota

Uma tabela calculada não pode ser ligada a dados externos. Tem de utilizar o Power Query para realizar essa tarefa.

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

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

Duplicar uma tabela

A secção seguinte descreve um desafio de criação comum que pode ser resolvido com a criação de uma tabela calculada. Primeiro, deve transferir e abrir o ficheiro Adventure Works DW 2020 M03.pbix e, em seguida, mudar para o diagrama de modelo.

No diagrama do modelo, repare que a tabela Vendas tem três relações com a tabela Data .

Imagem a mostrar duas tabelas: Vendas e Data. Existem três relações entre as tabelas. Apenas uma relação está ativa.

O diagrama de modelo mostra três relações, porque a tabela Vendas armazena dados de vendas por data de encomenda, data de envio e data de vencimento. Se examinar as colunas OrderDateKey, ShipDateKeye DueDateKey, repare que uma relação é representada por uma linha sólida, que é a relação ativa. As outras relações, representadas por linhas tracejadas, são relações inativas.

Nota

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

No diagrama, paire o cursor sobre a relação ativa para realçar as colunas relacionadas, que é como interagiria com o diagrama de modelo para saber mais sobre as colunas relacionadas. Neste caso, a relação ativa filtra a coluna OrderDateKey na tabela Vendas . Assim, os filtros aplicados à tabela Data serão propagados para a tabela Vendas para filtrar por data de encomenda; nunca filtrarão por data de envio ou data para conclusão.

O próximo passo é eliminar as duas relações inativas entre a tabela Data e a tabela Vendas . Para eliminar uma relação, clique com o botão direito do rato na mesma e selecione Eliminar no menu de contexto. Verifique se eliminou ambas as relações inativas.

Em seguida, adicione uma nova tabela para permitir que os utilizadores do relatório filtrem as vendas por data de envio. Mude para a vista Relatório e, em seguida, no separador do frisoModelação, no grupo Cálculos, selecione Nova tabela.

Imagem a mostrar o separador do friso Modelação do Power BI Desktop. No grupo Cálculos, o comando Nova Tabela está realçado.

Na barra de fórmulas (localizada por baixo do friso), introduza a seguinte definição de tabela calculada e, em seguida, prima Enter.

Ship Date = 'Date'

A definição da tabela calculada duplica os dados da tabela Data para produzir uma nova tabela com o nome Data de Envio. A tabela Data de Envio tem exatamente as mesmas colunas e linhas que a tabela Data . Quando os dados da tabela Data são atualizados, a tabela Data de Envio é recalculada, para que estejam sempre sincronizadas.

Mude para o diagrama de modelo e, em seguida, repare na adição da tabela Data de Envio .

Imagem a mostrar a tabela Data de Envio, que inclui as mesmas colunas que a tabela Data.

Em seguida, crie uma relação entre a coluna DateKey na tabela Data de Envio e a coluna ShipDateKey na tabela Vendas . Pode criar a relação ao arrastar a coluna DateKey na tabela Data de Envio para a coluna ShipDateKey na tabela Vendas .

Uma tabela calculada apenas duplica dados; não duplica quaisquer propriedades ou objetos de modelo, como visibilidade de colunas ou hierarquias. Terá de configurá-los para a nova tabela, se necessário.

Dica

É possível mudar o nome das colunas de uma tabela calculada. Neste exemplo, é uma boa ideia mudar o nome das colunas para que descrevam melhor a sua finalidade. Por exemplo, a coluna Ano Fiscal na tabela Data do Envio pode ser renomeada como Ano Fiscal de Envio. Assim, quando os campos da tabela Data de Envio são utilizados em elementos visuais, os respetivos nomes são automaticamente incluídos em legendas como o título do elemento visual ou etiquetas do eixo.

Para concluir a estrutura da tabela Data de Envio , pode:

  • Mudar o nome das seguintes colunas:
    • Data para Data de Envio
    • Ano Fiscal para Ano Fiscal do Envio
    • Trimestre Fiscal para Trimestre Fiscal do Envio
    • Mês para Mês de Envio
    • Data Completa para Data Completa do Envio
  • Ordenar a coluna Data Completa do Envio pela coluna Data de Envio.
  • Ordenar a coluna Mês de Envio pela coluna MonthKey.
  • Ocultar a coluna MonthKey.
  • Criar uma hierarquia chamada Fiscal com os seguintes níveis:
    • Ano Fiscal do Envio
    • Trimestre Fiscal do Envio
    • Mês de Envio
    • Data Completa do Envio
  • Marcar a tabela Data de Envio como uma tabela de datas ao utilizar a coluna Data de Envio.

As tabelas calculadas são úteis para trabalhar em cenários em que existem várias relações entre duas tabelas, conforme descrito anteriormente. Também podem ser utilizadas para adicionar uma tabela de datas ao modelo. As tabelas de datas são necessárias para aplicar filtros de tempo especiais conhecidos como análise de tempo.

Criar uma tabela de dados

No exemplo seguinte, será criada uma segunda tabela calculada, desta vez com a CALENDARAUTO função DAX.

Create a tabela calculada Data para Conclusão com a seguinte definição.

Due Date = CALENDARAUTO(6)

A CALENDARAUTO função DAX utiliza um único argumento opcional, que é o número do último mês do ano, e devolve uma tabela de coluna única. Se não transmitir um número de mês, supõe-se que seja 12 (para dezembro). Por exemplo, na Adventure Works, o ano financeiro termina a 30 de junho de cada ano, pelo que é transmitido o valor 6 (para junho).

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

Efetivamente, a CALENDARAUTO função garante que os seguintes requisitos para marcar uma tabela de datas são cumpridos:

  • A tabela tem de incluir uma coluna do tipo de dados Data.
  • A coluna tem de conter anos completos.
  • A coluna não pode ter datas em falta.

Dica

Também pode criar uma tabela de datas com a CALENDAR função DAX e transmitir dois valores de data, que representam o intervalo de datas. A função gera uma linha para cada data dentro do intervalo. Pode transmitir valores de data estáticos ou expressões que permitem obter as datas mais antigas/mais recentes de colunas específicas no modelo.

Em seguida, mude para a vista de dados e, em seguida, no painel Campos , selecione a tabela Data para Conclusão . Agora, reveja a coluna de datas. Talvez queira ordená-las para ver a data mais antiga na primeira linha ao selecionar a seta dentro do cabeçalho da coluna Data e, em seguida, ordenar por ordem ascendente.

Nota

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

Imagem a mostrar a tabela Data de Vencimento na vista de dados. Existe uma coluna com o nome Data e quando os valores são ordenados dos mais antigos para os mais recentes, a primeira data é 1 de julho de 2017.

Agora que a coluna Data está selecionada, veja a mensagem na barra de estado (localizada no canto inferior esquerdo). Descreve o número de linhas que a tabela armazena e quantos valores distintos estão na coluna selecionada.

Imagem a mostrar a mensagem de estado: TABELA: Data de Vencimento (1461 linhas) COLUNA: Data (1461 valores distintos).

Quando as linhas da tabela e os valores distintos forem os mesmos, significa que a coluna contém valores exclusivos. Esse fator é importante por dois motivos: cumpre os requisitos para marcar uma tabela de datas e permite utilizar esta coluna numa relação de modelo como um lado.

A tabela calculada Data para Conclusão será recalculada sempre que uma tabela que contém uma coluna de data for atualizada. Por outras palavras, quando uma linha é carregada para a tabela Vendas com uma data de encomenda de 1 de julho de 2022, a tabela Data para Conclusão será automaticamente expandida para incluir datas até ao final do próximo ano: 30 de junho de 2023.

A tabela Data para Conclusão requer colunas adicionais para suportar os requisitos conhecidos de filtragem e agrupamento, especificamente por ano, trimestre e mês.