Com isso, Total_Acertos
terá a quantidade de respostas corretas.
Perguntar ao ChatG
Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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?
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.
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.
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.