Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
Not applicable

Section Access

Boa tarde Pessoal,

Estou com um problema que não consigo identificar:

Tenho um cenário onde faço a contagem dos dias úteis do mês atual: (no caso desse mês coloquei todos como úteis)

A Fórmula é:

=COUNT(TOTAL{1<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} DIA_UTIL)

O problema é o seguinte:

Como uso section access no cenário, quando aceso com ADMIN a contagem retorna 31 que está correto

Quando acesso com CLIENTE8 ou CLIENTE9 a contagem resulta em 20.

Alguém poderia me explicar onde estou errando?

Abaixo é a minha tabela de section Access:

    

ACCESSUSERIDPASSWORDCD_CLIENTE_DE_BI
ADMINADMIN123456789
USERCLIENTE81231238
USERCLIENTE91231239
Labels (1)
1 Solution

Accepted Solutions
nicolett_yuri

A segunda tabela nem precisa, mas de qualquer forma da certo também

View solution in original post

10 Replies
Clever_Anjos
Employee
Employee

Provavelmente você não esteja errrando

A exclusão por apenas o campo CD_CLIENTE_DE_BI deve estar restringindo apenas  20.

Teste simples, faça login como Admin, e faça uma seleção no campo CD_CLIENTE_DE_BI para 8 ou 9 e veja o resultado em um textbox por exemplo

Not applicable
Author

Eu já fiz esses testes, inclusive comentei a parte de carrega os dados do cliente 8 e fiz uma recarga só do cliente 9.

Além disso, criei uma chave para que cada cliente tenha seu calendário.

nicolett_yuri

Rodrigo, a sua restrição deve estar removendo os valores desses dias.

Por favor, tire um print da estrutura das suas tabelas.

Not applicable
Author

Segue em anexo a estrutura.

o campo de restrição é o que está marcado em vermelho.

Na abertura do post eu coloque CD_CLIENTE_DE_BI, mas é aquele o nome certo.

nicolett_yuri

Provavelmente o que ocorre é que esses clientes não possuem movimentação para todas as datas do mês, desta forma essa restrição afeta a quantidade de registros da sua tabela CALENDARIO.

Para contornar, você pode calcular a quantidade de dias úteis no script, colocar essa informação dentro de uma coluna nesta tabela (mesmo que essa informação se repita para cada dia do mês) .

Not applicable
Author

Mas se não possuem movimentação, porque se eu logar com o usuário admin não tem esse problema?

Sendo que minha formula tem aquele "1" que ignora seleções e o campo ANO e MES e DIA_UTIL estão no calendário que gera dados até o final do mês para todos os dias e as variáveis eu defini  assim:

LET MesAtual=NUM(MONTH(TODAY()));

LET AnoAtual=YEAR(TODAY());

=COUNT(TOTAL{1<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} DIA_UTIL)

Clever_Anjos
Employee
Employee

Porque um Section Access equivale à uma seleção 'forçada' para os código 8 e 9.

Para aquele usuário, todos os registros que não hajam correspondência, não são considerados, não adianta usar o

COUNT(TOTAL{1

nicolett_yuri

O seu usuário ADMIN não esta sofrendo nenhum redução de dados, logo a tabela CALENDARIO estará completa e o seu COUNT vai funcionar.

Faça como te falei, calculei essa quantidade no script, mais ou menos dessa forma:

LEFT JOIN (CALENDARIO)

LOAD

ANOMES,

COUNT( if( DIA_UTIL = 'S', DATA)) as QTD_DIA_UTIL

RESIDENT CALENDARIO

GROUP BY ANOMES;

No gráfico basta fazer um SUM(QTD_DIA_UTIL)

Not applicable
Author

Eu não seu se é a maneira mas correta, mas fiz da seguinte forma:

Liguei ao calendário os dias úteis do mês e os dias úteis até a data corrente do mês.

No script ficou assim:

DIAS_UTEIS:

LOAD MES_ANO,

     COUNT( if( DIA_UTIL = 1, DATA)) as QTD_DIA_UTIL

Resident CALENDARIO

GROUP BY MES_ANO;

DIAS_UTEIS_ATUAL:

LOAD MES_ANO,

  COUNT( if( DIA_UTIL = 1, DATA)) as QTD_DIA_UTIL_ATUAL

Resident CALENDARIO

WHERE ANO = YEAR(Today())

AND MES = MONTH(Today())

AND DIA <= DAY(Today())

GROUP BY MES_ANO;

As formulas ficaram assim:

SUM({<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} QTD_DIA_UTIL)

SUM({<ANO={$(#AnoAtual)}, MES={$(#MesAtual)}>} QTD_DIA_UTIL_ATUAL)

O resultado final deu certo.