Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Data fechamento

Boa tarde, hoje para o DRE temos a data de Emissão(Competência) e data de Lançamento(quando é lançado). O que eu preciso, suponhamos que a data de corte é dia 06/12, vou verificar tudo que foi lançado com a emissão em novembro. Mas por exemplo agora vou fazer o fechamento 06/01, vou considerar tudo que foi lançado em Dezembro, mas se um usuário lançar alguém documento após a data de corte referente a novembro, que fechei dia 06/12, vou precisar considerar para o fechamento dia 06/01.

Imagem BD.PNG

Como eu poderia proceder para criar essa expressão, para o relatório analítico? Para o filtro data eu utilizo da data de emissão.

Labels (3)
1 Solution

Accepted Solutions
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo;

Fiz uma tabela de teste que atenda seus requisitos:

Segue lógica para apresentar o mês de corte:

Só copiar a parte do IF e aplicar no seu script;

Set vMesCorte = '06';

TABELA_TESTE:

LOAD

    data_lancamento,

    data_emissao,

    if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) > $(vMesCorte), text(date(data_lancamento,'MM/YYYY')),

      if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_lancamento,-1),'MM/YYYY')),

        if( MonthName(data_lancamento) = MonthName(data_emissao) and day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_emissao,-1),'MM/YYYY')),

            text(date(data_emissao,'MM/YYYY'))

        )

      )

    ) as mes_corte,

    mes_corte_esperado;

Load * Inline

[data_lancamento, data_emissao, mes_corte_esperado

2016-12-26, 2016-12-26, 12/16

2016-12-06, 2016-12-05, 11/16 

2016-12-07, 2016-12-05, 12/16 

2016-12-29, 2016-12-29, 12/16

2017-02-07, 2017-01-07, 02/17

2017-02-07, 2017-01-06, 02/17

2017-02-07, 2017-01-05, 02/17

2017-02-06, 2017-01-07, 01/17

2017-02-06, 2017-01-06, 01/17

2017-02-06, 2017-01-05, 01/17

2017-02-06, 2017-01-30, 01/17

2017-02-06, 2017-01-06, 01/17

2017-02-07, 2017-01-30, 02/17

2017-02-05, 2017-01-06, 01/17

2017-02-05, 2017-01-07, 01/17

2017-01-06, 2017-01-05, 12/16

];

Agora terá um campo mes_corte para utilizar como filtro.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti

View solution in original post

9 Replies
JacksonAlfonso
Creator
Creator

Não seria melhor você criar uma flag no script de carga validando as datas e "flegando" o registro como processaFechamento = 1 ou 0, ou algo no sentido ?  Pensando em facilidade, desse modo seu setanalisis seria por data de corte e a flag criada.

Not applicable
Author

Boa tarde Jackson, você teria algum modelo que eu pudesse utilizar como base? Como seria criar essa flag, fazendo essas comparações? Obrigado por enquanto.

Not applicable
Author

Não tenho conhecimento de como trabalhar com Flag no script e depois colocar para o Set Analisys.

JacksonAlfonso
Creator
Creator

Quando falo "Flag", é assim, vc tem as duas datas na sua tabela, na hora do seu load, você faz um IF e cria um campo de acordo com o resultado avaliado, e depois no setanalysis, você faz um filtro usando esse novo campo.

Por exemplo:

Sum({<processaFechamento={1}>} Valor)

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo;

Pode me passar os dados em XLS, CSV ou QVD para testar?

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo;

Fiz uma tabela de teste que atenda seus requisitos:

Segue lógica para apresentar o mês de corte:

Só copiar a parte do IF e aplicar no seu script;

Set vMesCorte = '06';

TABELA_TESTE:

LOAD

    data_lancamento,

    data_emissao,

    if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) > $(vMesCorte), text(date(data_lancamento,'MM/YYYY')),

      if( MonthName(data_lancamento) > MonthName(data_emissao) and Day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_lancamento,-1),'MM/YYYY')),

        if( MonthName(data_lancamento) = MonthName(data_emissao) and day(data_lancamento) <= $(vMesCorte), text(date(AddMonths(data_emissao,-1),'MM/YYYY')),

            text(date(data_emissao,'MM/YYYY'))

        )

      )

    ) as mes_corte,

    mes_corte_esperado;

Load * Inline

[data_lancamento, data_emissao, mes_corte_esperado

2016-12-26, 2016-12-26, 12/16

2016-12-06, 2016-12-05, 11/16 

2016-12-07, 2016-12-05, 12/16 

2016-12-29, 2016-12-29, 12/16

2017-02-07, 2017-01-07, 02/17

2017-02-07, 2017-01-06, 02/17

2017-02-07, 2017-01-05, 02/17

2017-02-06, 2017-01-07, 01/17

2017-02-06, 2017-01-06, 01/17

2017-02-06, 2017-01-05, 01/17

2017-02-06, 2017-01-30, 01/17

2017-02-06, 2017-01-06, 01/17

2017-02-07, 2017-01-30, 02/17

2017-02-05, 2017-01-06, 01/17

2017-02-05, 2017-01-07, 01/17

2017-01-06, 2017-01-05, 12/16

];

Agora terá um campo mes_corte para utilizar como filtro.

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Conseguiu entender amigo?

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
Not applicable
Author

Muito obrigado Mario, vou implantar aqui mas acredito que vai dar certo.

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Grande abraço

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti