Utilizar funções de análise de tempo DAX
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 asDATESMTD
funções DAX eDATESQTD
para o mês até à data (MTD) e o trimestre até à data (QTD). Pode transmitir estas funções como filtros para aCALCULATE
função DAX. -
TOTALYTD
- Avalia uma expressão para YTD no contexto de filtro atual. As funções QTD e MTD DAX equivalentes deTOTALQTD
eTOTALMTD
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
,PREVIOUSMONTH
ePREVIOUSQUARTER
PREVIOUSYEAR
.NEXTYEAR
NEXTQUARTER
NEXTMONTH
NEXTDAY
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.