SubField()

Découpe un texte selon un séparateur et renvoie le segment demandé ; sans field_no dans un LOAD, peut générer plusieurs lignes.

Présentation

Un identifiant d'exécution contient plusieurs informations séparées par un caractère : environnement, application et numéro de lot. SubField() permet de récupérer la partie utile sans construire une cascade de découpages manuels. C'est pratique pour ventiler les traces de chargement par application. Avant de l'utiliser, vérifie la régularité du séparateur : une valeur mal formée peut décaler les informations extraites.

Syntaxe

SubField(text, delimiter [, field_no])

Exemple pratique

Identifier l’application à l’origine d’un lot ETL

Cas SOSBI · traçabilité. Chaque lot porte un identifiant composé de l’environnement, de l’application et du numéro d’exécution.

Script de chargement

Lots:
LOAD
    LotID,
    SubField(LotID, '#', 1) AS Environnement,
    SubField(LotID, '#', 2) AS Application,
    SubField(LotID, '#', -1) AS NumeroExecution
INLINE [
LotID
PROD#PAIE#0047
REC#STOCK#0102
PROD#SUIVI#0048
];

Données de départ

Identifiants de lots reçus
LotID
PROD#PAIE#0047
REC#STOCK#0102
PROD#SUIVI#0048

Résultat

Les trois composantes du LotID deviennent des champs distincts : Environnement, Application et NumeroExecution.

Le numéro reste du texte : ses zéros initiaux sont conservés.

Précisions techniques

  • Une position positive compte depuis la gauche : SubField('2026_AIX_0158', '_', 1) renvoie '2026'.
  • Une position négative compte depuis la droite : SubField('2026_AIX_0158', '_', -1) renvoie '0158'.
  • Avec -2, la même chaîne renvoie 'AIX'. Cette écriture est pratique lorsque la fin d’une référence est stable mais que son début peut varier.
  • Sans troisième argument dans un LOAD, SubField() peut produire une ligne par segment : ce comportement est différent d’une simple extraction.