Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 
thiago_alessand
Contributor III
Contributor III

Dúvida com expressão em cálculo KPI x Tabela

Boa tarde,

 

No Qlik Sense, tenho uma carga via qvd e outra carga inline, onde coloco datas de feriados.

 

A ideia seria pegar os dias úteis e diminuir dos feriados (quando estes cairiam em dias de semana). O que acontece é o seguinte:

Quando coloco um KPI para somar a quantidade de feriados, ele calcula corretamente quando seleciono um mês no filtro. Quando coloco em uma tabela, esse mesmo cálculo do KPI sempre fica zerado, tanto com filtro do mês selecionado quanto não selecionado. Alguém poderia dar uma luz?

Seguem prints para melhor explicar:

- KPI

Expressão: 

 

Count({<Feriado-={""}, DiaSemana-={"Dom","Sáb"}>}Feriado)

 

kpi.PNG

 

-Tabela (Coluna Dias Feriado) - Mês selecionado:

tab.PNG

Tabela sem nenhum mês selecionado:

tab2.PNG

 

Expressão para a coluna Dias Feriado é a mesma:

 

Count({<Feriado-={""}, DiaSemana-={"Dom","Sáb"}>}Feriado)

 

 

A carga de feriados está assim:

 

//Criar Calendário:
LET vDataMin = Num(MakeDate(Year(Today(1)),1,1));
Let vDataMax = Num(MakeDate(Year(Today(1)),12,31));



//Colocar abaixo os dias em que for considerado feriado 
//ou dia em que houver folga da fábrica, em casos de remanejamento do feriado
Feriados:
LOAD 
DATE(DATE#([OrdemDataDiaMes], 'DD/MM/YYYY'),'DD/MM') AS OrdemDataDiaMes, Feriado, WeekDay(OrdemDataDiaMes) As DiaSemana INLINE [
OrdemDataDiaMes, Feriado
01/01/2020, Ano Novo
10/04/2020, Sexta-Feira Santa
21/04/2020, Tiradentes
01/05/2020, Dia do Trabalho
07/09/2020, Independência do Brasil
12/10/2020, Nossa Sra Aparecida - Padroeira Brasil
02/11/2020, Finados
15/11/2020, Proclamação da República
25/12/2020, Natal
17/03/2020, teste
30/03/2020, tes
03/01/2020, tessadsada

];




LINK:
LOAD
	null()											AS Chave,
    YEAR($(vDataMin) + RowNo() - 1)					As Ano,
    MONTH($(vDataMin) + RowNo() - 1)				As Mes,
	DATE($(vDataMin) + RowNo() - 1, 'DD/MM' )		AS OrdemDataDiaMes,
    null()											AS DescProduto
    AutoGenerate 1
WHILE $(vDataMin) + IterNo() - 1 <= $(vDataMax);

 

 

Até então, a carga está ok, tanto que o KPI está calculando...o problema está quando jogado para a tabela, onde deveria calcular quando não tiver nenhum mês selecionado (teria de trazer a mesma quantidade de feriados para cada item no mês).

Pela carga realizada, era pra trazer da seguinte forma:

janeiro = 2 feriados

fevereiro = 0 feriados

Março = 2 feriados

......

Se alguem tiver uma luz, agradeço. 

5 Replies
RafaMartins
Creator II
Creator II

Acredito que seu problema esteja na sua associação de dados, poderia mostrar como está seu modelo associativo?

Já adiantando um possível teste que pode fazer é testar essas medidas em uma tabela com as dimensões ano e mês e ver se nesse modelo de tabela continua apresentando o mesmo problema.

thiago_alessand
Contributor III
Contributor III
Author

Boa tarde,

Criei uma nova tabela somente com mês e ano e permaneceu o problema.

Segue a outra parte da carga onde ocorre a associação com o campo OrdemDataDiaMes:

SaldosFisicosSB9:
Load
	ProdAcabado&'|'&DATE(DataSaldoAtual, 'YYYYMM')		AS Chave,
	B2_FILIAL											AS FilialSB2, 
	B2_COD												AS CodProdutoSB2, 
    DescProdutoSB2,
    B2_LOCAL											AS ArmazemSB2, 
    B2_QATU												AS SaldoSB2,
	ProdAcabado											AS ProdAcabadoSB2,
	DataSaldoAtual										AS DataSaldoAtualSB2,
    DataInicioSB2,
    DataFimSB2
