Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
See why IDC MarketScape names Qlik a 2025 Leader! Read more
cancel
Showing results for 
Search instead for 
Did you mean: 
e1smann
Contributor II
Contributor II

Cálculo com Array

Olá, pessoal!

 

Estou com dificuldades para realizar cálculos utilizando Arrays no Qlik. Já tentei realizar a transformação deles utilizando algumas funções mas não tive sucesso.

Os dados que quero calcular são estes:

 

Questões:

{221559,55438,221560,58373,221561,57240,221562,41605,221563,221564,57232,221565,221566,47925,221567,57225,221568,41613,221569,221570,221571,58962,221572,221573,221574,58964}

 

Gabarito:

{D,D,B,D,A,B,A,D,C,D,A,A,D,B,D,D,C,C,A,D,D,A,A,C,B,B}

 

Respostas do Aluno:

{D,D,D,D,D,D,D,D,D,D,D,D,D,B,B,B,C,B,D,C,B,A,D,A,B,B}

 

Como eu poderia calcular a quantidade de acertos por usuário?

Labels (7)
1 Solution

Accepted Solutions
Freitasbtw
Contributor
Contributor

Olá E1smann,

Você pode calcular os acertos assim no script do Qlik:

LET vGabarito = 'D,D,B,D,A,B,A,D,C,D,A,A,D,B,D,D,C,C,A,D,D,A,A,C,B,B';
LET vRespostas = 'D,D,D,D,D,D,D,D,D,D,D,D,D,B,B,B,C,B,D,C,B,A,D,A,B,B';

Gabarito:
LOAD RowNo() as Posicao,
     SubField('$(vGabarito)', ',', IterNo()) as Gabarito
AUTOGENERATE 1
WHILE IterNo() <= SubStringCount('$(vGabarito)', ',' ) + 1;

RespostasAluno:
LOAD RowNo() as Posicao,
     SubField('$(vRespostas)', ',', IterNo()) as Resposta
AUTOGENERATE 1
WHILE IterNo() <= SubStringCount('$(vRespostas)', ',' ) + 1;

Join (Gabarito)
LOAD Posicao,
     Resposta
Resident RespostasAluno;

Resultado:
LOAD *,
     If(Gabarito = Resposta, 1, 0) as Acertou
Resident Gabarito;

TotalAcertos:
LOAD 
    Sum(Acertou) as Total_Acertos
Resident Resultado;

DROP TABLE Resultado, Gabarito, RespostasAluno;

Com isso, Total_Acertos terá a quantidade de respostas corretas.

Perguntar ao ChatG

View solution in original post

2 Replies
Freitasbtw
Contributor
Contributor

Olá E1smann,

Você pode calcular os acertos assim no script do Qlik:

LET vGabarito = 'D,D,B,D,A,B,A,D,C,D,A,A,D,B,D,D,C,C,A,D,D,A,A,C,B,B';
LET vRespostas = 'D,D,D,D,D,D,D,D,D,D,D,D,D,B,B,B,C,B,D,C,B,A,D,A,B,B';

Gabarito:
LOAD RowNo() as Posicao,
     SubField('$(vGabarito)', ',', IterNo()) as Gabarito
AUTOGENERATE 1
WHILE IterNo() <= SubStringCount('$(vGabarito)', ',' ) + 1;

RespostasAluno:
LOAD RowNo() as Posicao,
     SubField('$(vRespostas)', ',', IterNo()) as Resposta
AUTOGENERATE 1
WHILE IterNo() <= SubStringCount('$(vRespostas)', ',' ) + 1;

Join (Gabarito)
LOAD Posicao,
     Resposta
Resident RespostasAluno;

Resultado:
LOAD *,
     If(Gabarito = Resposta, 1, 0) as Acertou
Resident Gabarito;

TotalAcertos:
LOAD 
    Sum(Acertou) as Total_Acertos
Resident Resultado;

DROP TABLE Resultado, Gabarito, RespostasAluno;

Com isso, Total_Acertos terá a quantidade de respostas corretas.

Perguntar ao ChatG
e1smann
Contributor II
Contributor II
Author

Muito obrigado!

Depois de muita pesquisa, cheguei a um resultado muito parecido usando essa mesma lógica de instruções, que atendeu perfeitamente à minha necessidade.