O DAX (Data Analysis Expressions) tem 35 funções especificamente para agregar e comparar dados ao longo do tempo. Ao contrário das funções de data e hora do DAX, as funções de inteligência temporal não têm nada semelhante no Excel. Isso ocorre porque as funções de inteligência temporal funcionam com dados que estão em constante alteração, dependendo do contexto selecionado em Tabelas Dinâmicas e visualizações do Power View.
Para trabalhar com funções de inteligência temporal, você precisa ter uma tabela de datas incluída no modelo de dados. A tabela de datas deve incluir uma coluna com uma linha para cada dia de cada ano incluída em seus dados. Esta coluna é considerada a coluna Data (embora possa ser nomeada como você quiser). Muitas funções de inteligência temporal exigem a coluna de data para calcular de acordo com as datas selecionadas como campos em um relatório. Por exemplo, se você tiver uma medida que calcula um saldo de fechamento de trimestre usando a função CLOSINGBALANCEQTR, para que o Power Pivot saiba quando o final do trimestre realmente é, ele deve referenciar a coluna de data na tabela de datas para saber quando o trimestre começa e termina. Para saber mais sobre tabelas de datas, dê uma olhada em Entender e criar tabelas de datas no Power Pivot no Excel.
Funções
Funções que retornam uma única data
As funções nessa categoria retornam uma única data. Em seguida, o resultado pode ser usado como argumentos para outras funções.
As duas primeiras funções nessa categoria retornam a primeira ou última data no Date_Column no contexto atual. Isso pode ser útil quando você deseja encontrar a primeira ou última data em que você teve uma transação de um tipo específico. Essas funções levam apenas um argumento, o nome da coluna de data na tabela de datas.
As duas próximas funções nessa categoria encontram a primeira ou última data (ou qualquer outro valor de coluna também) em que uma expressão tem um valor não em branco. Isso é usado com mais frequência em situações como inventário, em que você deseja obter o último valor de inventário e não sabe quando o último inventário foi feito.
-
FIRSTNONBLANK (Date_Column, Expressão)
-
LASTNONBLANK (Date_Column, Expressão)
Mais seis funções que retornam uma única data são as funções que retornam a primeira ou última data de um mês, trimestre ou ano dentro do contexto atual do cálculo.
-
STARTOFMONTH (Date_Column)
-
STARTOFQUARTER (Date_Column)
-
STARTOFYEAR (Date_Column [,YE_Date])
-
ENDOFMONTH (Date_Column)
-
ENDOFQUARTER (Date_Column)
-
ENDOFYEAR (Date_Column [,YE_Date])
Funções que retornam uma tabela de datas
Há dezesseis funções de inteligência temporal que retornam uma tabela de datas. Na maioria das vezes, essas funções serão usadas como um argumento SetFilter para a função CALCULATE . Assim como todas as funções de inteligência temporal no DAX, cada função usa uma coluna de data como um de seus argumentos.
As oito primeiras funções nessa categoria começam com uma coluna de data em um contexto atual. Por exemplo, se usar uma medida em uma Tabela Dinâmica, pode haver um mês ou um ano nos rótulos de coluna ou rótulos de linha. O efeito net é que a coluna de data é filtrada para incluir apenas as datas do contexto atual. A partir desse contexto atual, essas oito funções calculam o dia, mês, trimestre ou ano anteriores e retornam essas datas na forma de uma única tabela de colunas. As funções "anteriores" funcionam para trás a partir da primeira data no contexto atual e as funções "próximo" avançam da última data no contexto atual.
-
ANTERIORDAY (Date_Column)
-
PREVIOUSMONTH (Date_Column)
-
PREVIOUSQUARTER (Date_Column)
-
PREVIOUSYEAR (Date_Column [,YE_Date])
-
NEXTDAY (Date_Column)
-
NEXTMONTH (Date_Column)
-
NEXTQUARTER (Date_Column)
-
NEXTYEAR (Date_Column [,YE_Date])
As próximas quatro funções nessa categoria são semelhantes, mas, em vez de calcular um período anterior (ou próximo), calculam o conjunto de datas no período que é "mês a data" (ou trimestral, ou ano a ano ou no mesmo período do ano anterior). Todas essas funções executam seus cálculos usando a última data no contexto atual. Observe que SAMEPERIODLASTYEAR exige que o contexto atual contenha um conjunto contíguo de datas. Se o contexto atual não for um conjunto contíguo de datas, o SAMEPERIODLASTYEAR retornará um erro.
-
DATESMTD (Date_Column)
-
DATESQTD (Date_Column)
-
DATESYTD (Date_Column [,YE_Date])
-
SAMEPERIODLASTYEAR (Date_Column)
As últimas quatro funções nessa categoria são um pouco mais complexas e também um pouco mais poderosas. Essas funções são usadas para mudar do conjunto de datas que estão no contexto atual para um novo conjunto de datas.
-
DATEADD (Date_Column, Number_of_Intervals, Interval)
-
DATESBETWEEN (Date_Column, Start_Date, End_Date)
-
DATESINPERIOD (Date_Column, Start_Date, Number_of_Intervals, Interval)
-
PARALLELPERIOD (Date_Column, Number_of_Intervals, Interval)
DATESBETWEEN calcula o conjunto de datas entre a data de início e a data de término especificada. As três funções restantes mudam algum número de intervalos de tempo do contexto atual. O intervalo pode ser dia, mês, trimestre ou ano. Essas funções facilitam a alteração do intervalo de tempo para um cálculo por qualquer uma das seguintes funções:
-
Voltar dois anos
-
Voltar um mês
-
Avançar três quartos
-
Voltar 14 dias
-
Avançar 28 dias
Em cada caso, você precisa especificar apenas qual intervalo e quantos desses intervalos devem ser deslocados. Um intervalo positivo avançará no tempo, enquanto um intervalo negativo voltará no tempo. O intervalo em si é especificado por um palavra-chave de DIA, MÊS, TRIMESTRE ou ANO. Essas palavras-chave não são cadeias de caracteres, portanto, não devem estar entre aspas.
Funções que avaliam expressões durante um período de tempo
Essa categoria de funções avalia uma expressão em um período de tempo especificado. Você pode realizar a mesma coisa usando o CALCULATE e outras funções de inteligência temporal. Por exemplo,
= TOTALMTD (Expressão, Date_Column [, SetFilter])
é precisamente o mesmo que:
= CALCULATE (Expression, DATESMTD (Date_Column)[, SetFilter])
No entanto, é mais fácil usar essas funções de inteligência temporal quando elas são adequadas para o problema que precisa ser resolvido:
-
TOTALMTD (Expressão, Date_Column [, SetFilter])
-
TOTALQTD (Expressão, Date_Column [, SetFilter])
-
TOTALYTD (Expressão, Date_Column [, SetFilter] [,YE_Date]) *
Também nessa categoria há um grupo de funções que calculam saldos de abertura e fechamento. Há certos conceitos que você deve entender com essas funções específicas. Primeiro, como você pode achar óbvio, o saldo de abertura para qualquer período é o mesmo que o saldo de fechamento do período anterior. O saldo de fechamento inclui todos os dados até o final do período, enquanto o saldo de abertura não inclui dados de dentro do período atual.
Essas funções sempre retornam o valor de uma expressão avaliada para um ponto específico no tempo. O ponto no tempo com o qual nos preocupamos é sempre o último valor de data possível em um período de calendário. O saldo de abertura é baseado na última data do período anterior, enquanto o saldo de fechamento é baseado na última data no período atual. O período atual é sempre determinado pela última data no contexto de data atual.
-
OPENINGBALANCEMONTH (Expression, Date_Column [,SetFilter])
-
OPENINGBALANCEQUARTER Trimestre (Expressão, Date_Column [,SetFilter])
-
OPENINGBALANCEYEAR (Expression, Date_Column [,SetFilter] [,YE_Date])
-
CLOSINGBALANCEMONTH (Expression, Date_Column [,SetFilter])
-
CLOSINGBALANCEQUARTER (Expression, Date_Column [,SetFilter])
-
CLOSINGBALANCEYEAR (Expression, Date_Column [,SetFilter] [,YE_Date])
Recursos adicionais
Artigos: Entender e criar tabelas de datas no Power Pivot no Excel
Referência: Referência de função DAXno Office.com
Exemplos: Modelagem e análise de dados de perda e lucro com o Microsoft PowerPivot no Excel