Utilizar funções de análise de tempo DAX

Concluído

O DAX inclui várias funções de análise de tempo para simplificar a tarefa de modificar o contexto de filtro de data. Pode escrever muitas destas fórmulas de inteligência através de uma CALCULATE função que modifica filtros de data, mas isso iria criar mais trabalho.

Nota

Muitas funções de análise de tempo DAX estão relacionadas com períodos de datas padrão, mais especificamente anos, trimestres e meses. Se tiver períodos de tempo irregulares (por exemplo, meses financeiros que começam a meio do mês de calendário) ou precisar de trabalhar com semanas ou períodos de tempo (horas, minutos e assim por diante), as funções de análise de tempo DAX não serão úteis. Em vez disso, terá de utilizar a CALCULATE função e transmitir filtros de data ou hora criados à mão.

Requisito de tabela de data

Para trabalhar com funções DAX de análise de tempo, precisa de ter, pelo menos, uma tabela de data no seu modelo. Uma tabela de data é uma tabela que cumpre os seguintes requisitos:

  • Deve ter uma coluna de tipo de dados Data (ou data/hora), conhecida como a coluna de data.
  • A coluna de data deve conter valores exclusivos.
  • A coluna de data não deve conter espaços EM BRANCO.
  • A coluna de data não deve ter datas em falta.
  • A coluna de data deve abranger anos completos. Um ano não é necessariamente um ano de calendário (janeiro a dezembro).
  • A tabela de data deve ser indicada como tal.

Para obter mais informações, veja Criar tabelas de data no Power BI Desktop.

Resumos ao longo do tempo

Um grupo de funções de análise de tempo DAX está relacionado com resumos ao longo do tempo:

  • DATESYTD - Devolve uma tabela de coluna única que contém datas para o ano até à data (YTD) no contexto de filtro atual. Este grupo também inclui as DATESMTD funções DAX e DATESQTD para o mês até à data (MTD) e o trimestre até à data (QTD). Pode transmitir estas funções como filtros para a CALCULATE função DAX.
  • TOTALYTD - Avalia uma expressão para YTD no contexto de filtro atual. As funções QTD e MTD DAX equivalentes de TOTALQTD e TOTALMTD também estão incluídas.
  • DATESBETWEEN - Devolve uma tabela que contém uma coluna de datas que começa com uma determinada data de início e continua até uma determinada data de fim.
  • DATESINPERIOD - Devolve uma tabela que contém uma coluna de datas que começa com uma determinada data de início e continua para o número especificado de intervalos.

Nota

Embora a TOTALYTD função seja simples de utilizar, está limitado a transmitir uma expressão de filtro. Se precisar de aplicar várias expressões de filtro, utilize a CALCULATE função e, em seguida, transmita a DATESYTD função como uma das expressões de filtro.

No exemplo seguinte, vai criar o seu primeiro cálculo de análise de tempo que utilizará a função TOTALYTD. A sintaxe é a seguinte:

TOTALYTD(<expression>, <dates>, [, <filter>][, <year_end_date>])

A função requer uma expressão e, tal como acontece com todas as funções de análise de tempo, uma referência à coluna de data de uma tabela de data marcada. Opcionalmente, pode transmitir uma única expressão de filtro ou a data de fim do ano (necessária apenas quando o ano não termina a 31 de dezembro).

Transfira e abra o ficheiro Adventure Works DW 2020 M07.pbix. Em seguida, adicione a seguinte definição de medida à tabela Vendas que calcula a receita YTD. Formate a medida como moeda com duas casas decimais.

Revenue YTD =
TOTALYTD([Revenue], 'Date'[Date], "6-30")

O valor de data de fim de ano de "6-30" representa 30 de junho.

Na Página 1 do relatório, adicione a medida Receita do Ano Até à Data ao elemento visual de matriz. Repare que esta produz um resumo dos valores de receita desde o início do ano até ao mês filtrado.

Comparações ao longo do tempo

Outro grupo de funções de análise de tempo DAX está relacionado com períodos de tempo variáveis:

  • DATEADD - Devolve uma tabela que contém uma coluna de datas, movidas para a frente ou para trás no tempo pelo número especificado de intervalos a partir das datas no contexto de filtro atual.
  • PARALLELPERIOD - Devolve uma tabela que contém uma coluna de datas que representa um período paralelo às datas na coluna de datas especificadas, no contexto de filtro atual, com as datas movidas para a frente ou para trás no tempo.
  • SAMEPERIODLASTYEAR - Devolve uma tabela que contém uma coluna de datas que são movidas um ano para trás a partir das datas na coluna de datas especificadas, no contexto de filtro atual.
  • Existem muitas funções DAX auxiliares para navegar para trás ou para a frente por períodos de tempo específicos e todas devolvem uma tabela de datas. Estas funções auxiliares incluem , , , , e PREVIOUSDAY, PREVIOUSMONTHe PREVIOUSQUARTERPREVIOUSYEAR. NEXTYEARNEXTQUARTERNEXTMONTHNEXTDAY

Agora, irá adicionar uma medida à tabela Vendas que calcula a receita do ano anterior com a SAMEPERIODLASTYEAR função . Formate a medida como moeda com duas casas decimais.

Revenue PY =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    RevenuePriorYear

Adicione a medida Receita do Ano Anterior ao elemento visual de matriz. Repare que esta produz resultados semelhantes aos valores de receita do ano anterior.

Em seguida, irá modificar a medida ao mudar o nome para Revenue YoY % e, em seguida, atualizar a RETURN cláusula para calcular a taxa de alteração. Altere o formato para uma percentagem com duas casas decimais.

Revenue YoY % =
VAR RevenuePriorYear = CALCULATE([Revenue], SAMEPERIODLASTYEAR('Date'[Date]))
RETURN
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

Repare que a medida % de Receita de Ano a Ano produz um fator de taxa de alteração em relação à receita mensal do ano anterior. Por exemplo, julho de 2018 representa um aumento de 106,53% em comparação com a receita mensal do ano anterior e novembro de 2018 representa uma diminuição de 24,22% em comparação com a receita mensal do ano anterior.

Nota

A medida % de Receita de Ano a Ano demonstra uma boa utilização das variáveis DAX. A medida melhora a legibilidade da fórmula e permite-lhe fazer o teste de unidades da lógica de medida (ao devolver o valor da variável RevenuePriorYear). Além disso, a medida é uma fórmula ideal porque não precisa de obter o valor de receita do ano anterior duas vezes. Depois de armazená-la uma vez numa variável, a RETURN cláusula utiliza para o valor da variável duas vezes.