Página 1 de 1

"Armadilha" da CALENDARAUTO() dCalendario

Enviado: 27 Abr 2022 às 13:23
por GustavoN
Pessoal, tudo bem?
Peguei este scritp no Youtuber e estava usando já algum tempo, porém me deparei com um probleminha.
Quando utilizamos o CALENDARAUTO, acaba pegando literalmente a menor data e maior data, sem a real necessidade.
Imagine você ter uma coluna com o ano de nascimento e seu cliente mais velho ser de 1930, isso iria apenas aumentar inclusive o tamanho do arquivo *.pbix.

Eis que gostaria de uma luz no fim do túnel, vocês teriam algum outro scritp, ou uma maneira para adaptar o script abaixo sem o "CALENDARAUTO()" ? (Uso na modelagem de dados 11 tabelas :?).


dCalendario =
ADDCOLUMNS(
CALENDARAUTO(),
"Ano nome", YEAR([Date]),
"Mês nome", Month([Date]),
"Trimestre num", QUARTER([Date]),
"Trimestre Nome", Format([Date],"\Qq"),
"Nome Mês", Format([Date],"mmm"),
"Dia ", DAY([Date]),
"Dia Semana", Weekday([Date],2),
"Nome dia", Format([Date],"dddd"),
"Semana num", WEEKDAY([DATE]),
"DiadeTrabalho", if(WEEKDAY([Date],2)=6 || WEEKDAY([Date],2)=7,"N","S"),
"Ano atual", if(YEAR([Date])=YEAR(TODAY()),"S","N"),
"Mês atual", if(YEAR([Date])=YEAR(TODAY()) && MONTH([Date])=MONTH(TODAY()),"S","N"),
"Dia atual", if(YEAR([Date])=YEAR(TODAY()) && MONTH([Date])=MONTH(TODAY()) && DAY([Date])=DAY(TODAY()),"S","N"),
"Ano móvel", DATEDIFF(TODAY(),[Date],YEAR),
"Trim. móvel", DATEDIFF(TODAY(),[Date],QUARTER),
"Mês móvel", DATEDIFF(TODAY(),[Date],MONTH),
"Semana móvel", DATEDIFF(TODAY(),[Date],WEEK),
"Dia móvel", DATEDIFF(TODAY(),[Date],DAY)
)

Re: "Armadilha" da CALENDARAUTO() dCalendario

Enviado: 27 Abr 2022 às 16:31
por GustavoAlbani
Boa tarde,

Você pode criar uma tabela desta forma também, onde inicio por exemplo em 2018, e termino um ano frente do que estou.
O seu início poderia ser um dado mais próximo, que deseje usar, e o final você quem define também.

CALENDARIO = CALENDAR ( DATE(2018,01,01), DATE(YEAR(TODAY()) + 1,12,31))

Uma vez criado, você pode inserir as colunas que você irá utilizar, tipo:
ANO = YEAR(CALENDARIO[Date])
MES = MONTH(CALENDARIO[Date])
DIA = DAY(CALENDARIO[Date])
DIA_SEMANA = UPPER( FORMAT(CALENDARIO[Date],"DDD") )

Uma dica, se não for usar os dados de todas as colunas, não crie, mantenha em seu relatório somente o que for utilizar, isso poupa espaço, processamento, entre outros.

Att.
Gustavo.