Time intelligence: as fórmulas DAX que facilitam os cálculos com datas
A linguagem DAX permite a utilização de expressões que executam cálculos baseados no tempo. Por exemplo, comparar valores de um ano com os do ano imediatamente anterior, calcular totais até à data corrente ou até uma data específica, encontrar um valor referente ao primeiro ou último dia de um determinado mês, somar valores entre duas datas, entre muitas outras operações.
Antes de introduzirmos medidas personalizadas com fórmulas temporais, temos de juntar um calendário ao nosso modelo de dados. Sem ele, este tipo de fórmulas não funcionará corretamente.
O calendário não é mais do que uma tabela com uma série de dias seguidos entre uma data de início e uma data de fim. A data funciona como uma chave primária, na medida em que não pode incluir valores repetidos (tal como os dias de um calendário não se poderem repetir) e porque servirá para estabelecer uma relação com as datas da tabela “Factos” onde estão todas as transações.
Além do dia, o calendário pode incluir o número e nome dos meses, o número e nome do dia da semana, o ano, trimestre, etc. A informação que incluirmos no calendário servirá para filtrar os dados das visualizações. Como é óbvio o intervalo de datas do calendário deverá ser suficientemente largo para incluir todas as datas da tabela “Factos”.
É relativamente fácil construir um calendário utilizando o Excel. Se não quiser fazer um por si mesmo, importe o ficheiro “8_Calendário.xlsx” para o modelo de dados e relacione o campo “Data” com o campo “Dia” da tabela “Factos”:
Como pode verificar, a relação é de 1 (“Datas” do “Calendário”) para muitos (“Dia” da tabela “Factos”), o que significa que a data do calendário é única, mas que poderão ocorrer várias transações no mesmo dia.
Também poderá ocultar os campos “Dia”, “Mês” e “DiaSemana” do modelo de dados uma vez que são campos numéricos que servem apenas para ordenar os outros campos.
Vamos supor que precisamos de calcular o valor de faturação acumulado a cada um dos meses e para cada um dos 4 anos. O objetivo é comparar a evolução da faturação mês a mês acumulada em relação à do ano anterior.
Para fazer este cálculo, precisamos de uma medida calculada para a faturação acumulada, que poderá ser dada pela seguinte expressão:
Nesta expressão estamos a utilizar a fórmula TOTALYTD que tem a seguinte sintaxe:
TOTALYTD (expressão; datas; [filtro]; [data_fim_ano])
O argumento “expressão” calcula a soma do valor do campo “Faturação” e as datas são dadas pelo campo “Data” do calendário. Note aqui, uma vez mais, que precisamos de fazer referência à data da tabela “Calendário” e não à data da tabela “Factos” para que a fórmula funcione corretamente.
Os campos “filtro” e “data_fim_ano” são opcionais e servem para definir um filtro e definir a data de fim de ano, se diferente de 31-12-XXXX.
Na visualização em matriz representada acima, os nomes dos meses estão ordenados pela sua ordem natural. Se está a seguir as instruções deste manual, estará provavelmente a ver os meses ordenados por ordem alfabética, o que não é provavelmente o que pretendia.
Para resolver o problema, teremos de voltar ao menu “Dados” e clicar sobre a coluna “NomeMês” e “Ordenar por Coluna” do separador “Modelação”:
Como a coluna “Mês” é numérica, a ordenação é exatamente a que pretendemos (Janeiro corresponde a 1, Fevereiro a 2, etc.). O mesmo exercício terá de ser feito para os nomes dos dias da semana.
Se quisermos outra medida para comparar a faturação de um determinado período com o mesmo período do ano imediatamente anterior (um requisito muito frequente), podemos apoiar-nos na fórmula SAMEPERIODLASTYEAR, cujo único argumento é uma coluna de datas.
Esta fórmula devolve uma coluna de datas do ano anterior às do argumento. No nosso caso, poderíamos utilizá-la em conjunto com a fórmula CALCULATE da seguinte maneira:
Agora, em conjunto com as fórmulas IF, DIVIDE, BLANK e ISBLANK, podemos ainda acrescentar uma nova medida calculada para determinar a taxa de crescimento das vendas em relação ao período homólogo:
Esta fórmula começa por avaliar se o campo “Faturação AnoAnterior” está vazio através da fórmula IF. Se sim, então a fórmula devolve também um valor vazio (BLANK()). Com esta condição evitamos calcular taxas de crescimento sobre um valor de faturação do ano anterior inexistente.
De seguida, se o resultado da condição for falso (isto é, existe um valor para a faturação do ano anterior), então utilizamos a fórmula DIVIDE para dividir o valor do campo “Faturação *” que corresponde à faturação deste ano pelo valor do campo “Faturação AnoAnterior” subtraído de 1, para que os valores sejam apresentados em formato de taxa de crescimento.
PUBLICAR RELATÓRIOS NO POWER BI SERVICE
A publicação de relatórios no Power BI Service é um dos passos mais simples e úteis do Power BI. Assim que terminar todo o trabalho de recolha e edição de dados, quando o modelo de dados estiver concluído com as relações devidamente configuradas e com colunas e medidas calculadas, pode publicar todo o trabalho no Power BI Service e, desse modo, torná-lo acessível na web.
Para o fazer, apenas terá de clicar no botão “Publicar” do lado direito do friso:
Para que o Power BI Service seja capaz de identificar a conta a usar, terá que iniciar sessão no Power BI Desktop. Poderá fazê-lo a partir do link “Iniciar Sessão” no canto superior direito da aplicação que abrirá a seguinte caixa: