Ir para conteúdo
  • 0

Projeção de quantidade de projetos


Eliane Ferreira Cavalcanti
Ir para solução Solucionado por Erick Oliveira ,

Pergunta

  • Alunos

Bom  dia, tudo bem?

Preciso trazer a quantidade de projetos que eu vou ter ao longo do tempo até o período da  "DataVencimentoDividaPe", considerando a "ùltimaDataProdução" e a Frequencia". Ou seja, Se for projetos mensais que ele entra na contagem todo mês, se for projetos trimestrais que ele entra a cada 03 meses. Então, se a "ÚltimaDataprodução" foi em (01.01.2024) ele precisa aparecer na minha contagem em (Abril/2024) e ser replicado até "DataVencimentoDividaPe". e se for projetos mensais aparece na minha contagem todos os meses e replicado até "DataVencimentoDividaPe" também.  Eu consigo fazer uma função DAX para trazer esse resultado? ou melhor fazer no Power Query replicando as linhas de cada projeto até a data de (encerramento) "DataVencimentoDividaPe"?

desde já agradeço!

teste.pbix TesteProdução.xlsx

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 1
  • Alunos
  • Solução

@Eliane Ferreira Cavalcanti

O código M completo:

let
    Fonte = Table.FromRows(
        Json.Document(
            Binary.Decompress(
                Binary.FromText(
                    "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",
                    BinaryEncoding.Base64
                ),
                Compression.Deflate
            )
        ),
        let
            _t = ((type nullable text) meta [Serialized.Text = true])
        in
            type table [
                Empreendimento = _t,
                DataInicioObraPe = _t,
                DataTerminoObraPe = _t,
                DataVencimentoDividaPe = _t,
                Status = _t,
                Frequencia = _t,
                Investidor = _t,
                UltimaDataProducao = _t,
                Ano = _t,
                Mês = _t
            ]
    ),
    TipoAlterado = Table.TransformColumnTypes(
        Fonte,
        {
            {"Empreendimento", type text},
            {"DataInicioObraPe", type date},
            {"DataTerminoObraPe", type date},
            {"DataVencimentoDividaPe", type date},
            {"Status", type text},
            {"Frequencia", type text},
            {"Investidor", type text},
            {"UltimaDataProducao", type date},
            {"Ano", Int64.Type},
            {"Mês", Int64.Type}
        }
    ),
    CriarDatasProjetos = Table.AddColumn(
        TipoAlterado,
        "TabelaDatas",
        each
            try
                let
                    DataInicio = [UltimaDataProducao],
                    DataFim = [DataVencimentoDividaPe],
                    Ocorrencia = if [Frequencia] = "Mensal" then 1 else 3,
                    Dias = Duration.Days(DataFim - DataInicio) + 1,
                    ListaDatas = List.Dates(DataInicio, Dias, #duration(1, 0, 0, 0)),
                    ListaMeses = #table(
                        type table [Data = date],
                        List.Distinct(List.Transform(ListaDatas, each {Date.StartOfMonth(_)}))
                    ),
                    AdicionarIndice = Table.AddIndexColumn(ListaMeses, "Index", 1, 1, Int64.Type),
                    MesesProjetos = Table.SelectRows(AdicionarIndice, each Number.Mod([Index], Ocorrencia) = 0)
                in
                    MesesProjetos[[Data]]
                otherwise #table({}, {{}}),
        type table [Data = date]
    ),
    TabelaDatasExpandido = Table.ExpandTableColumn(CriarDatasProjetos, "TabelaDatas", {"Data"}, {"Data"})
in
    TabelaDatasExpandido

Nesse caso a medida a quantidade de projetos seria:

Quantidade Projetos = 
CALCULATE(
    SUMX(
        KEEPFILTERS(VALUES(fProjetos_Meses[Empreendimento])),
        CALCULATE(COUNTROWS(fProjetos_Meses)) - 1
    ),
    KEEPFILTERS( fProjetos_Meses[Frequencia] = "Mensal" )
) +
CALCULATE(
    COUNTROWS(fProjetos_Meses),
    KEEPFILTERS( NOT fProjetos_Meses[Frequencia] = "Mensal" )
)

 

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

  • 2
  • Alunos

Boa tarde @Eliane Ferreira Cavalcanti

Use a medida abaixo:

Quantidade Projetos = 
SUMX (
    fProjetos,
    VAR _Recorrencia =
        SWITCH(
             fProjetos[Frequencia],
             "Mensal", 1,
             "Trimestral", 3
        )
    VAR _StartDate =
        MAX ( fProjetos[UltimaDataProducao] ) + 0
    VAR _EndDate =
        MAX ( fProjetos[DataVencimentoDividaPe] ) + 0
    VAR _Duracao =
        DATEDIFF ( _StartDate, _EndDate, MONTH )
    RETURN
        COUNTROWS ( GENERATESERIES ( 1, _Duracao, _Recorrencia ) )
)

 

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

  • 0
  • Alunos

Boa tarde @Erick Oliveira

Muitissimo obrigada, aparentemente parece que funcionou. Porém , eu precisava trazer no gráfico de tempo, mostrando quantos projetos eu vou ter durante o periodo por mês, considerando os mensais e trimestrais. Usando essa medida, ele esta somando o total que cada projetos tem. 

Ex:  O projeto "JK Alameda" tem 22 projetos até 2025, mas eu precisava diluir isso durante os meses, ou seja 01 para cada mês. 

Ex: O projeto "Domun" tem 08 projetos até 2025, mais eu precisava diluir isso a cada 03 meses, ou seja 01 a cada 03 meses.

Que ao filtrar "O ano" mostre apenas projetos daquele período.

Você consegue me ajudar a chegar nesses números?

 

Desde já agradeço!

Protótipo Projeção de Projetos 2 (4).pbix

Link para o comentário
Compartilhar em outros sites

  • 0
  • Alunos

@Eliane Ferreira Cavalcanti

Nesse caso acho mais fácil materializar as linhas correspondentes de cada projetos.
 

Criei uma etapa que aumenta as linhas da tabela de acordo com a quantidade de projetos:

= Table.AddColumn(
        TipoAlterado,
        "TabelaDatas",
        each
            try
                let
                    DataInicio = [UltimaDataProducao],
                    DataFim = [DataVencimentoDividaPe],
                    Ocorrencia = if [Frequencia] = "Mensal" then 1 else 3,
                    Dias = Duration.Days(DataFim - DataInicio) + 1,
                    ListaDatas = List.Dates(DataInicio, Dias, #duration(1, 0, 0, 0)),
                    ListaMeses = #table(
                        type table [Data = date],
                        List.Distinct(List.Transform(ListaDatas, each {Date.StartOfMonth(_)}))
                    ),
                    AdicionarIndice = Table.AddIndexColumn(ListaMeses, "Index", 1, 1, Int64.Type),
                    MesesProjetos = Table.SelectRows(AdicionarIndice, each Number.Mod([Index], Ocorrencia) = 0)
                in
                    MesesProjetos[[Data]]
                otherwise #table({}, {{}}),
        type table [Data = date]
    )

Protótipo Projeção de Projetos 2 (4).pbix

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

  • 0
  • Alunos

Bom dia @Erick Oliveira

 

Só uma dúvida, eu não consegui abrir o seu arquivo anexo. 

Essa linguagem M, você aplicou uma referencia da tabela fProjetos?  

Ao executar aqui, deu erro na consulta nome "TipoAlterado"  não foi reconhecido, confesso que não entendi o que esta dizendo essa linguagem.

 

Link para o comentário
Compartilhar em outros sites

Faça login para comentar

Você vai ser capaz de deixar um comentário após fazer o login



Entrar Agora
×
×
  • Criar Novo...