Criar uma tabela date

Concluído

Durante a criação do relatórios no Power BI, um requisito comercial comum é fazer cálculos com base na data e na hora. As organizações querem saber o desempenho dos negócios ao longo de meses, trimestres, anos fiscais e assim por diante. Por esse motivo, é crucial que esses valores orientados a tempo sejam formatados corretamente. O Power BI detecta automaticamente colunas e tabelas de datas; no entanto, as situações poderão ocorrer quando você precisar seguir etapas extras para obter as datas no formato que a organização exige.

Por exemplo, vamos supor que você esteja desenvolvendo relatórios para a equipe de vendas na organização. O banco de dados contém tabelas para vendas, ordens, produtos e muito mais. Muitas dessas tabelas, inclusive Sales e Orders, contêm as colunas de data, conforme mostrado pelas colunas ShipDate e OrderDate nas tabelas Sales e Orders. Você tem a tarefa de desenvolver uma tabela do total de vendas e ordens por ano e por mês. Como você pode compilar um visual com várias tabelas, cada uma fazendo referência às próprias colunas de data?

Captura de tela do trecho do modelo semântico com Sales.ShipDate e Order.OrderDate realçados.

Para resolver esse problema, você pode criar uma tabela de datas comum que possa ser usada por várias tabelas. A seção a seguir explica como você pode realizar essa tarefa no Power BI.

Criar uma tabela de datas comum

As maneiras pelas quais você pode compilar uma tabela de datas comum são:

  • Dados de origem

  • DAX

  • Power Query

Dados de origem

Às vezes, os bancos de dados de origem e os data warehouses já têm as tabelas de datas. Se o administrador que projetou o banco de dados tiver feito um trabalho completo, essas tabelas poderão ser usadas para realizar as seguintes tarefas:

  • Identificar feriados da empresa

  • Separar o calendário e o ano fiscal

  • Identificar fins de semana X dias da semana

As tabelas de dados de origem estão prontas para uso imediato. Se você tiver uma tabela assim, traga-a para o modelo semântico e não use nenhum outro método descrito nesta seção. É recomendável usar uma tabela de datas de origem, pois ela provavelmente será compartilhada com outras ferramentas que você talvez esteja usando além do Power BI.

Se não tiver uma tabela de dados de origem, você poderá usar outras maneiras de compilar uma tabela de datas comum.

DAX

Você pode usar as funções DAX (Data Analysis Expression) CALENDARAUTO() ou CALENDAR() para compilar a tabela de datas comum. A função CALENDAR() retorna um intervalo de datas contíguo com base em uma data de início e uma data de término inseridas como argumentos na função. Como alternativa, a função CALENDARAUTO() retorna um intervalo completo e contíguo de datas determinadas automaticamente com base no modelo semântico. A data de início é escolhida como a data mais antiga existente no modelo semântico e a data final é a data mais recente existente no modelo semântico mais os dados que foram populados para o mês fiscal que você pode optar por incluir como um argumento na função CALENDARAUTO(). Para os fins deste exemplo, a função CALENDAR() é usada porque você só convém ver os dados de 31 de maio de 2011 (o primeiro dia em que Vendas começou o acompanhamento desses dados) em diante, pelos próximos dez anos.

No Power BI Desktop, selecione Nova Tabela e, em seguida, insira a seguinte fórmula DAX:

Dates  = CALENDAR(DATE(2011, 5, 31), DATE(2022, 12, 31))

Captura de tela da fórmula CALENDAR no Power BI.

Agora, você tem uma coluna de datas que pode usar. No entanto, essa coluna é um pouco esparsa. Também convém ver colunas apenas pelo ano, pelo número do mês, pela semana do ano e pelo dia da semana. Você pode cumprir essa tarefa selecionando Nova Coluna na faixa de opções e inserindo a equação DAX a seguir, que vai recuperar o ano da tabela Date.

Year = YEAR(Dates[Date])

Captura de tela da adição de colunas usando uma equação DAX.

Você pode realizar o mesmo processo para recuperar o número do mês, o número da semana e o dia da semana:

MonthNum = MONTH(Dates[Date])
WeekNum = WEEKNUM(Dates[Date])
DayoftheWeek = FORMAT(Dates[Date], "DDDD")

Quando você tiver terminado, a tabela conterá as colunas mostradas na figura a seguir.

Captura de tela das colunas finais na tabela DAX.

Você já criou uma tabela de datas comum usando o DAX. Esse processo só adiciona a nova tabela ao modelo semântico; você ainda precisará estabelecer relacionamentos entre a tabela date e as tabelas Sales e Order e, em seguida, marcar a tabela como a tabela de datas oficial do modelo semântico. No entanto, antes de concluir essas tarefas, não se esqueça de levar em consideração outra maneira de compilar uma tabela de datas comum: uso do Power Query.

Power Query

Você pode usar a linguagem M, a linguagem de desenvolvimento usada para compilar consultas no Power Query, para definir uma tabela de datas comum.

Selecione Transformar Dados no Power BI Desktop, que vai direcionar você para o Power Query. No espaço em branco do painel Consultas à esquerda, clique com o botão direito do mouse para abrir o menu suspenso a seguir, no qual você selecionará Nova Consulta > Consulta em Branco.

Captura de tela da compilação de uma nova consulta no Power BI.

Na exibição Nova Consulta resultante, insira a seguinte fórmula M para compilar uma tabela de calendário:

