Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Posting on Qlik Community is temporarily paused for some users. Thank you for patience and we'll update you soon!
cancel
Showing results for 
Search instead for 
Did you mean: 
jordansoares
Contributor III
Contributor III

DIA DA SEMANA NO MÊS

Bom dia!

Estou montando uma Dashboard de Previsão de Fluxo de Caixa e estou precisando trazer em uma tabela o valor previsto com base no movimento do mês anterior, mas para isso, eu tenho que trazer o fluxo da 1ª Segunda do mês atual com a 1ª Segunda do mês anterior, a 2ª Segunda do mês atual com a 2ª Segunda do mês anterior e assim por diante.

Alguém poderia me dar uma ideia de como eu posso fazer essa comparação?

Desde de já, agradeço!

1 Solution

Accepted Solutions
CezarioAbrantes
Contributor III
Contributor III

Jordan, boa tarde!

O script abaixo deve resolver seu problema. Você pode rodar esse script em um app em branco do Qlik Sense para entender a dinâmica. Depois, só precisa adaptá-lo à sua realidade e usar os flags no layout. Por exemplo, Sum({<FlagMes0={1},OrdemMensalSegundaFeira={1}>}Valor) para a 1ª segunda do mês atual e Sum({<FlagMes1={1},OrdemMensalSegundaFeira={3}>}Valor) para a 3ª segunda do mês anterior.

Let vDataInicial = Floor(YearStart(Today(),0));
Let vDataFinal = Floor(Today());
 
Datas_Temp:
Load distinct
    Date($(vDataInicial) + RowNo() - 1) as Data,
    MonthStart($(vDataInicial) + RowNo() - 1) as MesInicio
AutoGenerate $(vDataFinal) - $(vDataInicial) + 1;
 
Datas:
Load
*,
If(Weekday(Data) = 0, 1, 0) as FlagSegundaFeira,
InMonth(Data, Today(), 0) as FlagMes0,
InMonth(Data, Today(), -1) as FlagMes1
Resident Datas_Temp;
 
Left Join(Datas)
Load
Data,
    MesInicio,
If(MesInicio = Peek(MesInicio), Peek(OrdemMensalSegundaFeira) + 1, 1) as OrdemMensalSegundaFeira
Resident Datas
Where FlagSegundaFeira = 1;
 
Drop Table Datas_Temp;

View solution in original post

2 Replies
CezarioAbrantes
Contributor III
Contributor III

Jordan, boa tarde!

O script abaixo deve resolver seu problema. Você pode rodar esse script em um app em branco do Qlik Sense para entender a dinâmica. Depois, só precisa adaptá-lo à sua realidade e usar os flags no layout. Por exemplo, Sum({<FlagMes0={1},OrdemMensalSegundaFeira={1}>}Valor) para a 1ª segunda do mês atual e Sum({<FlagMes1={1},OrdemMensalSegundaFeira={3}>}Valor) para a 3ª segunda do mês anterior.

Let vDataInicial = Floor(YearStart(Today(),0));
Let vDataFinal = Floor(Today());
 
Datas_Temp:
Load distinct
    Date($(vDataInicial) + RowNo() - 1) as Data,
    MonthStart($(vDataInicial) + RowNo() - 1) as MesInicio
AutoGenerate $(vDataFinal) - $(vDataInicial) + 1;
 
Datas:
Load
*,
If(Weekday(Data) = 0, 1, 0) as FlagSegundaFeira,
InMonth(Data, Today(), 0) as FlagMes0,
InMonth(Data, Today(), -1) as FlagMes1
Resident Datas_Temp;
 
Left Join(Datas)
Load
Data,
    MesInicio,
If(MesInicio = Peek(MesInicio), Peek(OrdemMensalSegundaFeira) + 1, 1) as OrdemMensalSegundaFeira
Resident Datas
Where FlagSegundaFeira = 1;
 
Drop Table Datas_Temp;
jordansoares
Contributor III
Contributor III
Author

Obrigado meu amigo! Essa sua dica me deu um norte.

Tive que incrementar mais algumas coisas no código, mas essa foi a base.

Agradeço a atenção!