Skip to main content
Announcements
NEW: Seamless Public Data Sharing with Qlik's New Anonymous Access Capability: TELL ME MORE!
cancel
Showing results for 
Search instead for 
Did you mean: 
cauecandeloro
Contributor III
Contributor III

Exibição por Semana

Pessoal, boa tarde.

Preciso mostrar em uma tabela dinâmica as informações de acordo com a data selecionada pelo usuário no filtro de datas, porém além das informações do dia escolhido, também preciso mostrar as informações referentes a 4 semanas anteriores. Por exemplo :

- Selecionei no filtro o dia 26/04/2015
- Na tabela, preciso mostrar os resultados de 26/04/2015, 19/04/2015, 12/04/2015, 05/04/2015 e 29/03/2015.

Fiz alguns testes utilizando o autogenerate, mas ainda não consegui chegar no resultado correto.

Alguém já passou por um problema semelhante ?


Obrigado !

1 Solution

Accepted Solutions
nicolett_yuri

Dessa forma o intervalo não vai funcionar mesmo, tente assim:

SET vDataSelecionada = =DATA;

SET vData1 = =Date(ONLY(DATA)-2, 'DD/MM/YYYY');

SET vData2 = =Date(ONLY(DATA)-4, 'DD/MM/YYYY');

SET vData3 = =Date(ONLY(DATA)-6, 'DD/MM/YYYY');

SUM( {<DATA = {'$(vDataSelecionada)','$(vData1)','$(vData2)','$(vData3)'} >} VALOR)

View solution in original post

8 Replies
nicolett_yuri

Caue, acredito que você consegue resolver isso com um simples set analysis,

segue um exemplo:

SUM( {<CAMPO_DATA = {">$(vFirstPeriod) <$(=vLastPeriod)"} >} CAMPO)

As variáveis vão receber o intervalo que necessita.

SET vLastPeriod = =CAMPO_DATA

SET vFirstPeriod = Date(WeekStart('$(vLastPeriod)'-28), 'DD/MM/YYYY');

cauecandeloro
Contributor III
Contributor III
Author

Yuri,
Primeiramente obrigado pela ajuda !

Eu tentei fazer da seguinte forma :

- No meu load, criei o campo das datas utilizando a expressão que você me passou

LOAD

     filial,

     ordemserv,

     dt_abertura,

     year(dt_abertura) as ano_abertura_os,

     month(dt_abertura) as mes_abertura_os,

     day(dt_abertura) as dia_abertura_os,

     Date(WeekStart(dt_abertura-28), 'DD/MM/YYYY') as evolucao_os,

     faixa_os,

     consultor,

     cliente_os,

     tipo_os,

     valor_os

FROM (qvd);

- Depois inclui o campo evolucao_os como dimensão no meu gráfico.

Quando seleciono somente ano e mês no filtro de datas está funcionando corretamente, porém se seleciono ano mês e dia, não traz as semanas anteriores. Lembrando que eu precisaria trazer a data selecionada no gráfico também, e não só as semanas anteriores.
Sabe me dizer onde eu devo estar errando ?

Abs
Caue

nicolett_yuri

Caue, você precisa criar a variável e não o campo

SET vLastPeriod = =CAMPO_DATA

SET vFirstPeriod = Date(WeekStart('$(vLastPeriod)'-28), 'DD/MM/YYYY');


Depois você cria um gráfico colocando na dimensão o seu campo de data (DD/MM/YYYY) e coloca o modelo da expressão que te passei SUM( {<CAMPO_DATA = {">$(vFirstPeriod) <$(=vLastPeriod)"} >} CAMPO).


Caso tenha mais dificuldades me informe que posso te enviar um modelo de como se fazer

cauecandeloro
Contributor III
Contributor III
Author

Yuri,

Se você puder me enviar um modelo eu lhe agradeço, assim posso entender melhor o funcionamento.

Muito Obrigado!
Caue.

nicolett_yuri

No meu exemplo eu coloquei para pegar somente 2 dias para trás, ok?

É mais para você entender como se deve fazer

cauecandeloro
Contributor III
Contributor III
Author

Yuri,

Observei duas coisas:

- Utilizando o weekstart na variável  vFirstPeriod, as datas ficam diferentes pois dependendo o dia que eu seleciono preciso saber a posição 7 dias atrás mesmo que não for começo de semana.

- A expressão retorna todos os resultados quando a data estiver entre vFirstPeriod e vLastPeriod , sendo que eu só preciso mostrar 5 resultados (data selecionada, data selecionada - 7, data selecionada -14, data selecionada -21, data selecionada -28).

O ideal seria criar 5 variáveis (uma para cada data citada) ? Como ficaria a expressão para retornar a soma somente para essas datas ?


Muito Obrigado !
Caue.

nicolett_yuri

Dessa forma o intervalo não vai funcionar mesmo, tente assim:

SET vDataSelecionada = =DATA;

SET vData1 = =Date(ONLY(DATA)-2, 'DD/MM/YYYY');

SET vData2 = =Date(ONLY(DATA)-4, 'DD/MM/YYYY');

SET vData3 = =Date(ONLY(DATA)-6, 'DD/MM/YYYY');

SUM( {<DATA = {'$(vDataSelecionada)','$(vData1)','$(vData2)','$(vData3)'} >} VALOR)

cauecandeloro
Contributor III
Contributor III
Author

Yuri,

Era isso mesmo. Agora aparecem somente as datas que eu preciso.

Agradeço novamente pela ajuda !

Caue.