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

séparer String en une même dimension

Hello la Q-Community,

Je suis en train de bloquer sur un petit souci de script. Je pense que c'est faisable... 😕 ca me semble compliqué alors que c'est doit etre tout con, mais bon, quand on bloque, on bloque

j'ai un doc excel que j’intègre sur du Qlik (car j'ai ce même fichier tous les jours, donc c'est pour avoir une visu agrégée).

en gros  ce fichier ressemble à ca :

référenceprobleme
123probleme A, probleme B, probleme C
234probleme A
345probleme A, probleme B

Je veux juste avoir le nombre de références par probleme : Count(référence), mais je bugge sur la séparation des problemes la ou il y a des virgules (ref 123 et 345 sur mon exemple). j'ai essayé subfield(probleme,',') , mais ca me prend que le premier probleme et pas les suivants.

en gros j'aimerai avoir ca :

Probleme Aprobleme Bprobleme C
321

si quelqu'un peut me sortir l'épine du pied, ca serait chouette !

merci beaucoup

Louis

1 Solution

Accepted Solutions
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

Tu peux ajouter ça à ton script de chargement (en utilisant le nom de ta table)

LOAD
référence,
Trim(SubField(probleme,',')) as probleme2
Resident TaTable;

 
DROP Field probleme;
RENAME Field probleme2 to probleme;

Et à la place d'avoir :

référenceprobleme
123probleme A, probleme B, probleme C
234probleme A
345probleme A, probleme B

tu auras :

référenceprobleme
123

probleme A

123probleme B
123probleme C
234probleme A
345probleme A
345probleme B

Tu pourras alors très facilement créer un tableau dynamique avec la dimension probleme que tu mettras en colonne et l'expression Count(probleme)

C'est le plus simple.

Sinon tu peux utiliser directement les expressions:

  • count(if(WildMatch(probleme, '*problem A*'), 1, 0)) pour compter les problème A
  • count(if(WildMatch(probleme, '*problem B*'), 1, 0)) pour compter les problème B
  • count(if(WildMatch(probleme, '*problem C*'), 1, 0)) pour compter les problème C

View solution in original post

2 Replies
sfatoux72
Partner - Specialist
Partner - Specialist

Bonjour,

Tu peux ajouter ça à ton script de chargement (en utilisant le nom de ta table)

LOAD
référence,
Trim(SubField(probleme,',')) as probleme2
Resident TaTable;

 
DROP Field probleme;
RENAME Field probleme2 to probleme;

Et à la place d'avoir :

référenceprobleme
123probleme A, probleme B, probleme C
234probleme A
345probleme A, probleme B

tu auras :

référenceprobleme
123

probleme A

123probleme B
123probleme C
234probleme A
345probleme A
345probleme B

Tu pourras alors très facilement créer un tableau dynamique avec la dimension probleme que tu mettras en colonne et l'expression Count(probleme)

C'est le plus simple.

Sinon tu peux utiliser directement les expressions:

  • count(if(WildMatch(probleme, '*problem A*'), 1, 0)) pour compter les problème A
  • count(if(WildMatch(probleme, '*problem B*'), 1, 0)) pour compter les problème B
  • count(if(WildMatch(probleme, '*problem C*'), 1, 0)) pour compter les problème C
louisernould
Contributor III
Contributor III
Author

Parfait ce 'Trim' ! je retiens

un grand merci pour la réactivité et en plus ca fonctionne ! c'est top !