Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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)
-Tabela (Coluna Dias Feriado) - Mês selecionado:
Tabela sem nenhum mês selecionado:
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.
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.
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);
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.
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);
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.
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)
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);