FROM [lib://......\SaldoSB2.qvd] (qvd);



LINK:
Load
	ProdAcabado&'|'&DATE(DataSaldoAtual, 'YYYYMM')		AS Chave,
    YEAR(DataSaldoAtual)								AS Ano,
    MONTH(DataSaldoAtual)								As Mes,
    DATE(DataSaldoAtual, 'DD/MM')						AS OrdemDataDiaMes,
    DescProdutoSB2										AS DescProduto
FROM [lib://......\SaldoSB2.qvd] (qvd);    

 

RafaMartins
Creator II
Creator II

Verifique o formato do campo Data do seu calendário, pode ser que não esteja gerando um campo de ordemMêsDia com mesmo formato que a tabela feriados.

 1.PNG

Fiz um teste usando um calendário que tenho aqui e funcionou normalmente .

LOAD
DATE(DATE#([OrdemDataDiaMes], 'DD/MM/YYYY'),'DD/MM') AS OrdemDataDiaMes,Feriado, WeekDay(OrdemDataDiaMes) As DiaSemana INLINE [
OrdemDataDiaMes, Feriado
01/01/2020, Ano Novo
10/04/2020, Sexta-Feira Santa
21/04/2020, Tiradentes
01/05/2020, Dia do Trabalho
07/09/2020, Independência do Brasil
12/10/2020, Nossa Sra Aparecida - Padroeira Brasil
02/11/2020, Finados
15/11/2020, Proclamação da República
25/12/2020, Natal
17/03/2020, teste
30/03/2020, tes
03/01/2020, tessadsada

];

LOAD
"Calendario - Data",
Date("Calendario - Data",'DD/MM') as [OrdemDataDiaMes],
"Calendario - Semana",
"Calendario - Ano",
"Calendario - Mes"
FROM [lib://Transformados/Calendario.qvd]
(qvd);

 

 

afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

queres ter a quantidade de dias uteis sem sábado e domingo e sem feriado?

 

networkdays(Data_Inicio , Data_Fim , vFeriados)

vai retornar os dias uteis do mes.  O networkdays sem a variavel feriado voltaria com 23 dias.

2020-03-31 21_07_33-Qlik Sense Desktop.png

furtado@farolbi.com.br
thiago_alessand
Contributor III
Contributor III
Author

Boa tarde,

realizando alguns testes, percebi que o problema pode estar na carga de uma planilha que possui colunas de ano e mês (Coluna Ano = 2020, Coluna Mês = 03, por exemplo) que também faz parte do vínculo de datas, e que ao removê-las da tabela, apareceu corretamente os valores citados no início. Porém, analisando, não encontrei nada diferente no script de carga para o qvd que possa estar impactando.

No load do qvd dos dados da tabela CapacidadeEstoque, acrescentei os mesmo campos de data (Year, Month e Date) que estão no Load do LINK para verificar, e então criei uma tabela com estes dados, concatenando ano e mês apenas para visualização (Campos que estão com fim "cap" são os que coloquei apenas para teste, que foi onde encontrei o problema, conforme abaixo)

3.PNG

QVD:

 

CapacidadeEstoque:

LOAD
	MonthsEnd(1,MAKEDATE(Ano,Mês,1)) AS DataCapacidadeEstoque,
    Ccusto															  AS ProdAcabado,
    Capacidade														  AS CapacidadeEstoque	
FROM [lib://......\Capacidade_Estoque_$(vrAno).xlsx]
(ooxml, embedded labels, table is Planilha1);


STORE CapacidadeEstoque INTO [lib://......\Capacidade_Estoque_$(vrAno).qvd] (qvd);

 

 

Load QVD:

 

CapacidadeEstoque:

LOAD
	ProdAcabado&'|'&DATE(DataCapacidadeEstoque, 'YYYYMM')	AS Chave,
	DataCapacidadeEstoque,
    ProdAcabado												AS ProdutoAcabadoEstoque,
    CapacidadeEstoque	
        
FROM [lib://......\Capacidade_Estoque_20??.qvd] (qvd);


LINK:
Load
	ProdAcabado&'|'&DATE(DataCapacidadeEstoque, 'YYYYMM')	AS Chave,
    YEAR(DataCapacidadeEstoque)								AS Ano,
    MONTH(DataCapacidadeEstoque)							AS Mes,
    DATE(DataCapacidadeEstoque, 'DD/MM')					AS OrdemDataDiaMes,
	null()													AS DescProduto
FROM [lib://......\Capacidade_Estoque_20??.qvd] (qvd);