Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bonjour à tous,
Je souhaiterai utiliser un fichier Excel lié à mon application QV, je me suis intéressé aux instructions et on ma recommandé ces deux :
Concat et MATCH
En effectuant des recherches je m'aperçois que Concat effectue un recherche v et supprime les doublons si je ne me trompe pas ?
match va tout simplement regarder si le numéro qu'on lui indique est bien dans la liste cependant j'ai du mal à l'intégrer dans un script.
Aurez vous un exemple de script à me présenter svp ?
En vous remerciant pour votre aide, excellente journée !
Bonjour,
Concat est une fonction d’agrégation (au même titre que sum ou count) qui permet de concaténer les différentes valeurs d'un champs.
Par exemple , un fichier sous cette forme
Equipe 1 | Michel |
Equipe 1 | Denis |
Equipe 1 | Michel |
Equipe 1 | Marc |
Equipe 1 | Sophie |
Equipe 2 | John |
Equipe 2 | Eric |
Equipe 3 | Stan |
Equipe 3 | Clara |
Donnera avec le script :
LOAD A as Equipe,
Concat(B,'-') as Noms
FROM
monfichier.xls
(ooxml, no labels, table is Feuil1)
group by A;
La table:
Equipe | Noms |
Equipe 1 | Denis-Marc-Michel-Michel-Sophie |
Equipe 2 | Eric-John |
Equipe 3 | Clara-Stan |
En utilisant le qualificatif "Distinct" après Load, on peut élminier les doublons dans le résultat.
cf l'aide:
Je l'utilise personnellement assez peu dans les scripts, plutôt comme fonction de calcul dans des graphiques.
La fonction match retourne la position d'un élément (pas forcément numérique) s'il est présent dans une liste.
J'utilise plus fréquemment la fonction "wildmatch" qui permet d'utiliser des caractères 'Joke'r.
Imaginons des codes produits pour des vêtements qui commencent par F,H,ou E selon qu'ils soient pour femme,homme ou enfant; on peut avoir ce genre de chose:
Pick(Wildmatch(CODE_PRODUIT, 'F*','H*','E*'), 'Femme','Homme','Enfant') as Catégorie
Dans tous les cas, l'aide en Ligne de Qlik fournit une explication des fonctions et souvent quelques exemples d'utilisation.
Martin
Bonjour,
Concat est une fonction d’agrégation (au même titre que sum ou count) qui permet de concaténer les différentes valeurs d'un champs.
Par exemple , un fichier sous cette forme
Equipe 1 | Michel |
Equipe 1 | Denis |
Equipe 1 | Michel |
Equipe 1 | Marc |
Equipe 1 | Sophie |
Equipe 2 | John |
Equipe 2 | Eric |
Equipe 3 | Stan |
Equipe 3 | Clara |
Donnera avec le script :
LOAD A as Equipe,
Concat(B,'-') as Noms
FROM
monfichier.xls
(ooxml, no labels, table is Feuil1)
group by A;
La table:
Equipe | Noms |
Equipe 1 | Denis-Marc-Michel-Michel-Sophie |
Equipe 2 | Eric-John |
Equipe 3 | Clara-Stan |
En utilisant le qualificatif "Distinct" après Load, on peut élminier les doublons dans le résultat.
cf l'aide:
Je l'utilise personnellement assez peu dans les scripts, plutôt comme fonction de calcul dans des graphiques.
La fonction match retourne la position d'un élément (pas forcément numérique) s'il est présent dans une liste.
J'utilise plus fréquemment la fonction "wildmatch" qui permet d'utiliser des caractères 'Joke'r.
Imaginons des codes produits pour des vêtements qui commencent par F,H,ou E selon qu'ils soient pour femme,homme ou enfant; on peut avoir ce genre de chose:
Pick(Wildmatch(CODE_PRODUIT, 'F*','H*','E*'), 'Femme','Homme','Enfant') as Catégorie
Dans tous les cas, l'aide en Ligne de Qlik fournit une explication des fonctions et souvent quelques exemples d'utilisation.
Martin
Bonjour Martin,
Merci c'est exactement ce que je voulais, je te pose une dernière question pour ainsi comprendre l'utilisation de cette formule dans mon script.
Dans mon app j'ai une table qui présente plein liste de codes, j'ai donc à insérer mon fichier Excel : REF_CODE qui lui rassemble les codes qui m'intéresse...
Je dois donc le joindre par un left join sur la table qui rassemble les codes la recharger puis droper l'ancienne, supprimer les doublons de codes présent dans l'Excel et enfin réaliser un match...
Mais ce que je comprends pas si je fais ma manipulation je n'ai pas besoin d'utiliser ces instruction vu qu'en rechargeant la table il devrait me récupérer que les champs en mode distinct ...
Voici mon code
FRM_FORMULAIRE0:
LOAD
FORM_CODE & '-' & FORM_LIBELLE as [Code et lib. formulaire],
FORM_ID_FORM as @ID_FORM,
FORM_LIBELLE as [Nom du formulaire],
FORM_ID_FORM,
FORM_ID_OBJET,
FORM_LIBELLE,
FORM_DAT_DEB_VAL,
FORM_DAT_FIN_VAL,
FORM_ID_ETAB,
FORM_NUM_VERSION,
FORM_IND_VALIDATION,
FORM_CODE
FROM
[$(CheminQVD)frm_formulaire.QVD](qvd)
where FORM_CODE=146 //BILAN TDM6 CSV
or FORM_CODE=153 //BILAN TDM6 CSS CSC
or FORM_CODE=118 //VQ11 CSS
or FORM_CODE=91 //VQ11 CSV VSC
;
que j'aimerai transformer comme ca :
REF_FORMULAIRES:
LOAD
ETB,
[Date Debut],
[Date Fin],
Code,
Libellé,
[Num Form],
Designation
FROM
[Referentiel-Indic-Soins.xlsx]
(ooxml, embedded labels, table is [Variables-Form]);
FRM_FORMULAIRE0:
LOAD
FORM_CODE & '-' & FORM_LIBELLE as [Code et lib. formulaire],
FORM_ID_FORM as @ID_FORM,
FORM_LIBELLE as [Nom du formulaire],
FORM_ID_FORM,
FORM_ID_OBJET,
FORM_LIBELLE,
FORM_DAT_DEB_VAL,
FORM_DAT_FIN_VAL,
FORM_ID_ETAB,
FORM_NUM_VERSION,
FORM_IND_VALIDATION,
FORM_CODE
FROM
[$(CheminQVD)frm_formulaire.QVD](qvd);
LEFT JOIN (FRM_FORMULAIRE0)
LOAD [Num Form] RESIDENT REF_FORMULAIRES;
FRM_FORMULAIRE:
NOCONCATENATE LOAD *
RESIDENT FRM_FORMULAIRE0
match(FORM_CODE,([Num Form])>0;
DROP TABLE FRM_FORMULAIRE0;
DROP Fields FORM_CODE;
Je loupe quelque chose la par ce que pour moi ce que je fais ce n'est pas trop utile ...
Bonjour,
Je ne suis pas sur d'avoir bien compris, le but est de ne garder que les codes présents dans le fichier référentiel?
Il n'est pas utile d'utiliser la fonction match; une jointure fera le job (en renommant correctement les champs).
Ou de manière plus simple, la fonction Exists() fait parfaitement l'affaire ici:
REF_FORMULAIRES:
LOAD
distinct
[Num Form]
FROM
[Referentiel-Indic-Soins.xlsx]
(ooxml, embedded labels, table is [Variables-Form]);
FRM_FORMULAIRE0:
LOAD
FORM_CODE & '-' & FORM_LIBELLE as [Code et lib. formulaire],
FORM_ID_FORM as @ID_FORM,
FORM_LIBELLE as [Nom du formulaire],
FORM_ID_FORM,
FORM_ID_OBJET,
FORM_LIBELLE,
FORM_DAT_DEB_VAL,
FORM_DAT_FIN_VAL,
FORM_ID_ETAB,
FORM_NUM_VERSION,
FORM_IND_VALIDATION,
FORM_CODE
FROM
[$(CheminQVD)frm_formulaire.QVD](qvd)
WHERE EXISTS( [Num Form],FORM_ID_FORM);
DROP TABLE REF_FORMULAIRES;
Martin