SubFieldRegEx - fonction de script et fonction de graphique
SubFieldRegEx() extrait le texte d'une expression de chaîne d'entrée en utilisant le modèle d'expression régulière spécifié comme délimiteur. Si aucune correspondance n'est trouvée, la fonction renvoie une valeur nulle.
Cette fonction effectue des opérations de regex sensibles à la casse. Sinon, vous pouvez utiliser la variante SubFieldRegExI() pour effectuer des opérations de regex non sensibles à la casse.
Texte de chaîne d'entrée dans lequel rechercher un modèle d'expression régulière.
regex_delimiter
Expression de chaîne contenant l'expression régulière à utiliser comme délimiteur. Vous pouvez spécifier plus d'un délimiteur dans le même modèle d'expression régulière en les séparant par un caractère | (barre verticale).
field_no
Valeur entière indiquant le numéro de la subdivision à extraire. Par exemple, spécifiez une valeur 4 pour extraire la quatrième sous-division. Cet argument est facultatif.
Les règles suivantes s'appliquent, que la fonction soit utilisée dans un script de chargement ou dans une expression de graphique :
Si field_no est positif, la fonction renvoie une valeur, identifiant les correspondances de gauche à droite.
Si field_no est négatif, la fonction renvoie une valeur, identifiant les correspondances de droite à gauche.
Lors de l'utilisation de la fonction dans un script de chargement :
Si vous utilisez la fonction SubFieldRegEx() dans une instruction LOAD et si field_no est omis, la fonction génère autant d'enregistrements qu'il existe de correspondances.
Si plusieurs champs sont chargés à l'aide de SubFieldRegEx() et si aucun d'entre eux ne spécifie un argument field_no, les produits cartésiens de toutes les combinaisons sont créés.
Lors de l'utilisation de la fonction dans une expression de graphique :
Si field_no est omis, la valeur par défaut est 1.
Exemples de fonction
Exemple
Résultat
SubFieldRegEx('a,b c;1 2,3',' |,|;', 1)
Renvoie a. Dans cet exemple, trois caractères de délimitation sont spécifiés (espace, virgule et point-virgule).
SubFieldRegEx('a;b;c;1;2;3',';', 2)
Renvoie b. Dans ce cas, un seul caractère de délimitation est spécifié (point-virgule).
SubFieldRegEx('a,b c;1 2,3',' |,|;', 4)
Renvoie 1.
Cas d'utilisation
Vous pouvez utiliser SubFieldRegEx() pour extraire plusieurs valeurs individuelles d'une liste délimitée. Par exemple, si vous disposez d'une liste séparée par des virgules contenue dans un bloc plus important de langage naturel, vous pouvez utiliser cette fonction pour isoler chaque valeur individuelle de la liste dans un nouvel enregistrement dans votre modèle de données.
Exemple 1 – Script de chargement permettant de séparer des balises par transaction
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Tableau Transaction_By_Tag qui contient initialement des données de transaction. Ces données sont traitées de sorte à extraire les valeurs de balise individuelles dans de nouveaux enregistrements.
Création d'un champ, TransactionTag, permettant de stocker les valeurs de balise extraites.
Dans le champ contenant les balises de transaction, plusieurs balises sont contenues dans des chaînes de texte, séparées par des délimiteurs. Le délimiteur peut être l'un des caractères suivants : , | ;
Script de chargement
Transaction_By_Tag:
Load SubFieldRegEx(Tags, ',|;|\|') as TransactionTag,
* Inline [
ID Product Tags Amount
1 Product A Special order,Eligible for return,Warranty included 100.93
2 Product B Ineligible for return|No warranty available 51.11
3 Product C No warranty available 12.83
4 Product B Special order;Liquidation sale;Warranty included 209.48
] (delimiter is '\t');
drop fields Tags;
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
ID
Product
TransactionTag
Tableau de résultats
ID
Product
TransactionTag
1
Product A
Eligible for return
1
Product A
Warranty included
1
Product A
Special order
2
Product B
No warranty available
2
Product B
Ineligible for return
3
Product C
No warranty available
4
Product B
Liquidation sale
4
Product B
Special order
4
Product B
Warranty included
Cet exemple montre que, en cas d'utilisation dans un script de chargement, SubFieldRegEx() renvoie une ligne distincte pour chaque correspondance trouvée dans la chaîne d'entrée.
Exemple 2 – Expressions de graphique permettant de séparer les balises par transaction
Vue d'ensemble
Ouvrez l'éditeur de chargement de données et ajoutez le script de chargement ci-dessous à un nouvel onglet.
Le script de chargement contient :
Tableau Transaction_By_Tag qui contient des données de transaction.
Champ, Tags, qui contient des chaînes de texte permettant de stocker toutes les balises associées à une transaction.
Nos besoins :
Dans le champ contenant les balises de transaction, plusieurs balises sont contenues dans des chaînes de texte, séparées par des délimiteurs. Le délimiteur peut être l'un des caractères suivants : , | ;
Nous voulons utiliser des expressions de graphique pour séparer chaque balise dans son propre champ, avec jusqu'à trois balises possibles à ajouter à une transaction.
Script de chargement
Transaction_By_Tag:
Load * Inline [
ID Product Tags Amount
1 Product A Special order, Eligible for return, Warranty included 100.93
2 Product B Ineligible for return | No warranty available 51.11
3 Product C No warranty available 12.83
4 Product B Special order;Liquidation sale;Warranty included 209.48
] (delimiter is '\t');
Résultats
Chargez les données et ouvrez une feuille. Créez une table et ajoutez ces champs comme dimensions :
ID
Tags
Ajoutez ces dimensions calculées :
=SubFieldRegEx(Tags, ',|;|\|', 1)
=SubFieldRegEx(Tags, ',|;|\|', 2)
=SubFieldRegEx(Tags, ',|;|\|', 3)
Tableau de résultats
ID
Tags
=SubFieldRegEx(Tags, ',|;|\|', 1)
=SubFieldRegEx(Tags, ',|;|\|', 2)
=SubFieldRegEx(Tags, ',|;|\|', 3)
1
Special order, Eligible for return, Warranty included
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 !