SubField - fonction de script et fonction de graphique
SubField() permet d'extraire des composants de sous-chaîne d'un champ de chaîne parent, où les champs d'enregistrement d'origine se composent de plusieurs parties séparées par un délimiteur.
La fonction Subfield() peut s'utiliser, par exemple, pour extraire le prénom et le nom de famille d'une liste d'enregistrements constituée de noms complets, les parties de composant d'un nom de chemin ou encore les données de tables séparées par des virgules.
Si vous utilisez la fonction Subfield() dans une instruction LOAD en ignorant le paramètre field_no facultatif, un enregistrement complet sera généré pour chaque sous-chaîne. Si plusieurs champs sont chargés à l'aide de la fonction Subfield(), les produits cartésiens de toutes les combinaisons sont créés.
SubField(text,
delimiter[, field_no ])
chaîne
Arguments
Argument
Description
text
Chaîne d'origine. Il peut s'agir d'un texte codé de manière irréversible, d'une variable, d'une expansion dollar ou d'une autre expression.
delimiter
Caractère inclus dans la chaîne d'entrée text qui divise la chaîne en plusieurs composants.
field_no
Le troisième argument, facultatif, est un entier spécifiant laquelle des sous-chaînes de la chaîne parent text doit être renvoyée. Utilisez la valeur 1 pour renvoyer la première sous-chaîne, la valeur 2 pour renvoyer la deuxième sous-chaîne, et ainsi de suite.
Si field_no est une valeur positive, les sous-chaînes sont extraites de gauche à droite.
Si field_no est une valeur négative, les sous-chaînes sont extraites de droite à gauche.
Note Conseil Il est possible d'utiliser SubField() à la place de combinaisons de fonctions complexes telles que Len(), Right(), Left(), Mid() et d'autres fonctions de chaîne.
Exemples : Expressions de graphique
Exemple
Résultat
SubField(S, ';' ,2)
Renvoie 'cde' si S correspond à 'abc;cde;efg'.
SubField(S, ';' ,1)
Renvoie une chaîne vide si S est une chaîne vide.
SubField(S, ';' ,1)
Renvoie une chaîne vide si S correspond à ';'.
Imaginons que vous ayez une variable contenant le nom de chemin d'accès vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
Dans un graphique de type texte et image, vous pouvez ajouter une mesure telle que : SubField(vMyPath, '\',-3), ce qui aboutit à 'Qlik', car il s'agit de la troisième sous-chaîne en partant de l'extrémité droite de la variable vMyPath.
Exemples : Script et expressions de graphique via SubField
Exemples de base
Exemple
Résultat
SubField(S, ';' ,2)
Renvoie 'cde' si S correspond à 'abc;cde;efg'.
SubField(S, ';' ,1)
Renvoie une chaîne vide si S est une chaîne vide.
SubField(S, ';' ,1)
Renvoie une chaîne vide si S correspond à ';'.
Imaginons que vous ayez une variable contenant le nom de chemin d'accès vMyPath,
Set vMyPath=\Users\ext_jrb\Documents\Qlik\Sense\Apps;.
Dans un graphique de type texte et image, vous pouvez ajouter une mesure telle que : SubField(vMyPath, '\',-3), ce qui aboutit à 'Qlik', car il s'agit de la troisième sous-chaîne en partant de l'extrémité droite de la variable vMyPath.
Exemple de script 1
Script de chargement
Chargez les expressions de script et les données suivantes dans l'éditeur de chargement de données.
FullName:
LOAD * inline [
Name
'Dave Owen'
'Joe Tem'
];
SepNames:
Load Name,
SubField(Name, ' ',1) as FirstName,
SubField(Name, ' ',-1) as Surname
Resident FullName;
Drop Table FullName;
Création d'une visualisation
Créez une visualisation de table dans une feuille Qlik Sense dotée des dimensions Name, FirstName et SurName.
Résultat
Name
FirstName
SurName
Dave Owen
Dave
Owen
Joe Tem
Joe
Tem
Explication
La fonction SubField() extrait la première sous-chaîne de Name en définissant l'argument field_no sur 1. Étant donné que la valeur de field_no est positive, un ordre de gauche à droite est suivi pour l'extraction de la sous-chaîne. Un deuxième appel de fonction extrait la deuxième sous-chaîne en définissant l'argument field _no sur -1, ce qui extrait la sous-chaîne en suivant un ordre de droite à gauche.
Exemple de script 2
Script de chargement
Chargez les expressions de script et les données suivantes dans l'éditeur de chargement de données.
LOAD DISTINCT
Instrument,
SubField(Player,',') as Player,
SubField(Project,',') as Project;
Load * inline [
Instrument|Player|Project
Guitar|Neil,Mike|Music,Video
Guitar|Neil|Music,OST
Synth|Neil,Jen|Music,Video,OST
Synth|Jo|Music
Guitar|Neil,Mike|Music,OST
] (delimiter is '|');
Création d'une visualisation
Créez une visualisation de table dans une feuille Qlik Sense dotée des dimensions Instrument, Player et Project.
Résultat
Instrument
Player
Project
Guitar
Mike
Music
Guitar
Mike
Video
Guitar
Mike
OST
Guitar
Neil
Music
Guitar
Neil
Video
Guitar
Neil
OST
Synth
Jen
Music
Synth
Jen
Video
Synth
Jen
OST
Synth
Jo
Music
Synth
Neil
Music
Synth
Neil
Video
Synth
Neil
OST
Explication
Cet exemple montre comment l'utilisation de plusieurs instances de la fonction Subfield(), chacune omettant le paramètre field_no, à partir de la même instruction LOAD crée des produits cartésiens de toutes les combinaisons. L'option DISTINCT est utilisée pour éviter de créer des enregistrements en double.
Cette page vous a-t-elle aidé ?
Si vous rencontrez des problèmes sur cette page ou dans son contenu – une faute de frappe, une étape manquante ou une erreur technique – dites-nous comment nous améliorer !