Ir para conteúdo
  • 0

Tabela dCalendario construída em "M" se perde após atualização incremental.


Clóvis
Ir para solução Solucionado por Leonardo Karpinski ,

Pergunta

  • Alunos

Pessoal, boa noite.
Estou tentando resolver um problema já algum tempo e não consigo obter sucesso.
Tenho uma tabela dCalendario construída em M que não funciona corretamente com atualização incremental. Se eu importar a base completa e pubilcar no Online sem atualização incremental, ela funciona normalmente, porém se eu usar parâmetros com RangeStart e RangeEnd com  configuração incremental no modelo, após atualizar no Online, as datas que estão fora do Range dos parâmetros se perdem deixando o eixo do gráfico "Em branco".

 

Meus relacionamentos estão aparentemente corretos. As datas estão relacionadas onde tanto a calendário quanto as fatos são data hora. Já tentei várias coisas mas sem sucesso.

Grato!

dCalendario.png

Em Branco.png

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0
  • Alunos

@Clóvis,

Como a tabela é "filtrada" durante as atualizações da atualização incremental faz sentido esse comportamento, provavelmente a melhor solução é fixar uma data direto no Power Query como você mesmo disse, ou como o Rafael indicou, como tudo será feito direto no PBI pode colocar um período grande como de 1900 até 10 anos a mais da data atual, que assim você consegue garantir que todo o range da sua fato será contemplado na dimensão e provavelmente a carga será rápida. 

Obs.: Para fazer a dCalendario com a última data dinâmica basta usar o código abaixo. 

let
    Source = {Number.From(#date(1900,1,1))..Number.From(#date(Date.Year(DateTime.LocalNow())+20,12,31))},
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
    #"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}})
in
    #"Changed Type"

 

Editado por arthurOribeiro
  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Solução

Vejo duas possibilidades:

1) Usar via M com um range grande de anos mas incluir uma coluna com o Offset do ano, e aí usar essa coluna do offset do ano como filtro a nível de relatório para deixar apenas o ano atual e os últimos X anos que desejar. Mostrei essa tabela calendário com offset na Live 52.

2) Fazer via DAX. Tem sim como pegar o YEAR( MAX( Fato[Data] ) )

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Clóvis boa noite!

Pelo que eu entendi no que postou, a tua dCalendário pega a data inicial e final da sua tabela fato.
Seria interessante você desvincular a dCalendário da Fato.

Quando a dCalendário não está no Banco de Dados, eu trabalho com um arquivo de EXCEL onde crio uma coluna com datas de 01/01/1980 até 31/12/2060, por exemplo e depois pego o min e max da fato para filtrar a dCalendário.

Talvez, no seu caso, você precise deixar ela totalmente independente e filtrar os períodos nos visuais.

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Rafa Lemos Bom dia. Obrigado pela resposta. Não entendi bem. Veja, você sugere usar Excel para a dcalendario marretando a data início e fim? Porque essa amarração fixa não poderia ser feita diretamente no Power Query? Ao invés de usar o min e máx da fato eu usaria 1980 e 2060. Contudo isso não é o que quero fazer. Quero pegar o primeiro dia do ano  da data mínima da fato e o último dia do ano da data Max da fato.

Editado por Clóvis
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Arthur, obrigado por responder.

Ainda não faz muito sentido pra mim. Porque a tabela criada em DAX funciona bem com o Min e a Max da fato e a criada em M não? O problema da calendario criada em DAX é que eu não consigo pegar o dia mínimo nem máximo do Ano (01/01(Ano mínimo da Fato) e (31/12(Ano máximo da Fato).

Me corrija se eu estiver falando besteira, mas dessa forma que você sugeriu, sempre que um novo ano entrar no modelo terei que atualizar o filtro lateral (Slicer do Ano) no visual liberando o novo ano. Pois não faz sentido deixar no slicer anos futuros. Não há como mesmo a tabela calendário ficar 100% automática com atualização incremental?
 Obrigado.

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Clóvis no DAX funciona porque a tabela fato já foi processada. A consulta que você faz é em algo já processado.

Pelo que você está relatando, a calendário no M está processando antes da carga incremental, por isso eu disse inicialmente para desvincular a criação das datas da calendário com a Fato.

  • Like 1
Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

Pessoal, muito obrigado. Fiz como vocês orientaram, desvinculando a calendário M da fato e deixando a data máxima automática 10 anos a mais do current date. 

@Leonardo Karpinski Assim que conseguir entender a questão do offset na Live 52 tentarei aplicar. Muito obrigado a todos. Voltarei para fechar o tópico. 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
×
×
  • Criar Novo...