Ir para conteúdo
  • 0

limitando Tabela dCalendario as datas da tabela Fato


Jean Carlos Rachadel
Ir para solução Solucionado por Fábio Marquez ,

Pergunta

  • Alunos

Bom dia. Tenho uma dimensão Calendário pronta, com feriados nacionais, municipais, etc etc etc. Uma tabela gerada pelo ERP. Mais ela acaba sendo enorme, e na hora de fazer filtros usando ela (porque relacionei ambas - Dimensão e Fato), acabam aparecendo períodos no filtro que não estão na minha base Fatos, basicamente porque tem informação demais na dimensão. Pergunta: como limitar esses dados (da DCalendário) aos dados de datas que estão na Fato?

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

Bom dia, Jean.

Tem um caminho que eu tentaria que eu não sei se é o melhor, talvez os colegas do fórum possam complementar:

No Power Query, eu iria na fonte da tabela calendário e criaria algumas variáveis antes da etapa fonte que posteriormente iria usar como filtro.

Clicando na etapa fonte e depois em 'Editor Avançado'.

PQCALENDARIO.thumb.png.d2672efe07402adfad41cc690f937ed5.png

Logo após o comando let, escreveria o seguinte antes do primeiro comando de Fonte:

let
    // IDENTIFICO QUAL A DATA MÍNIMA NA MINHA TABELA FATO
    DataMin = List.Min(Venda[Data]),

    // IDENTIFICO QUAL A DATA MÁXIMA NA MINHA TABELA FATO
    DataMax = List.Max(Venda[Data]),

    // IDENTIFICO QUAL O ANO DESTA DATA MÍNIMA NA MINHA TABELA FATO
    AnoMin = Date.Year(DataMin),

    // IDENTIFICO QUAL O ANO DESTA DATA MÁXIMA NA MINHA TABELA FATO
    AnoMax = Date.Year(DataMax),

    // CRIO UMA VARIÁVEL QUE É PRIMEIRO DE JANEIRO DO ANO MÍNIMO
    DataInicial = #date(AnoMin, 1, 1),

    // CRIO UMA VARIÁVEL QUE É 31 DE DEZEMBRO DO ANO MÁXIMO
    DataFinal = #date(AnoMax, 12, 31),

    // AGORA, OS PASSOS QUE O PRÓPRIO PQ HAVIA CRIADO, FONTE ETC...

E logo no final, antes do comando in, escreveria o filtro na coluna de Data:

    #"Filtrar Linhas" = Table.SelectRows(#"Changed Type", each [Data] >= DataInicial and [Data] <= DataFinal)
in
    #"Filtrar Linhas"

Ou seja, estou criando uma etapa de filtro de linhas (para saber a função, filtrei dois valores aleatórios) e que os argumentos são o primeiro dia do ano do menor ano que tenho na fato e também o último dia do último ano que tenho na fato.

Não sei se ficou claro o passo-a-passo, qualquer problema me manda uma mensagem.

Acredito que dessa forma seja uma possível solução, mas como falei não sei se é a mais adequada.

Abraços.

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

  • 0
  • Alunos
6 horas atrás, Fábio Marquez disse:

Bom dia, Jean.

Tem um caminho que eu tentaria que eu não sei se é o melhor, talvez os colegas do fórum possam complementar:

No Power Query, eu iria na fonte da tabela calendário e criaria algumas variáveis antes da etapa fonte que posteriormente iria usar como filtro.

Clicando na etapa fonte e depois em 'Editor Avançado'.

PQCALENDARIO.thumb.png.d2672efe07402adfad41cc690f937ed5.png

Logo após o comando let, escreveria o seguinte antes do primeiro comando de Fonte:


let
    // IDENTIFICO QUAL A DATA MÍNIMA NA MINHA TABELA FATO
    DataMin = List.Min(Venda[Data]),

    // IDENTIFICO QUAL A DATA MÁXIMA NA MINHA TABELA FATO
    DataMax = List.Max(Venda[Data]),

    // IDENTIFICO QUAL O ANO DESTA DATA MÍNIMA NA MINHA TABELA FATO
    AnoMin = Date.Year(DataMin),

    // IDENTIFICO QUAL O ANO DESTA DATA MÁXIMA NA MINHA TABELA FATO
    AnoMax = Date.Year(DataMax),

    // CRIO UMA VARIÁVEL QUE É PRIMEIRO DE JANEIRO DO ANO MÍNIMO
    DataInicial = #date(AnoMin, 1, 1),

    // CRIO UMA VARIÁVEL QUE É 31 DE DEZEMBRO DO ANO MÁXIMO
    DataFinal = #date(AnoMax, 12, 31),

    // AGORA, OS PASSOS QUE O PRÓPRIO PQ HAVIA CRIADO, FONTE ETC...

E logo no final, antes do comando in, escreveria o filtro na coluna de Data:


    #"Filtrar Linhas" = Table.SelectRows(#"Changed Type", each [Data] >= DataInicial and [Data] <= DataFinal)
in
    #"Filtrar Linhas"

Ou seja, estou criando uma etapa de filtro de linhas (para saber a função, filtrei dois valores aleatórios) e que os argumentos são o primeiro dia do ano do menor ano que tenho na fato e também o último dia do último ano que tenho na fato.

Não sei se ficou claro o passo-a-passo, qualquer problema me manda uma mensagem.

Acredito que dessa forma seja uma possível solução, mas como falei não sei se é a mais adequada.

Abraços.

Boa tarde Fabio, tudo bem?
Muito obrigado, funcionou super bem.

Link para o comentário
Compartilhar em outros sites

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