Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
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!