Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal, bom dia,
Usei o primeiro IF abaixo para identificar se um mês é ou não fechamento de trimestre e deu certo!
No entanto, ele estava me trazendo todos os meses de março, por exemplo, quando eu selecionava o 1º TRI. Preciso ter um campo que me dê essa opção por ano. Tentei a segunda fórmula para complementar e não deu certo. Apareceu que o campo "ClassificTri" não foi encontrado sendo que quando eu uso somente a primeira fórmula, funciona normalmente na visualização do painel. Poderiam me ajudar?
IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri,
IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (tempDate))) AS trimestreOficial
Atenciosamente.
Olá, você alterou o nome do campo no LOAD anterior.
TempDate AS DATA_ITR
Correto seria assim.
CALENDÁRIO: LOAD *, IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (DATA_ITR))) AS trimestreOficial; LOAD IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri, TempDate AS DATA_ITR, week(TempDate) As Semana_ITR, Year(TempDate) As Ano_ITR, Month(TempDate) As Mês_ITR, Num(Month(TempDate)) as Mês.num_ITR, Day(TempDate) As Dia_ITR, YeartoDate(TempDate)*-1 as CurYTDFlag, YeartoDate(TempDate,-1)*-1 as LastYTDFlag, date(monthstart(TempDate), 'MMM-YYYY') as MesAno_ITR, ApplyMap('QuartersMap', month(TempDate), Null()) as Trimestre_ITR, Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as SemanaAno_ITR, WeekDay(TempDate) as DiaSemana_ITR Resident TempCalendar Order By TempDate ASC;
Don't worry, be Qlik.
Tonial
Olá,
Você deve fazer um load sobre o load para utilizar o novo campo
Dados: LOAD IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (tempDate))) AS trimestreOficial; LOAD IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri From Tabela;
Don't worry, be Qlik.
Tonial
Acredito que pode usar o Preceding LOAD (link)
Nome_Tabela: LOAD *, IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (tempDate))) AS trimestreOficial; LOAD IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri, . . . From Fonte_Dados;
Seguem anexas evidências de como eu estou montando o script e vou colar como está até agora:
Está certo usar a tabela CALENDÁRIO como referência pra fazer os loads do campos?
Trimestre_Ano:
LOAD
IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (tempDate))) AS trimestreOficial;
LOAD
IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri
From CALENDÁRIO;
Atenciosamente.
Olá Ricardo,
A forma com que você está pensando em fazer teria apenas um campo na tabela e sem associação com as demais tabelas do modelo de dados.
Nesse seu caso é mais prudente você colocar na própria tabela de calendário.
Algo assim:
Calendario: LOAD *, IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (tempDate))) AS trimestreOficial; LOAD IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri, Demais campos da tabela calendário Resident TempCalendar Order By TempDate;
Novamente, sempre bom colocar o seu script no post e não como imagem, assim todos da comunidade pode ajudar melhor.
o campo ClassificTri pode ser eliminado apos o comando anterior
Drop Fiels ClassificTri;
Don't worry, be Qlik.
Tonial.
Deu um erro diferente: "O campo TempDate" não foi encontrado.
Achei estranho, pois não fizemos alteração nenhuma neste campo.
SCRIPT :
QuartersMap:
MAPPING LOAD
rowno() as Month,
Ceil (rowno()/3) & 'º Trimestre' as Quarter
AUTOGENERATE (12);
Temp:
Load
min(DATA_ITR) as minDate,
max(DATA_ITR) as maxDate
Resident BASE_VALORES;
Let varMinDate = Num(Peek('minDate', 0, 'Temp'));
Let varMaxDate = Num(Peek('maxDate', 0, 'Temp'));
DROP Table Temp;
TempCalendar:
LOAD
$(varMinDate) + Iterno()-1 As Num,
Date($(varMinDate) + IterNo() - 1) as TempDate
AutoGenerate 1 While $(varMinDate) + IterNo() -1 <= $(varMaxDate);
CALENDÁRIO:
LOAD *,
IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (tempDate))) AS trimestreOficial;
LOAD
IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri,
TempDate AS DATA_ITR,
week(TempDate) As Semana_ITR,
Year(TempDate) As Ano_ITR,
Month(TempDate) As Mês_ITR,
Num(Month(TempDate)) as Mês.num_ITR,
Day(TempDate) As Dia_ITR,
YeartoDate(TempDate)*-1 as CurYTDFlag,
YeartoDate(TempDate,-1)*-1 as LastYTDFlag,
date(monthstart(TempDate), 'MMM-YYYY') as MesAno_ITR,
ApplyMap('QuartersMap', month(TempDate), Null()) as Trimestre_ITR,
Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as SemanaAno_ITR,
WeekDay(TempDate) as DiaSemana_ITR
Resident TempCalendar
Order By TempDate ASC;
Drop Table TempCalendar;
Olá, você alterou o nome do campo no LOAD anterior.
TempDate AS DATA_ITR
Correto seria assim.
CALENDÁRIO: LOAD *, IF (ClassificTri = 'NÃO É TRI' , '' , CONCAT (ClassificTri , ' - ' , year (DATA_ITR))) AS trimestreOficial; LOAD IF(Num(Month(TempDate))/12 = 1/4 , '1º TRI' , IF(Num(Month(TempDate))/12 = 1/2 ,'2 ºTRI' , IF(Num(Month(TempDate))/12 = 3/4 , '3º TRI' , IF(Num(Month(TempDate))/12 = 1 , '4º TRI' , 'NÃO É TRI')))) AS ClassificTri, TempDate AS DATA_ITR, week(TempDate) As Semana_ITR, Year(TempDate) As Ano_ITR, Month(TempDate) As Mês_ITR, Num(Month(TempDate)) as Mês.num_ITR, Day(TempDate) As Dia_ITR, YeartoDate(TempDate)*-1 as CurYTDFlag, YeartoDate(TempDate,-1)*-1 as LastYTDFlag, date(monthstart(TempDate), 'MMM-YYYY') as MesAno_ITR, ApplyMap('QuartersMap', month(TempDate), Null()) as Trimestre_ITR, Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as SemanaAno_ITR, WeekDay(TempDate) as DiaSemana_ITR Resident TempCalendar Order By TempDate ASC;
Don't worry, be Qlik.
Tonial