Funções DAX para YTD(year_end_date)

Se você usou as funções DATESYTD e TOTALYTD no DAX, você deve ter notado que o parâmetro opcional year_end_date é uma sequência que define o último dia do ano. O valor padrão é 31 de dezembro, portanto, esse parâmetro é usado somente quando o final do ano fiscal não corresponde a 31 de dezembro.

Por exemplo, você pode escrever uma fórmula para o cálculo acumulado no ano de um ano fiscal começando em 30 de junho dessa maneira:

SALES YTD :=
CALCULATE (
    [SALES],
    DATESYTD ( 'DATE'[DATE], "06/30" )   -- MM/DD FORMAT
)

Bem, você pode usar esta outra versão:

SALES YTD :=
CALCULATE (
    [SALES],
    DATESYTD ( 'DATE'[DATE], "30/06" )   -- DD/MM FORMAT
)

Dependendo das configurações locais, você pode ter o formato MM/DD ou DD/MM.  Nas primeiras versões, o DAX necessitava do local correto ou geraria um erro caso a data não fosse válida.  No entanto, a versão atual do Power BI aceita ambas as versões, independentemente das configurações de localidade.
Normalmente você tem o final do ano fiscal correspondente ao final de um mês, o que não é um problema.  Mas por que estamos usando os formatos DD/MM ou MM/DD, que são ambíguos para datas nos primeiros 12 dias de um mês? Basicamente, por causa desta frase na documentação:

O parâmetro year_end_date é um literal de cadeia de caracteres de uma data, na mesma localidade da localidade do cliente em que a pasta de trabalho foi criada. A parte do ano da data não é necessária e é ignorada.

Felizmente, temos uma maneira melhor de expressar uma data: use AAAA-MM-DD!  As funções DATESYTD e TOTALYTD irão ignorar o ano, mas não haverá ambiguidade sobre dia e mês.

 

SALES YTD :=
CALCULATE (
    [SALES],
    DATESYTD ( 'DATE'[DATE], "2018-06-30" )   -- YYYY-MM-DD FORMAT
)

É uma coisa pequena, mas é uma consideração válida sempre que um string puder ser convertido em uma data no DAX.
Se você tiver que escrever essa sequência, use o formato AAAA-MM-DD e evite problemas de configuração de local.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *