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

Announcements
Qlik Open Lakehouse is Now Generally Available! Discover the key highlights and partner resources here.
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.