= List.Dates(#date(2011,05,31), 365*10, #duration(1,0,0,0))

Captura de tela do uso de uma fórmula M para desenvolver uma tabela de calendário.

Para os dados de vendas, você deseja que a data de início reflita a data mais antiga que tem nos dados: 31 de maio de 2011. Além disso, convém ver datas para os próximos dez anos, inclusive datas no futuro. Essa abordagem garante que, à medida que novos dados de vendas surgirem, você não precisará recriar essa tabela. Você também pode alterar a duração. Nesse caso, convém ter um ponto de dados por dia, mas você também pode incrementar por horas, minutos e segundos. A figura a seguir mostra o resultado.

Captura de tela do calendário de vendas como uma lista.

Depois que tiver percebido êxito no processo, você notará que tem uma lista de datas, em vez de uma tabela de datas. Para corrigir esse erro, vá até a guia Transformar na faixa de opções e selecione Converter > Em Tabela. Como o nome sugere, esse recurso converterá a lista em uma tabela. Você também pode renomear a coluna para DateCol.

Captura de tela da conversão de uma lista em uma tabela no Editor do Power Query.

Em seguida, convém adicionar colunas à nova tabela para ver datas em termos de ano, mês, semana e dia, de maneira que você possa compilar uma hierarquia no visual. A primeira tarefa é alterar o tipo de coluna selecionando o ícone ao lado do nome da coluna e, no menu suspenso resultante, selecionando o tipo Date.

Captura de tela da alteração do tipo para data.

Depois que tiver concluído a seleção do tipo Date, você poderá adicionar colunas para ano, meses, semanas e dias. Vá até Adicionar Coluna, selecione o menu suspenso em Date e, em seguida, selecione Year, conforme mostrado na figura a seguir.

Captura de tela da adição de colunas por meio do Power Query.

O Power BI adicionou uma coluna de todos os anos extraídos de DateCol.

Captura de tela da adição de colunas com o Power Query em uma tabela.

Conclua o mesmo processo para meses, semanas e dias. Depois que você tiver terminado esse processo, a tabela conterá as colunas mostradas na figura a seguir.

Captura de tela das colunas DateCol, Year, Month, Week of Year e Day Name.

Você já usou com êxito o Power Query para compilar uma tabela de datas comum.

As etapas anteriores mostram como obter a tabela no modelo semântico. Agora, você precisa marcar a tabela como a tabela de datas oficial, de maneira que o Power BI consiga reconhecê-la para todos os valores futuros e garantir que a formatação esteja correta.

Marcar como a tabela de datas oficial

A primeira tarefa para marcar a tabela como a tabela de datas oficial é encontrar a nova tabela no painel Campos. Clique com o botão direito do mouse no nome da tabela e selecione Marcar como tabela de datas, conforme mostrado na figura a seguir.

Captura de tela da opção

Ao marcar a tabela como uma tabela de datas, o Power BI realiza validações para garantir que os dados contenham zero valores nulos, sejam exclusivos e contenham valores de data contínuos por um período. Você também pode escolher colunas específicas na tabela para marcar como a data, o que pode ser útil quando há muitas colunas na tabela. Clique com o botão direito do mouse na tabela, selecione Marcar como tabela de datas e Configurações da tabela de datas. A janela a seguir será exibida, onde você pode escolher qual coluna deve ser marcada como Date.

Captura de tela do diálogo Marcar como tabela de datas.

A seleção da opção Marcar como tabela de datas removerá hierarquias geradas automaticamente do campo Date na tabela marcada como uma tabela de datas. Para outros campos de data, a hierarquia automática continuará presente até você estabelecer um relacionamento entre esse campo e a tabela de datas ou até você desativar o recurso Data/Hora Automática. Você pode adicionar manualmente uma hierarquia à tabela de datas comum clicando com o botão direito do mouse nas colunas year, month, week ou day no painel Campos e selecionando Nova hierarquia. Esse processo será abordado posteriormente neste módulo.

Compilar o visual

Para compilar o visual entre as tabelas Sales e Orders, você precisará estabelecer um relacionamento entre essa nova tabela de datas comum e as tabelas Sales e Orders. Dessa forma, você poderá compilar visuais usando a nova tabela de datas. Para concluir essa tarefa, vá até a guia Modelo >Gerenciar Relacionamentos, em que você pode compilar relacionamentos entre a tabela de datas comum e as tabelas Orders e Sales usando a coluna OrderDate. A captura de tela a seguir mostra um exemplo de um relacionamento desse tipo.

Captura de tela do diálogo Criar relacionamento.

Depois que tiver compilado os relacionamentos, você poderá compilar o visual Total de Vendas e Quantidade de Ordens por Tempo com a tabela de datas comuns desenvolvida usando o DAX ou o método do Power Query.

Para determinar o total de vendas, você precisa adicionar todas as vendas, pois a coluna Amount na tabela Sales só examina a receita de cada venda, e não a receita total de vendas. Você pode concluir essa tarefa usando o cálculo de medida a seguir, que será explicado em discussões posteriores. O cálculo que você usará ao compilar essa medida é o seguinte:

#Total Sales = SUM(Sales[‘Amount’])

Depois que tiver concluído, você poderá criar uma tabela retornando à guia Visualizações e selecionando o visual Tabela. Convém consultar o total de ordens e vendas por ano e mês, logo, só convém incluir as colunas Year e Month da tabela date, a coluna OrderQty e a medida #TotalSales. Ao aprender mais sobre hierarquias, você também compilar uma hierarquia que permitirá fazer busca detalhada de anos para meses. Para este exemplo, você pode exibi-las lado a lado. Você criou com êxito um visual com uma tabela de datas comum.

Captura de tela da coluna Common Date usando DAX.