Utilisation d'opérateurs de flux de données

Dans Data Integration, les opérateurs de flux de données représentent les sources d'entrée, les cibles de sortie et les transformations pouvant être utilisées dans un flux de données.

A partir du panneau Opérateurs, faites glisser les opérateurs vers le canevas pour concevoir un flux de données. Utilisez ensuite l'onglet Détails du panneau Propriétés pour configurer les propriétés de base et requises pour chaque opérateur. Le cas échéant, utilisez l'onglet Options avancées pour spécifier d'autres propriétés.

En général, un opérateur de flux de données peut comporter des ports entrants et des ports sortants par lesquels passent les données. Par exemple, vous pouvez connecter le même port sortant source aux ports entrants sur un opérateur de filtre, un opérateur de jointure et un opérateur cible. Vous pouvez également connecter un autre opérateur source au même port entrant de jointure.

Un flux de données doit inclure au moins un opérateur source et un opérateur cible pour être valide. Bien que Data Integration prenne en charge plusieurs opérateurs cible dans un flux de données, un opérateur cible ne peut comporter qu'un seul port entrant.

Pour connecter des opérateurs, positionnez le curseur de la souris sur un opérateur jusqu'à ce que le connecteur (petit cercle) apparaisse à droite de l'opérateur. Ensuite, faites glisser le connecteur vers l'opérateur suivant auquel vous souhaitez vous connecter. La connexion est valide lorsqu'une ligne connecte les opérateurs une fois que vous avez déposé le connecteur.

Une ligne de connexion symbolise le flux de données d'un noeud à l'autre. Bien que vous puissiez faire glisser un connecteur visible d'un objet vers un autre, vous ne pouvez pas disposer de plusieurs lignes de connexion entrantes vers un opérateur cible, de filtre, d'expression, d'agrégation, de distinction et de tri.

Important

Pour les types de données complexes, reportez-vous à Types de données hiérarchiques pour savoir ce qui est pris en charge. Vous ne pourrez peut-être pas effectuer certaines configurations dans l'onglet Attributs et l'onglet Données du panneau Propriétés.

Opérateurs de données

Data Integration fournit l'opérateur source et l'opérateur cible permettant d'ajouter des entités de données d'entrée et de sortie qui servent d'entrées aux flux de données, ainsi que de sorties pour les données transformées.

Sélection d'une ressource de données, d'une connexion et d'un schéma

Afin de configurer l'entité de données d'entrée ou de sortie pour un opérateur de données dans un flux de données, vous devez commencer par sélectionner une ressource de données, une connexion et un schéma (ou un bucket).

Pour effectuer les sélections uniquement dans l'ordre affiché dans l'onglet Détails du panneau Propriétés, cliquez sur Sélectionner lorsque l'option est activée en regard du type de ressource.

Par exemple, lorsque vous ajoutez un opérateur source pour la première fois, seule la ressource de données est activée pour sélection. L'option de sélection du type de ressource suivant, Connexion, n'est activée qu'une fois que vous avez effectué une sélection pour l'objet précédent.

Lorsque vous cliquez sur Sélectionner en regard d'une ressource, un panneau apparaît pour vous permettre de sélectionner l'objet souhaité. Vous pouvez utiliser le menu de la ressource pour sélectionner l'objet, ou sélectionner Tout visualiser afin de passer par un autre panneau pour parcourir les objets ou rechercher celui qui vous intéresse, puis sélectionner l'objet.

Lorsque vous sélectionnez un objet de ressource, chaque sélection ultérieure est basée sur la relation parent-enfant héritée de la sélection précédente. Un chemin de navigation en haut du panneau de sélection affiche la hiérarchie de sélection. Par exemple, supposons que vous avez sélectionné la ressource de données "Ressource de données Oracle Database 1" et la connexion "Connexion par défaut". Lorsque vous sélectionnez le schéma, le chemin de navigation apparaît comme suit : "A partir des données Oracle Database asset1 à l'aide de la connexion par défaut".

Sélectionner une entité de données

Après avoir sélectionné une ressource de données, une connexion et un schéma (ou un bucket), vous sélectionnez une entité de données dans la liste des entités de données disponibles.

En général, vous pouvez effectuer les opérations suivantes dans le panneau Parcourir les entités de données :

  • Parcourez les entités de données disponibles et sélectionnez une entité en fonction de son nom.

  • Filtrez la liste disponible à rechercher, puis sélectionnez-la. Dans le champ de recherche, entrez un nom partiel ou complet de l'entité et appuyez sur Entrée pour lancer la recherche. La recherche distingue les majuscules des minuscules. Par exemple, si les entités de données disponibles incluent BANK_US et BANK_EU, entrez BANK, puis effectuez une sélection dans la liste filtrée.

  • Utilisez un ou plusieurs paramètres dans la chaîne de recherche. Par exemple : CUSTOMERS_${COUNTRY}

    Pour utiliser un nom d'entité de données paramétré afin de sélectionner la ressource d'entrée ou de sortie, reportez-vous à Utilisation de paramètres dans les noms d'entité de données.

Selon le type de ressource de données d'une ressource, après la sélection d'une entité de données, une configuration supplémentaire peut être nécessaire dans l'onglet Détails ou dans l'onglet Options avancées du panneau Propriétés.

Affecter des paramètres aux objets de ressource

Pour empêcher la liaison permanente d'un objet de ressource tel qu'une ressource de données ou une connexion dans un flux de données à une ressource spécifique, vous affectez un paramètre à cet objet.

Vous pouvez affecter le paramètre après ou avant la sélection de l'objet de ressource.

  • Dans le flux de données, ajoutez l'opérateur source ou cible. Après avoir choisi un type de ressource, sélectionnez Affecter un paramètre en regard du nom de la ressource afin d'utiliser un autre volet pour sélectionner et affecter un paramètre à l'objet sélectionné. Si aucun type de paramètre approprié n'est disponible, vous pouvez ajouter un paramètre, puis l'affecter.

    Remarque

    L'affectation d'un paramètre n'est pas disponible pour les entités de données dont le nom inclut un paramètre (par exemple, BANK_${REGION}). Vous ne pouvez pas lier une ressource d'entité paramétrée à un autre paramètre.
  • Vous pouvez aussi ajouter l'opérateur source ou cible, puis sélectionner Affecter un paramètre afin d'utiliser un même panneau pour lui affecter un paramètre et sélectionner la ressource de l'objet en même temps. Dans le panneau Ajouter des paramètres, vous sélectionnez une ressource selon la relation parent-enfant héritée de la sélection précédente. Le chemin de navigation en haut du panneau affiche la hiérarchie de sélection.

Reportez-vous également à Utilisation de paramètres de flux de données.

Utiliser des paramètres dans les noms d'entité de données

Vous pouvez inclure des paramètres de flux de données dans le nom de la ressource d'entité de données que vous indiquez pour un opérateur de données.

La syntaxe à utiliser pour un paramètre de flux de données dans un nom d'entité de données est ${PARAMETER_NAME}. Par exemple : CUSTOMERS_${COUNTRY}

Un nom de paramètre est sensible à la casse et chaque paramètre doit avoir une valeur par défaut.

Par exemple, CUSTOMERS_${COUNTRY} peut renvoyer la table de base de données CUSTOMERS_USA et BANK_${COUNTRY}/* peut renvoyer les fichiers Object Storage dans BANK_EU.

Pour utiliser des paramètres dans les noms d'entité de données lorsque vous configurez un opérateur de données, vous pouvez :

  • Ajoutez le paramètre au flux de données avant d'ajouter l'opérateur de données.
  • Ajoutez le paramètre au moment de la configuration de l'entité de données de l'opérateur.

Comment ajouter un paramètre

Dans un flux de données, sélectionnez Paramètres dans le menu Visualiser de la barre d'outils du canevas pour ouvrir le panneau Paramètres.

Dans le panneau Paramètres, sélectionnez Configuration, puis Ajouter.

Dans le panneau Ajouter un paramètre, configurez un paramètre du type de données approprié, par exemple VARCHAR ou NUMERIC, et ajoutez une valeur par défaut.

Lors de la configuration d'une entité de données dans un flux de données, vous pouvez rechercher les entités de données disponibles en saisissant le nom du paramètre dans le panneau Parcourir les entités de données. Dans le champ de recherche, commencez à saisir ${, suivi de n'importe quel caractère. Si la première partie du nom de paramètre correspond à des paramètres existants dans le flux de données, la liste des noms suggérés apparaît. Sélectionnez un paramètre dans la liste, complétez la syntaxe en ajoutant }, puis appuyez sur Entrée.

Ajout d'un paramètre au moment de la configuration d'entité de données

Dans le panneau Parcourir les entités de données, vous pouvez effectuer les opérations suivantes :

  • Dans le menu Actions supplémentaires, sélectionnez Ajouter un paramètre de flux de données pour utiliser le panneau Ajouter un paramètre de flux de données. Indiquez le type de données, la valeur par défaut et les autres propriétés du paramètre à ajouter et à utiliser.

  • Dans le champ de recherche, commencez à saisir ${, suivi de n'importe quel caractère. Si la première partie du nom de paramètre correspond à des paramètres existants dans le flux de données, la liste des noms suggérés apparaît. Sélectionnez un paramètre dans la liste, complétez la syntaxe en ajoutant }, puis appuyez sur Entrée.

  • Dans le champ de recherche, entrez le nom du paramètre, par exemple ${PARAMETER_NAME}). Si le nom du paramètre n'existe pas encore dans le flux de données et que vous appuyez sur Entrée, Data Integration affiche le panneau Ajouter un paramètre de flux de données. Après avoir saisi le nom du paramètre, vous pouvez également sélectionner Ajouter un paramètre de flux de données dans le menu Actions supplémentaires.

    Dans le panneau Ajouter un paramètre de flux de données, indiquez le type de données, la valeur par défaut et les autres propriétés du paramètre à ajouter et à utiliser.

Opérateur source

Utilisez l'opérateur source pour indiquer les entités de données qui servent d'entrées au flux de données.

Ajout et configuration d'un opérateur source

Vous pouvez ajouter plusieurs opérateurs source à un flux de données.

Important

Si vous utilisez une entité de données hiérarchiques pour un opérateur source, reportez-vous à Types de données hiérarchiques pour savoir ce qui est pris en charge. Vous ne pourrez peut-être pas effectuer certaines configurations dans l'onglet Attributs ou l'onglet Données du panneau Propriétés.
  1. Faites glisser un opérateur source du panneau Opérateurs vers le canevas.
  2. Avec le focus sur l'opérateur source, dans l'onglet Détails du panneau Propriétés, entrez un nom pour l'opérateur source dans le champ Identificateur ou conservez le nom par défaut.
  3. Pour configurer la source d'entrée pour cet opérateur, sélectionnez la ressource de données, la connexion et le schéma (ou bucket) en cliquant sur Sélectionner à mesure qu'elle devient disponible en regard du type de ressource. Pour plus d'informations sur le type de ressource de données que vous sélectionnez pour cet opérateur source, reportez-vous aux descriptions suivantes.
    Type de ressource de données Description

    Object Storage

    Amazon S3

    HDFS

    Cliquez sur Sélectionner en regard de Bucket pour sélectionner le compartiment, puis le bucket.

    Après avoir sélectionné la ressource de données, la connexion et le bucket, passez à l'étape 5 pour sélectionner une entité de données.

    Ressource de données REST générique

    Une fois la connexion sélectionnée, l'URL de base que vous avez saisie lors de la création de la ressource de données apparaît. Pour configurer la source, procédez comme suit :

    • Cliquez sur Sélectionner en regard de Ressource pour sélectionner une adresse.

    • Cliquez sur Sélectionner en regard de Opération pour sélectionner une opération pour l'adresse.

    • Pour plus de propriétés, reportez-vous à l'étape 7.

    Oracle Fusion Applications à l'aide d'Oracle BI Cloud Connector (BICC)

    Pour Schéma, sélectionnez l'offre BICC. L'offre BICC sélectionnée fournit les objets vue (VO) BICC pour l'extraction des données.

    Après avoir sélectionné une ressource de données, une connexion et un schéma, passez à l'étape 4 pour sélectionner une entité de données.

    Oracle Fusion Applications à l'aide d'Oracle BI Publisher (BIP)

    Pour la ressource de données :

    Pour utiliser une ressource de données BIP dans un flux de données, vous avez besoin d'un bucket Object Storage comme emplacement de préparation. Si vous sélectionnez une ressource de données pour laquelle aucun emplacement intermédiaire par défaut n'est spécifié dans cette ressource de données, Data Integration affiche une notification d'avertissement. Lorsque vous voyez la notification, choisissez l'une des options suivantes :
    • Sélectionnez Mettre à jour la ressource de données pour ajouter un emplacement intermédiaire par défaut à cette ressource de données.
    • Cliquez sur Sélectionner en regard de Emplacement de préparation dans le panneau Propriétés pour sélectionner la ressource de données Object Storage contenant le bucket à utiliser pour la préparation.

    Pour le schéma :

    Sélectionnez le dossier BIP qui contient le rapport comme schéma.

    Pour plus de détails sur les éléments suivants, reportez-vous à Extraction de données à partir de BIP dans Data Integration :
    • Préparer l'état BIP et son interrogation SQL
    • Configurer le découpage par bloc
    • Utiliser des paramètres BIP personnalisés

    Après avoir sélectionné une ressource de données, une connexion et un schéma, passez à l'étape 4 pour sélectionner une entité de données.

    Autres ressources de données qui ne sont pas Object Storage, Amazon S3 ou HDFS

    Après avoir sélectionné une ressource de données, une connexion et un schéma, passez à l'étape 4 pour sélectionner une entité de données.

  4. Pour sélectionner une entité de données qui n'est pas à partir d'une ressource de données Object Storage, Amazon S3 ou HDFS, procédez comme suit :
    1. Notez ce qui suit dans le panneau Sélectionner une entité de données. Le cas échéant, vous pouvez :
      • Utilisez le menu d'entité de données pour sélectionner une entité de données en fonction de son nom.

      • Sélectionnez Parcourir des entités de données pour utiliser un autre panneau afin de parcourir la liste disponible ou de la rechercher, puis sélectionnez une entité de données.

        Reportez-vous à Sélection d'une entité de données si vous avez besoin d'aide pour effectuer une recherche dans la liste à l'aide d'un nom complet ou partiel.

        Vous pouvez inclure des paramètres de flux de données dans le nom d'une entité de données sélectionnée, à l'aide de la syntaxe ${PARAMETER_NAME}. Par exemple : BANK_${REGION}

        Reportez-vous à Utilisation de paramètres dans les noms d'entité de données si vous avez besoin d'aide pour ajouter et utiliser des paramètres lors de la configuration des noms d'entité.

    2. Selon le type de ressource de données de cet opérateur source, sélectionnez l'entité de données et effectuez une configuration supplémentaire, le cas échéant.
      Type de ressource de données Description

      Oracle Database

      Oracle Database sur Amazon RDS

      Oracle Siebel

      Oracle PeopleSoft

      Oracle E-Business Suite

      Oracle ATP et ADW

      MySQL

      MySQL HeatWave

      MySQL sur Amazon RDS

      Amazon RDS pour SQL Server

      Microsoft SQL Server

      Microsoft Azure SQL Database

      IBM DB2

      Dans les détails :

      • Sélectionnez l'entité de données par son nom.

      • Le cas échéant, sélectionnez Entrer une instructions SQL personnalisée pour entrer une seule instruction SQL dans l'éditeur.

        En fournissant une instruction de requête SQL, vous pouvez définir une entité source de base de données et la forme de l'entité en même temps. Par exemple, vous pouvez définir et filtrer les données d'une instruction SQL au lieu d'ajouter un opérateur de filtre après avoir défini l'entité à utiliser pour l'opérateur source.

        Remarque : dans les instructions SQL, utilisez des guillemets simples autour des paramètres. Par exemple : select * from ORDERS where Created_On >= '${SYS.LAST_LOAD_DATE}'

        Après avoir saisi la requête SQL, sélectionnez Valider pour rechercher les erreurs dans l'instruction.

      • Si disponible et applicable, procédez comme suit pour charger uniquement les enregistrements nouveaux ou mis à jour de la source vers la cible :

        • Cochez la case Chargement incrémentiel pour identifier et charger uniquement les lignes qui ont été créées ou modifiées depuis la dernière exécution du traitement de chargement.

        • Pour Colonne de filigrane, sélectionnez la colonne utilisée pour marquer les lignes qui ont été chargées de manière incrémentielle. Seules les colonnes DATE, TIMESTAMP et DATETIME peuvent être utilisées en tant que colonne de filigrane.

      Oracle Fusion Applications à l'aide d'Oracle BI Cloud Connector (BICC)

      Dans l'onglet Détails, sélectionnez un objet vue BICC comme entité de données à partir de laquelle extraire les données. Utilisez ensuite le menu Stratégie d'extraction pour choisir le mode d'extraction des données source.

      • Complet : extrait et charge toutes les données à partir de la date d'extraction initiale que vous indiquez (facultatif). Si vous n'indiquez pas de date dans Date d'extraction initiale, toutes les données sont extraites.
      • Incrémentiel : extrait et charge uniquement les données créées ou modifiées après une date spécifique.
        • Sélectionnez Géré pour utiliser la dernière date suivie et gérée par Data Integration. Vous n'indiquez pas explicitement de date.
          Important

          L'option Géré extrait 24 heures de données supplémentaires dans le passé.

          Data Integration ajoute le paramètre SYS.LAST_LOAD_DATE pour suivre la date du dernier chargement ou de la dernière exécution de tâche, et stocke la date du dernier chargement réussi en tant que filigrane sur des exécutions consécutives. Lorsque la tâche est exécutée, vous êtes autorisé à modifier la valeur de la dernière date stockée dans le système.

        • Sélectionnez Personnalisé pour indiquer vous-même la date dans le champ Date de la dernière extraction.

      Sélectionnez ensuite un autre stockage de configuration externe BICC pour les données extraites, si vous ne voulez pas utiliser la valeur par défaut de la ressource de données. La valeur par défaut de la ressource de données correspond au stockage externe BICC configuré dans la ressource de données Fusion Applications BICC lors de la création ou de la modification de la ressource.

      Vous pouvez éventuellement effectuer les opérations suivantes dans l'onglet Options avancées :

      Sélectionnez Activer le broker BI pour que l'extracteur BICC puisse lire les lignes d'entrée directement à partir de la base de données Fusion Applications au lieu d'un chemin d'extraction standard.
      Important

      • Le mode de broker BI est une option d'optimisation des performances pour les utilisateurs avancés.
      • Le mode de broker BI est une fonctionnalité BICC prise en charge uniquement pour certains magasins de données. Echec de l'extraction pour les banques de données non prises en charge.
      • Avec l'option BI Broker, les performances d'extraction peuvent s'améliorer car les requêtes sont exécutées directement sur les banques de données de la base sous-jacente. L'amélioration des performances dépend de la banque de données, de la charge globale en cours sur le serveur BI, de la charge globale en cours sur la base de données et d'autres facteurs.
      • Dans certains cas, l'activation du mode de broker BI modifie les types de données de colonne source.
      Si vous ne sélectionnez pas Activer BI Broker, les données sont extraites via le serveur BI. Pour plus d'informations, voir Mode d'extraction de courtier dans Configurer les offres à extraire du guide Créer une extraction Business Intelligence Cloud. Le guide BICC fait partie de la liste de livres Applications communes de la documentation Oracle Fusion Cloud Applications Suite.

      Pour Propriétés de colonne BICC, sélectionnez le type de colonne à partir de la source BICC à inclure en tant qu'attribut dans la cible.

        • Tout : toutes les colonnes de l'objet vue PVO BICC sont incluses. Toutefois, les colonnes dont le nom commence par ExtnAttribute ou dont le nom et le libellé sont identiques n'apparaissent pas.

        • Par défaut uniquement : seules les colonnes activées par défaut pour l'extraction dans l'objet vue PVO BICC sont incluses. Elle affiche toutes les colonnes, y compris les colonnes Flex.

        • Clé par défaut et clé primaire : les colonnes par défaut et principale de l'objet vue de notification de connexion BICC sont incluses. Elle affiche toutes les colonnes, y compris les colonnes Flex.

        • Clés principales uniquement : seules les colonnes principales de l'objet vue objet vue personnalisé BICC sont incluses. Elle affiche toutes les colonnes, y compris les colonnes Flex.

      Oracle Fusion Applications à l'aide d'Oracle BI Publisher (BIP)

      Dans l'onglet Détails :

      • Pour Entité de données, sélectionnez un rapport. Pour un rappel de l'emplacement du rapport, reportez-vous au blog Extraire des données d'Oracle Fusion Applications à l'aide de BIP dans Data Integration.
      • Indiquez l'emplacement de préparation, qui est le bucket Object Storage pour la préparation des données extraites. Si la ressource de données sélectionnée dispose d'un emplacement de préparation par défaut indiqué, Data Integration utilise automatiquement la ressource de données Object Storage et le bucket indiqués comme emplacement de préparation par défaut dans cette ressource de données. Si la ressource de données sélectionnée n'a pas d'emplacement de préparation par défaut indiqué, vous pouvez sélectionner la ressource de données Object Storage contenant le bucket à utiliser pour la préparation. Sinon, vous pouvez mettre à jour la ressource de données pour ajouter un emplacement intermédiaire par défaut ou sélectionner une autre ressource de données.

      Effectuez ensuite les opérations suivantes dans l'onglet Options avancées :

      • Sélectionnez Activer la limite de ligne pour indiquer le nombre maximal de lignes à extraire.

      • Dans le champ Limite de ligne, indiquez la limite de ligne.

      • Si vous attendez un volume de données important, spécifiez la taille dans le champ Taille des blocs sous Activer le découpage. La taille de bloc est obligatoire si la limite de ligne spécifiée est supérieure à 100000.

        Pour obtenir de l'aide sur le découpage en blocs, reportez-vous au blog Extraction de données à partir d'Oracle Fusion Applications à l'aide de BIP dans Data Integration.

      • La section Propriétés BIP affiche les paramètres de rapport BIP du rapport que vous avez sélectionné pour l'entité de données. Sélectionnez une propriété dans chacun des champs Nombre de lignes renvoyées et Décalage de départ. Vous ne pouvez pas sélectionner la même propriété pour les deux champs.
      • Pour charger uniquement les enregistrements nouveaux ou mis à jour de la source vers la cible :
        • Cochez la case Chargement incrémentiel pour identifier et charger uniquement les données créées ou modifiées depuis la dernière exécution du traitement de chargement.
        • Pour Colonne de marque-page, sélectionnez la propriété utilisée pour marquer les données chargées de manière incrémentielle.
    3. Après avoir sélectionné une entité de données, le nom de l'entité de données sélectionnée s'affiche en regard de entité de données dans l'onglet Détails du panneau Propriétés.
      • Si vous avez fourni une instruction SQL, le libellé SQL_ENTITY<nnnnnnnnn> est affiché, par exemple : SQL_ENTITY123456789

      • Si vous avez utilisé un paramètre dans le nom de l'entité, le libellé inclut le nom du paramètre, par exemple : BANK_${REGION}

        Remarque

        Pour une entité de données qui inclut un paramètre dans son nom, vous ne pouvez pas lier la ressource d'entité à un autre paramètre. L'option Affecter un paramètre n'est pas disponible.

  5. Pour sélectionner une entité de données provenant d'une ressource de données Object Storage, Amazon S3 ou HDFS, procédez comme suit :
    1. Utilisez le panneau Sélectionner une entité de données pour sélectionner une entité unique par son nom, ou sélectionnez des entités à l'aide d'une expression de modèle.
      • Sélectionnez Parcourir par nom afin d'utiliser un autre panneau afin de parcourir la liste disponible ou d'en rechercher un, puis sélectionnez-en une selon leur nom.

        Reportez-vous à Sélection d'une entité de données si vous avez besoin d'aide pour effectuer une recherche dans la liste à l'aide d'un nom complet ou partiel.

        Vous pouvez inclure des paramètres de flux de données dans le nom d'une entité de données sélectionnée, à l'aide de la syntaxe ${PARAMETER_NAME}. Par exemple : BANK_${REGION}.csv

        Reportez-vous à Utilisation de paramètres dans les noms d'entité de données si vous avez besoin d'aide pour ajouter et utiliser des paramètres lors de la configuration d'une entité de données par nom.

      • Sélectionnez Parcourir par modèle pour utiliser une expression régulière (caractères génériques compris) afin de sélectionner des entités correspondant à l'un des répertoires et modèle de fichiers. Par exemple, entrez CUSTOMERS* dans le champ et appuyez sur Entrée pour filtrer la liste. Reportez-vous à la section Testing and Using a Pattern.

        Vous pouvez également inclure des paramètres dans l'expression de modèle à l'aide de la syntaxe ${PARAMETER_NAME}. Par exemple : CUSTOMERS_${REGION}/*

        Reportez-vous à Utilisation de paramètres dans les noms d'entité de données si vous avez besoin d'aide pour ajouter et utiliser des paramètres lors de la configuration des noms d'entité de données par modèle.

        Remarque

        Lorsque vous utilisez une expression de modèle, tous les fichiers existants correspondant au modèle sont supposés présenter la même structure. Les fichiers mis en correspondance sont traités comme une entité unique dans le flux de données. Les nouveaux fichiers futurs correspondant au modèle seront également traités.

        Pour une entité de données qui inclut un paramètre dans son nom, vous ne pouvez pas lier la ressource d'entité à un autre paramètre. L'option d'affectation d'un paramètre n'est pas disponible.

    2. Après avoir effectué la sélection d'entité de données par nom ou par modèle, complétez la configuration d'entité dans le panneau Sélectionner une entité de données.

      Le mode de réalisation de la configuration dépend du type de fichier que vous choisissez pour l'entité de données sélectionnée.

      Type de fichier Description

      CSV

      Si vous utilisez l'option Parcourir par nom pour sélectionner l'entité de données, vous pouvez sélectionner Afficher l'aperçu des données bruts pour afficher les 10 premières lignes du fichier.

      Sélectionnez le type de compression (méthode de compression) utilisé. Si vous ne connaissez pas la méthode de compression utilisée pour compresser le fichier, sélectionnez Automatique (valeur par défaut).

      L'encodage par défaut est UTF-8. Il ne peut pas être modifié.

      Les autres paramètres que vous pouvez configurer sont les suivants :

      • Si la première ligne du fichier est une ligne d'en-tête, sélectionnez Oui pour A un en-tête.
      • Si les valeurs des lignes de données s'étendent sur plusieurs lignes, sélectionnez Oui pour Multi-ligne.
      • Indiquez le caractère d'échappement des autres caractères trouvés dans les valeurs de données. Par exemple : \.
      • Sélectionnez le caractère déliimitre qui sépare les champs de données. Par exemple : COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) ou TAB (\t).
      • Si un séparateur de colonne est inclus à la fin d'une ligne de données dans le fichier, sélectionnez Oui pour Délimiteur de fin.
      • Indiquez le caractère de guillemet qui traite les autres caractères comme des caractères littéraux. Par exemple : "

      JSON

      Sélectionnez le type de compression (méthode de compression) utilisé. Si vous ne connaissez pas la méthode de compression utilisée pour compresser le fichier, sélectionnez Automatique (valeur par défaut).

      L'encodage par défaut est UTF-8. Il ne peut pas être modifié.

      Sélectionnez Utiliser un schéma personnalisé pour coller ou télécharger un exemple de schéma personnalisé utilisé pour inférer la forme d'entité. Lorsque cette case est cochée, la dérive de schéma n'est plus applicable dans l'entité source.

      • Si vous sélectionnez Télécharger vers le serveur, supprimez un fichier de schéma personnalisé dans la zone indiquée ou cliquez sur Sélectionner un fichier pour sélectionner le fichier de schéma à télécharger.

      • Si vous sélectionnez Coller dans le schéma, copiez le contenu du fichier texte du schéma et collez-le dans la zone indiquée.

      PARQUET

      Le type de compression par défaut est Auto, qui ne peut pas être modifié.

      AVRO

      Le type de compression par défaut est Auto, qui ne peut pas être modifié.

      EXCEL

      Seuls les fichiers XLSX sont pris en charge.

      Le type de compression par défaut est Auto, qui ne peut pas être modifié.

      Par défaut, Data Integration traite la première ligne d'un fichier comme une ligne d'en-tête. Si la première ligne d'un fichier n'est pas une ligne d'en-tête, sélectionnez Non pour A un en-tête.

      Pour Sélectionner une entité par, vous pouvez choisir les critères Nom de feuille, Index de feuille ou Nom de table. Entrez ensuite une valeur pour le nom de la feuille de calcul, l'index de la feuille de calcul ou le nom de la table. L'index de feuille est basé sur zéro.

      Pour Nom de feuille ou Index de feuille, entrez la zone du fichier à utiliser comme plage de données pour la sélection. Si vous n'entrez pas de valeur de plage de données, la valeur par défaut est la plage de données A1, qui correspond à la feuille entière. Si le fichier comporte une ligne d'en-tête, entrez une valeur qui commence par la ligne d'en-tête, par exemple, A1:K56.

    3. Une fois la configuration de l'entité de données terminée, cliquez sur Sélectionner.

      Vous revenez à l'onglet Détails du panneau Propriétés. Le nom de l'entité de données sélectionnée ou l'expression de modèle d'entité s'affiche en regard de Entité de données. Par exemple : CUSTOMERS_EU.csv, CUSTOMERS* ou CUSTOMERS_${REGION}/*

      Remarque

      Pour une entité de données qui inclut un paramètre dans son nom, vous ne pouvez pas lier la ressource d'entité à un autre paramètre. L'option Affecter un paramètre n'est pas disponible.

    4. Si disponible et applicable, cochez la case Chargement incrémentiel pour identifier et charger uniquement les données créées ou modifiées depuis la dernière exécution du traitement de chargement.

      Pour les ressources de données de fichier telles qu'Object Storage, Data Integration effectue une extraction incrémentielle en fonction de la date de dernière modification (horodatage) des objets sélectionnés dans un dossier ou sélectionnés par un modèle de fichier.

      Par exemple, supposons que le 5 janvier se trouve trois fichiers dans le bucket Object Storage : EMPLOYEE_1.csv, EMPLOYEE_2.csv, EMPLOYEE_3.csv

      Si un travail de chargement est exécuté avec succès le 5 janvier, les trois fichiers sont traités.

      • Le 6 janvier, un nouveau fichier EMPLOYEE_4.csv est ajouté au bucket. Ce fichier a la date de dernière modification (horodatage) du 6 janvier. Si un travail de chargement est exécuté le 6 janvier, seul EMPLOYEE_4.csv est sélectionné et traité pour le chargement incrémentiel des données.
      • Le 6 janvier, un nouveau fichier EMPLOYEE_4.csv est ajouté au bucket. Ce fichier a la date de dernière modification (horodatage) du 6 janvier. Le fichier EMPLOYEE_2.csv est également modifié le 6 janvier. Si un travail de chargement est exécuté le 6 janvier, les fichiers EMPLOYEE_2.csv et EMPLOYEE_4.csv sont récupérés pour traitement.
  6. (Facultatif) Dans l'onglet Détails, sélectionnez l'icône d'actualisation en regard du nom d'entité sélectionné pour vous assurer que vous utilisez les derniers schémas de l'entité au cours de la session de travail en cours dans le concepteur. Seules les métadonnées de l'entité sont extraites, et non les modifications de données réelles.
  7. (Facultatif) Dans l'onglet Options avancées, selon le type de ressource de données de cet opérateur source, vous pouvez sélectionner ou effacer les options applicables.

    Elément Description

    Extraire les métadonnées de fichier en tant qu'attributs

    Cochez la case pour inclure les métadonnées de fichier (comme le nom et la taille de fichier) en tant qu'attributs dans les données renvoyées.

    Les caractères spéciaux (y compris les espaces) dans les noms de fichier ne sont pas pris en charge.

    Autoriser la dérive de schéma

    Par défaut, la dérive de schéma est activée pour permettre à Data Integration de gérer de manière dynamique les modifications de définition de schéma lors de la conception et de l'exécution du flux de données. La dérive de schéma correspond aux modifications apportées aux définitions de schéma dans l'entité de données indiquée. Ces modifications incluent l'ajout et la suppression d'attributs, ainsi que la modification des types de données d'attribut et des noms d'entité.

    Si vous désélectionnez la case Autoriser la dérive de schéma, vous désactivez cette dernière pour verrouiller les définitions de schéma lorsque le flux de données est défini. Lorsque la dérive de schéma est désactivée, Data Integration utilise une forme fixe de l'entité de données spécifiée, même lorsque la forme sous-jacente a changé.

    Si un schéma personnalisé est sélectionné, la dérive de schéma n'est pas applicable et cette option ne peut pas être sélectionnée.

    Traiter le fichier manquant comme vide

    Uniquement pour une ressource de données Object Storage.

    Cette case à cocher est disponible uniquement lorsque l'option Autoriser la dérive de schéma n'est pas sélectionnée.

    Autoriser la propagation

    Par défaut, la propagation est activée pour permettre à Data Integration d'utiliser le système de base de données source et de traiter les opérations de transformation, si le système prend en charge la propagation. Seules les bases de données Oracle, Oracle Autonomous Data Warehouse, Oracle Autonomous Transaction Processing et MySQL prennent en charge la propagation. Moins de données sont extraites de la source lorsque Data Integration utilise le système de base de données source pour traiter les opérations.

    En désélectionnant la case Autoriser la propagation, vous désactivez la propagation. Lorsque la propagation est désactivée, Data Integration extrait toutes les données directement du système source, puis traite les transformations.

    Paramètres de paramètre et d'en-tête

    Uniquement pour une ressource de données REST.

    Utilisez les paramètres Paramètre et En-tête pour configurer d'autres propriétés source.

  8. Dans l'onglet Attributs, affichez les attributs de l'entité de données sélectionnée. Pour une ressource de données Fusion Applications BICC, les attributs sont les colonnes BICC de l'objet vue sélectionné.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (type de données), COMPOSITE ou MAP (type de clé, type de valeur). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  9. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Pour une ressource de données Fusion Applications BICC, seules 10 lignes de données sont affichées.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour un attribut de données complexe, afin d'afficher la hiérarchie de la structure des données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  10. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Utilisation de modèles de fichier

Lors de la configuration d'OCI Object Storage comme source de données, vous pouvez utiliser une expression régulière afin d'indiquer un modèle de fichier permettant de sélectionner des entités de données.

Un modèle de fichier est une règle permettant de rechercher des fichiers qui correspondent à un répertoire et un nom de fichier, et de déterminer comment gérer les fichiers correspondants lorsqu'ils sont trouvés.

Syntaxe à utiliser

Data Integration prend en charge la syntaxe de modèle glob pour spécifier un modèle de fichier.

  • Un astérisque * correspond à n'importe quel nombre de caractères (ou aucun).
  • Deux astérisques, **, fonctionnent de la même manière que *, mais franchissent les limites du répertoire pour correspondre aux chemins complets.
  • Un point d'interrogation ? correspond exactement à un caractère.
  • Les accolades spécifient une collection de sous-modèles. Par exemple :
    • {sun,moon,stars} correspond à "sun", "moon" ou "stars".
    • {temp*,tmp*} correspond à toutes les chaînes commençant par "temp" ou "tmp".
  • Les crochets transmettent un ensemble de caractères uniques ou, lorsque le tiret - est utilisé, une plage de caractères. Par exemple :
    • [aeiou] correspond à n'importe quelle voyelle en minuscules.
    • [0-9] correspond à n'importe quel chiffre.
    • [A-Z] correspond à n'importe quelle lettre majuscule.
    • [a-z,A-Z] correspond à n'importe quelle lettre majuscule ou minuscule.

    Dans les crochets, *, ? et \ correspondent à eux-mêmes.

  • Tous les autres caractères correspondent à eux-mêmes.
  • Pour faire correspondre *, ? ou les autres caractères spéciaux, vous pouvez y ajouter la barre oblique inverse \ comme caractère d'échappement. Par exemple : \\ correspond à une seule barre oblique inverse et \? correspond au point d'interrogation.
Exemples
*.htmlCorrespond à toutes les chaînes qui se terminent par .html
???Correspond à toutes les chaînes avec exactement trois lettres ou chiffres
*[0-9]*Correspond à toutes les chaînes contenant une valeur numérique
*.{htm,html,pdf}Correspond à toutes les chaînes se terminant par .htm, .html ou .pdf
a?*.javaCorrespond à toutes les chaînes commençant par la lettre a suivie d'au moins une lettre ou un chiffre, et se terminant par .java
{foo*,*[0-9]*}Correspond à toutes les chaînes commençant par foo ou contenant une valeur numérique
directory1/20200209/part-*[0-9]*jsonCorrespond à tous les fichiers du dossier dont le nom de fichier commence par part-, contient n'importe quel nombre de chiffres 0-9 et se termine par json
directory3/**.csvCorrespond à tous les fichiers avec l'extension csv figurant dans le dossier directory3 et ses sous-dossiers
directory3/*.csvCorrespond à tous les fichiers avec l'extension csv figurant dans le dossier principal directory3. Les fichiers des sous-dossiers ne sont pas inclus.
Test et utilisation d'un modèle

Vous pouvez tester l'expression pour vous assurer que le modèle que vous voulez utiliser extrait les fichiers Object Storage d'entités de données.

  1. Dans le panneau Sélectionner une entité des données, sélectionnez Parcourir par modèle.

  2. Dans le panneau Parcourir les entités de données par modèle, sélectionnez Tester le modèle dans le menu Actions supplémentaires.

  3. Dans le panneau Tester le modèle, dans le champ Rechercher un modèle, entrez l'expression de modèle à tester avant de l'utiliser.

    Par exemple, entrez department1/2020/*.json pour rechercher tous les fichiers portant l'extension .json du répertoire department1/2020. Vous pouvez utiliser la syntaxe de paramètre ${} dans le champ Modèle de recherche.

  4. Pour tester le modèle de recherche, dans le bloc Noms de fichier de test, indiquez un nom de fichier ou plusieurs noms de fichier séparés par une nouvelle ligne. Par exemple, pour le modèle BANK_C*/*, les noms de fichier peuvent être les suivants :

    BANK_CITY/part-00002-0aaf87d57fbc-c000.csv	
    BANK_COUNTRY/part-00000-a66df3ab02fd-c000.csv
  5. Sélectionnez Tester le modèle.

    Vérifiez que les noms de fichier de test sont renvoyés dans le bloc Nom de fichier obtenu.

  6. Sélectionnez Utiliser un modèle pour ajouter l'expression de modèle au panneau Parcourir le modèle d'entités de données.

    Vous revenez au panneau Naviguer les entités de données par modèle. Les fichiers correspondant à l'expression de modèle sont affichés dans la table.

  7. Cliquez sur Sélectionner un modèle.

    Vous revenez au panneau Sélectionner une entité de données. L'expression de modèle est affichée en regard de entité de données.

    Lorsque vous utilisez une expression de modèle, tous les fichiers existants correspondant au modèle sont supposés présenter la même structure. Les fichiers mis en correspondance sont traités comme une entité unique dans le flux de données. Les nouveaux fichiers futurs correspondant au modèle seront également traités.

Utiliser le chargement incrémentiel géré par Data Integration (BICC)

Le chargement incrémentiel charge uniquement les données nouvelles ou mises à jour d'une source vers une cible. Dans Data Integration, lorsque vous configurez Oracle Fusion Applications BICC en tant que données source, vous pouvez utiliser la stratégie d'extraction incrémentielle gérée pour effectuer un chargement incrémentiel.

Lorsque vous choisissez d'utiliser la stratégie d'extraction incrémentielle, seuls les enregistrements nouveaux ou mis à jour de la source sont extraits en fonction d'une date de dernière extraction. Data Integration fournit deux options de date de la dernière extraction :

  • Personnalisé : vous indiquez une date de dernière extraction pour chaque exécution de tâche.

  • Géré : Data Integration gère la date pour vous en suivant l'horodatage de l'exécution de tâche et en stockant la date du dernier chargement réussi en tant que filigrane sur les exécutions consécutives.

    Avec l'option de date de la dernière extraction gérée par Data Integration, vous n'avez pas besoin d'indiquer explicitement une date pour une exécution de tâche. Vous pouvez toutefois remplacer la date lors de l'exécution.

Exécutions de tâche lancées par une programmation de tâche

Data Integration effectue le suivi d'une exécution de tâche indépendamment d'une exécution de tâche lancée par une programmation de tâche. Par conséquent, si vous utilisez l'option de date de la dernière extraction gérée et que vous configurez également une programmation de tâche, Data Integration effectue automatiquement le suivi de l'horodatage de la dernière exécution de tâche réussie des exécutions planifiées de tâche séparément de l'horodatage de la dernière exécution de tâche réussie des exécutions de tâche qui ne sont pas lancées par une programmation de tâche. Cela signifie que la dernière date gérée dans une programmation de tâche ou la dernière date gérée dans une tâche n'est pas modifiée par l'autre opération d'exécution.

Chargement incrémentiel de différentes entités de données dans un flux de données

Supposons que vous souhaitiez configurer une charge incrémentielle sur différentes entités de données d'un flux de données. Pour ce faire, vous pouvez utiliser des paramètres et créer une programmation de tâche pour chaque entité de données. Voici la procédure générale :

  1. Dans le flux de données, affectez des paramètres pour le schéma source (offre BICC) et l'entité de données (objet vue BICC).
  2. Créez et publiez une tâche d'intégration pour le flux de données paramétré.
  3. Créez une programmation de tâche pour la tâche d'intégration. Sur la page Configurer les paramètres, indiquez les valeurs de schéma et d'entité de données pour la programmation de tâche.
  4. Créez une autre programmation de tâche pour la même tâche d'intégration. Sur la page Configurer les paramètres, définissez les valeurs de schéma et d'entité de données pour cette programmation de tâche.
Chargement incrémentiel plusieurs fois dans une journée

Pour effectuer un chargement incrémentiel plusieurs fois par jour, ajoutez un opérateur de filtre immédiatement après l'opérateur source BICC dans le flux de données. Créez ensuite une expression de condition pour filtrer les données qui ont déjà été traitées. Par exemple, si la colonne last_update_date de l'objet vue BICC est LastUpdateDateField, l'expression peut être la suivante :

FILTER_1.MYSOURCE_1.LastUpdateDateField > ${SYS.LAST_LOAD_DATE}

Opérateur cible

Utilisez l'opérateur cible pour indiquer les entités de données qui servent de sorties pour le stockage des données transformées.

Ajout et configuration d'un opérateur cible

Vous pouvez ajouter plusieurs opérateurs cible à un flux de données. Chaque cible ne peut comporter qu'un seul port entrant.

Important

Si vous utilisez une entité de données hiérarchiques pour un opérateur cible, reportez-vous à Types de données hiérarchiques pour savoir ce qui est pris en charge. Vous ne pourrez peut-être pas effectuer certaines configurations dans les onglets Attributs, Mettre en correspondance et Données du panneau Propriétés.
  1. Faites glisser un opérateur Cible du panneau Opérateurs vers le canevas.
  2. Lorsque l'opérateur cible est sélectionné, effectuez les opérations suivantes dans l'onglet Détails du panneau Propriétés :

    Elément Description

    Identifiant

    Entrez le nom de l'opérateur cible ou conservez le nom par défaut.

    Créer une entité de données

    (Facultatif) Cochez la case pour créer une entité sur la cible, au lieu de mettre à jour une entité existante sur la cible. Dans une étape suivante, vous serez invité à saisir le nom de l'entité de données à créer sur la cible.

    Ne cochez pas la case si vous souhaitez utiliser une entité de données existante comme cible. Vous êtes invité à sélectionner l'entité de données après avoir sélectionné la ressource de données cible, la connexion et le schéma.

    Ressource de données

    Connexion

    Schéma ou Bucket

    Dans l'ordre des ressources présenté, cliquez sur Sélectionner en regard de la ressource pour sélectionner la ressource de données, la connexion, le schéma ou le bucket.

    Tenez compte des points suivants :

    • Tous les types de source de données ne sont pas disponibles en tant que ressources de données cible. Par exemple, PostgreSQL et Hive ne sont pas disponibles en tant que cibles.

    • Pour la stratégie d'intégration de fusion, vous ne pouvez pas utiliser une ressource de données Object Storage comme cible.

    • Si vous utilisez une ressource de données Object Storage, sélectionnez d'abord le compartiment, puis le bucket.

    • Pour utiliser Autonomous Data Warehouse ou Autonomous Transaction Processing en tant que cible, vous avez besoin d'un bucket Object Storage comme emplacement intermédiaire. Si vous sélectionnez une ressource de données pour laquelle aucun emplacement intermédiaire par défaut n'est spécifié dans cette ressource de données, Data Integration affiche une notification d'avertissement. Lorsque vous voyez la notification, choisissez l'une des options suivantes :
      • Sélectionnez Mettre à jour la ressource de données pour ajouter un emplacement intermédiaire par défaut à cette ressource de données.
      • Cliquez sur Sélectionner en regard de Emplacement de préparation dans le panneau Propriétés pour sélectionner la ressource de données Object Storage contenant le bucket à utiliser pour la préparation.
      Le droit d'accès à la demande PAR_MANAGE est requis. Pour plus d'informations, reportez-vous à l'étape 5.

    Entité de données

    Si vous avez sélectionné la case Créer une entité de données, entrez le nom de l'entité à créer en tant que cible. Pour plus d'informations, reportez-vous à l'étape 3.

    Si vous n'avez pas coché la case Créer une entité de données, sélectionnez une entité de données existante comme cible. Pour plus d'informations, reportez-vous à l'étape 4.

    (Uniquement pour les ressources de données de type Autonomous Data Warehouse ou Autonomous Transaction Processing)

    Emplacement intermédiaire

    Data Integration utilise l'emplacement de préparation pour préparer les données avant de les charger vers la cible.

    Pour plus d'informations, reportez-vous à l'étape 5.

    Stratégie d'intégration

    La façon dont les données sont déplacées vers l'entité de données cible dépend de la stratégie d'intégration que vous choisissez. Les options disponibles sont :

    • Insérer : insère de nouveaux enregistrements ou ajoute les enregistrements lorsque les données existent sur la cible.

      Si la case Créer une entité de données est cochée, l'option de stratégie uniquement disponible pour sélection est Insérer.

    • Ecraser : effectue une troncation sur la cible avant d'insérer les nouveaux enregistrements.

      Si vous sélectionnez la stratégie d'annulation, vous ne pouvez pas créer d'entité de données pour l'entité cible.

    • Fusionner : Insère de nouveaux enregistrements et fusionne des enregistrements existants dans une entité de données existante.

      Lors de l'utilisation de la stratégie de fusion, tenez compte des points suivants :

      • La stratégie de fusion est disponible uniquement pour les cibles de base de données. Vous ne pouvez pas utiliser une ressource de données Object Storage en tant que cible si vous voulez utiliser cette stratégie d'intégration.

      • La clé Merge identifie l'attribut ou les attributs pour déterminer les lignes existantes ou les nouvelles lignes à mettre à jour ou à insérer. Vous pouvez sélectionner une clé primaire/unique ou une clé secondaire comme clé de fusion.

        Cliquez sur Sélectionner ou Modifier. Dans le panneau Clé de fusion, effectuez l'une des actions suivantes :

        • Sélectionnez Attributs de clé primaire/unique et sélectionnez une clé.
        • Sélectionnez Autres attributs pour utiliser d'autres attributs (non principaux). Entrez le nom de la clé de fusion et sélectionnez les attributs dans la liste.
      • Si une entité de données cible paramétrée est configurée pour utiliser la stratégie Fusionner, vous pouvez modifier la sélection de clé Fusionner :
        • Dans une tâche d'intégration lors de la conception et de l'exécution
        • Dans une tâche d'intégration dans un pipeline au moment de la conception et à l'exécution (tâche de pipeline)
        • Dans une programmation de tâche (tâche d'intégration et tâche de pipeline)

    (Pour Object Storage uniquement)

    Créer une sortie en tant que fichier unique

    Cette étape est facultative pour les cibles Object Storage.

    Cochez la case Créer une sortie en tant que fichier unique pour écrire la sortie dans un fichier unique, sinon l'opération crée plusieurs fichiers. Le fichier de sortie unique est écrasé à chaque exécution de la tâche.

    La création d'un seul fichier de sortie peut avoir une incidence sur les performances de Data Integration. N'utilisez pas l'option de fichier de sortie unique pour les ensembles de données volumineux.

    Vous pouvez choisir d'écrire la sortie dans un seul fichier uniquement si l'une des conditions suivantes s'applique :

    • La stratégie d'intégration est Insérer et la case Créer une entité de données est cochée. N'ajoutez pas de barre oblique (/) à la fin du nom de la nouvelle entité. Pour plus d'informations, reportez-vous à l'étape 3.
    • La stratégie d'intégration est Ecraser et vous utilisez une entité de données existante (la case Créer une entité de données n'est pas cochée). Sélectionnez une entité de données existante sans barre oblique (/) à la fin de son nom. Pour plus d'informations, reportez-vous à l'étape 4.
  3. Si vous avez sélectionné la case Créer une entité de données, entrez le nom de l'entité à créer. L'entité de données est créée uniquement si le nom n'existe pas.

    Reportez-vous également à Paramètres dans les noms d'entité de données si vous voulez utiliser un paramètre pour une partie du nom de la nouvelle entité.

    En fonction du type de ressource de données, tenez compte des points suivants lorsque vous entrez un nom pour l'entité de données :

    Type de cible Description

    Pour Oracle Database, Autonomous Data Warehouse ou Autonomous Transaction Processing

    Entrez le nom de la nouvelle entité de données.

    Lors de la création d'une entité de données de base de données en tant que sortie cible, si le nom d'entité que vous indiquez n'existe pas, une entité de données est créée et des données sont insérées dans la sortie. Si le nom d'entité que vous fournissez existe, le résultat de l'opération dépend de la forme de la cible dans le flux de données et de la forme de l'entité existante.

    La forme est basée sur le nombre et les noms d'attributs, de types de données et de caractéristiques de type telles que la longueur et la précision, et sur la présence ou non de données. Par exemple, le type de données varchar2(4000) n'est pas la même forme que varchar2(2000), même si le nom d'attribut sur la cible de flux de données est identique au nom de l'attribut sur l'entité de données existante.

    • Si la forme de l'entité cible dans le flux de données est identique à celle de l'entité existante, l'opération de base de données :
      • insère des données si aucune donnée n'est présente,
      • met à jour ou insère des données si des données sont présentes.
    • Si la forme de l'entité cible dans le flux de données n'est pas la même que celle de l'entité existante :
      • L'opération ajoute l'attribut à l'entité existante lorsque le nom d'attribut n'existe pas.

        Par exemple, la cible sur le flux de données possède l'attribut EMPLOYEE_ID NUMBER(10), mais EMPLOYEE_ID NUMBER n'est pas présent dans l'entité existante.

      • Lorsque le nom d'attribut est présent dans l'entité existante, mais que la forme du type de données n'est pas la même :
        • Lorsque des données d'attribut sont présentes, l'opération de base de données échoue lorsque la forme de données est plus petite. Par exemple, lorsque la cible sur le flux de données comporte EMPLOYEE_COMMENTS VARCHAR2(4000) et que l'entité existante comporte EMPLOYEE_COMMENTS VARCHAR2(2000), l'opération échoue. Lorsque la cible sur le flux de données comporte EMPLOYEE_COMMENTS VARCHAR2(2000) et que l'entité existante comporte EMPLOYEE_COMMENTS VARCHAR2(4000), l'opération aboutit.

        • En l'absence de données d'attribut, l'opération modifie l'attribut et insère des données.

          Si la cible est une base de données autonome, vous pouvez rencontrer l'erreur de base de données ORA-22859: invalid modification of columns lors d'une tentative de modification d'un objet de colonne, REF, VARRAY, d'une table imbriquée ou d'une colonne de type LOB. Créez une colonne du type qui vous intéresse et copiez les données de colonne vers le nouveau type à l'aide du constructeur de type approprié.

    Notez également que la conversion entre TEXT et CLOB n'est pas prise en charge dans Data Integration. Avec la limite de 4000 octets pour une colonne VARCHAR2 dans une base de données autonome, vous devrez peut-être utiliser une entité de données cible existante dotée d'un type de données CLOB au lieu de cocher la case Créer une entité de données dans certains cas d'emploi.

    Pour Object Storage

    Entrez le nom de la nouvelle entité de données, suivi d'une barre oblique (/). Par exemple, entrez newdirectory/.

    Toutefois, si vous cochez la case Créer une sortie en tant que fichier unique car vous voulez créer une sortie à fichier unique, entrez le nom de la nouvelle entité sans barre oblique (/) à la fin.

    Lors de l'écriture de la sortie dans un seul fichier, vous pouvez inclure des paramètres dans le nom du fichier à l'aide de la syntaxe ${PARAMETER_NAME}. Par exemple, le nom du fichier peut être écrit comme suit :

    /bucket1/file_${REGION}.csv
    /bucket1/file_${CURRENT_DATE}.csv

    Sélectionnez également le type de fichier et le type de compression. Les types de compression disponibles pour sélection dépendent du type de fichier que vous choisissez. Si vous ne connaissez pas la méthode de compression utilisée pour compresser le fichier, sélectionnez Aucun (par défaut).

    Pour les types de fichier CSV et JSON, l'encodage par défaut est UTF-8 et ne peut pas être modifié.

    Si vous choisissez le type de fichier CSV, les autres paramètres que vous pouvez configurer sont les suivants :

    • Si la première ligne du fichier est une ligne d'en-tête, sélectionnez Oui pour A un en-tête.
    • Si les valeurs des lignes de données s'étendent sur plusieurs lignes, sélectionnez Oui pour Multi-ligne.
    • Indiquez le caractère d'échappement des autres caractères trouvés dans les valeurs de données. Par exemple : \.
    • Sélectionnez le caractère déliimitre qui sépare les champs de données. Par exemple : COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) ou TAB (\t).
    • Si un séparateur de colonne est inclus à la fin d'une ligne de données dans le fichier, sélectionnez Oui pour Délimiteur de fin.
    • Indiquez le type de guillemet qui traite les autres caractères comme des caractères littéraux. Par exemple : "
  4. Si vous n'avez pas coché la case Créer une entité de données, sélectionnez une entité de données existante.

    Pour vous assurer que vous utilisez les derniers schémas de l'entité pendant la session de travail en cours dans le concepteur, sélectionnez l'icône d'actualisation en regard du nom de l'entité. Seules les métadonnées de l'entité sont extraites, et non les modifications de données réelles.

    En fonction du type de ressource de données, tenez compte des points suivants lors de la configuration de l'utilisation d'une entité de données existante :

    Type de cible Description

    Pour Object Storage

    Cochez la case Créer une sortie en tant que fichier unique pour utiliser un seul fichier de sortie, sinon l'opération crée plusieurs fichiers. Le fichier de sortie unique est écrasé à chaque exécution de la tâche.

    La création d'un seul fichier de sortie peut avoir une incidence sur les performances de Data Integration. N'utilisez pas l'option de fichier de sortie unique pour les ensembles de données volumineux.

    Si la case Créer une sortie en tant que fichier unique est cochée : lors de la sélection de l'entité de données, sélectionnez un nom d'entité qui ne comporte pas de barre oblique (/) à la fin.

    Sélectionnez le type de fichier. Si le type de fichier est CSV, vous pouvez sélectionner Aperçu des données brutes pour afficher les 10 premières lignes du fichier.

    Sélectionnez le type de compression. Les types de compression disponibles pour sélection dépendent du type de fichier que vous choisissez. Si vous ne connaissez pas la méthode de compression utilisée pour compresser le fichier, sélectionnez Aucun (par défaut).

    Pour les types de fichier CSV et JSON, l'encodage par défaut est UTF-8 et ne peut pas être modifié.

    Si le type de fichier est CSV, d'autres paramètres que vous pouvez configurer sont les suivants :

    • Si la première ligne du fichier est une ligne d'en-tête, sélectionnez Oui pour A un en-tête.
    • Si les valeurs des lignes de données s'étendent sur plusieurs lignes, sélectionnez Oui pour Multi-ligne.
    • Indiquez le caractère d'échappement des autres caractères trouvés dans les valeurs de données. Par exemple : \.
    • Sélectionnez le caractère déliimitre qui sépare les champs de données. Par exemple : COLON (:), COMMA (,), PIPE (|), SEMICOLON (;) ou TAB (\t).
    • Si un séparateur de colonne est inclus à la fin d'une ligne de données dans le fichier, sélectionnez Oui pour Délimiteur de fin.
    • Indiquez le caractère de guillemet qui traite les autres caractères comme des caractères littéraux. Par exemple : "

    Si le type de fichier est JSON, sélectionnez Utiliser un schéma personnalisé pour coller ou télécharger un exemple de schéma personnalisé utilisé pour inférer la forme d'entité.

    • Si vous sélectionnez Télécharger vers le serveur, supprimez un fichier de schéma personnalisé dans la zone indiquée ou cliquez sur Sélectionner un fichier pour sélectionner le fichier de schéma à télécharger.

    • Si vous sélectionnez Coller dans le schéma, copiez le contenu du fichier texte du schéma et collez-le dans la zone indiquée.

  5. Pour Autonomous Data Warehouse ou Autonomous Transaction Processing, sélectionnez l'emplacement de préparation si aucun emplacement par défaut n'est défini pour la ressource ou modifiez l'emplacement pour qu'il utilise un autre emplacement de préparation.
    Remarque

    Si la cible est Autonomous Data Warehouse ou Autonomous Transaction Processing, l'option d'emplacement de préparation est activée pour que vous puissiez sélectionner un bucket Object Storage. Data Integration utilise l'emplacement de préparation pour préparer les données avant de les charger vers la cible.

    Si la ressource de données cible est configurée avec un emplacement de préparation par défaut, Data Integration utilise automatiquement ce bucket pour la préparation, sauf si vous modifiez explicitement la valeur pour indiquer un autre emplacement de préparation.

    Pour utiliser Autonomous Data Warehouse ou Autonomous Transaction Processing en tant que cible, vous devez d'abord activer le droit d'accès de demande PAR_MANAGE sur le bucket de préparation. Par exemple :

    allow any-user to manage buckets in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.permission='PAR_MANAGE', request.principal.id='<workspace-ocid>'}

    En savoir plus sur l'utilisation des demandes pré-authentifiées.

    1. Pour Emplacement de préparation, cliquez sur Sélectionner ou sur Modifier.
    2. (En cas de modification) Dans le panneau Sélectionner un emplacement de préparation, ne cochez pas la case Utiliser les paramètres d'emplacement de préparation par défaut si vous voulez sélectionner un autre emplacement de préparation.
    3. Sélectionnez le menu de ressource de données et sélectionnez une ressource de données Object Storage.
    4. Sélectionnez ensuite la connexion, le compartiment et le bucket, puis cliquez sur Sélectionner.
  6. (Facultatif) Dans l'onglet Options avancées, selon le type de ressource de données de cet opérateur cible, vous pouvez entrer des valeurs ou utiliser des valeurs par défaut.

    Elément Description

    Limite de rejet

    Pour Autonomous Data Warehouse ou Autonomous Transaction Processing

    Entrez une valeur.

    Vous pouvez indiquer le nombre maximal de lignes erronées impossibles à charger vers la cible avant de déclencher l'échec de la tâche d'intégration. Par exemple, si la source de données contient 1 000 lignes et que vous définissez la limite de rejet sur 200, la tâche échoue immédiatement après le rejet de la 200e ligne erronée.

    Si vous n'indiquez pas de valeur, la valeur par défaut est zéro, ce qui signifie que la tâche échoue lorsque la première ligne erronée est rejetée.

    En cas d'échec d'une tâche, consultez les journaux pour connaître le nom des tables dans lesquelles les lignes ont été rejetées. Interrogez ensuite les tables et les lignes concernées dans la base de données autonome.

    Ordre de chargement

    Entrez une valeur.

    Seuls les entiers positifs sont autorisés. La valeur par défaut est 0. L'ordre de chargement indique l'ordre des noeuds cible dans lesquels charger les données. La cible avec la valeur 0 est chargée en premier, puis la cible avec la valeur 1, etc. Si plusieurs noeuds présentent la même valeur, les cibles sont chargées dans un ordre quelconque.

  7. Dans l'onglet Attributs, vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs par modèle de nom ou type d'attribut. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (type de données), COMPOSITE ou MAP (type de clé, type de valeur). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  8. Dans l'onglet Données, affichez un échantillon des données en fonction des règles que vous avez appliquées dans l'onglet Attributs. Aucune transformation ne peut être appliquée sur un opérateur cible car les données sont en lecture seule.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  9. Dans l'onglet Mettre en correspondance, indiquez la façon dont les attributs entrants mettent en correspondance avec les attributs de l'entité de données cible. Notez que les attributs de mise en correspondance ne sont pas applicables si vous avez coché la case Créer une entité de données.

    Pour les entités cible avec des types de données hiérarchiques, seuls les champs de premier niveau peuvent être mis en correspondance. Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge.

  10. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.

    Data Integration vérifie et fournit des avertissements dans les situations suivantes :

    • La troncature des données peut se produire lorsque les données sont chargées à partir des attributs source vers les attributs cible mappés.
    • Le type de données d'un attribut source ne correspond pas à celui de l'attribut mis en correspondance.
Affichage des données

L'onglet Données affiche les données transformées en fonction des opérateurs appliqués au flux de données.

Important

Si vous utilisez une entité de données hiérarchiques pour un opérateur cible, reportez-vous à Types de données hiérarchiques pour savoir ce qui est pris en charge.

Vous pouvez filtrer les données de l'entité cible par modèle de nom ou par type de données. Pour filtrer les données par modèle de nom, entrez un modèle d'expression régulière simple ou des caractères génériques ? et * dans le champ Filtrer par modèle. Pour filtrer les données par type, sélectionnez le type de données dans le menu en regard du champ de modèle.

Aucune transformation ne peut être appliquée à l'opérateur cible car les données sont en lecture seule.

Attributs de mapping

L'onglet Mettre en correspondance est disponible uniquement pour un opérateur cible.

Important

Si vous utilisez une entité de données hiérarchiques pour un opérateur cible, reportez-vous à Types de données hiérarchiques pour savoir ce qui est pris en charge.

Lorsque vous créez une entité de données cible, l'onglet Mettre en correspondance est indisponible. Les attributs entrants sont utilisés pour créer la structure de table ou de fichier avec une correspondance 1 à 1.

Lorsque vous utilisez une entité de données cible existante, mettez en correspondance les attributs entrants avec les attributs de l'entité de données cible. Vous pouvez effectuer les actions suivantes :

Mettre en correspondance par position

Met en correspondance les attributs entrants avec les attributs d'entité cible en fonction de leur position dans les listes.

Dans le menu Actions, sélectionnez Mettre en correspondance automatiquement par position. La règle Mettre en correspondance automatiquement par position est ajoutée.

Mapper par nom

Met en correspondance les attributs entrants avec les attributs cible du même nom.

Dans le menu Actions, sélectionnez Mettre en correspondance automatiquement par nom. La règle Mettre en correspondance automatiquement par nom est ajoutée.

Mettre en correspondance par modèle

Met en correspondance les attributs entrants avec les attributs cible en fonction de règles d'expression régulière simples définies par l'utilisateur.

Dans le menu Actions, sélectionnez Mise en correspondance par modèle. Entrez un modèle source et un modèle cible. Sélectionnez ensuite le mapping Aperçu pour tester les modèles source et cible.

Pour définir un modèle, vous pouvez utiliser un astérisque (*) et un point d'interrogation ( ?). Utilisez l'astérisque pour indiquer un caractère générique représentant n'importe quel nombre de caractères dans un modèle de chaîne. Utilisez un point d'interrogation pour indiquer un caractère générique unique. Par exemple, *INPUT? met en correspondance tout attribut correspondant commençant par un nombre n de caractères, contenant la chaîne INPUT suivie d'un seul caractère, tel que NEWINPUTS.

Par défaut, la correspondance de modèle n'est pas sensible à la casse. Par exemple, le modèle source *Name correspond au nom de cible CUSTOMER_NAME et Customer_Name.

Pour indiquer différents groupes de capture, utilisez $n. Par exemple, supposons que vous vouliez mettre en correspondance LAST_NAME, FIRST_NAME et USERNAME à partir d'un opérateur source ou en amont avec TGT_LAST_NAME, TGT_FIRST_NAME et TGT_USERNAME dans l'entité de données cible. Entrez *NAME dans le champ Modèle de source et TGT_$1 dans le champ Modèle cible. L'astérisque (*) dans *NAME signifie que la chaîne de caractères avant NAME doit être identique à la chaîne de caractères trouvée dans $1 pour le modèle cible. $1 fait référence au premier groupe de capture dans le modèle source, qui est dans ce cas l'astérisque (*).

Dans les cas où vous avez besoin d'une correspondance de modèle sensible à la casse, ajoutez le préfixe (?c) au modèle source. Par exemple, supposons que vous souhaitiez mettre en correspondance l'attribut source CustomerName, qui utilise une majuscule de chameau dans son nom, avec l'attribut cible portant le nom Customer_Name. Vous devez entrer (?c)([A-Z][a-z]+)([A-Z][a-z]+) en tant que modèle source et $1_$2 en tant que modèle cible. Lorsque le préfixe (?c) est ajouté au début d'un modèle source, la correspondance de modèle sensible à la casse est activée pour le mapping. Data Integration détecte que le "N" dans CustomerName est le début d'un nouveau modèle et traite donc ([A-Z][a-z]+)([A-Z][a-z]+) comme deux mots différents (groupes de capture) lors de la mise en correspondance.

Correspondance manuelle directe

Faites glisser un attribut entrant de la liste source vers un attribut de la liste cible pour créer une correspondance.

Vous pouvez également sélectionner Correspondance manuelle dans le menu Actions. Ensuite, utilisez la boîte de dialogue Mettre en correspondance l'attribut pour créer une correspondance en sélectionnant un attribut source et un attribut cible.

Suppression d'une correspondance

Enlève la correspondance sélectionnée.

Sélectionnez Afficher les règles. Dans le panneau Règles, sélectionnez des règles et sélectionnez Enlever. Vous pouvez également sélectionner Enlever dans le menu Actions (Menu Actions) d'une règle pour effacer cette règle.

Supprimer toutes les correspondances

Enlève toutes les correspondances.

Dans le menu Actions, sélectionnez Réinitialiser les correspondances. Toutes les règles de mise en correspondance automatique et manuelle sont enlevées.

Opérateurs de mise en forme

Important

Pour les types de données complexes, reportez-vous à Types de données hiérarchiques pour savoir ce qui est pris en charge. Vous ne pourrez peut-être pas effectuer certaines configurations dans l'onglet Attributs et l'onglet Données du panneau Propriétés.

Opérateur de filtre

Utilisez l'opérateur de filtre pour sélectionner un sous-ensemble de données du port entrant afin de passer au port sortant en aval en fonction d'une condition de filtre.

Ajout et configuration d'un opérateur de filtre
  1. Faites glisser un opérateur Filtrer du panneau Opérateurs vers le canevas.
  2. Avec le focus sur l'opérateur de filtre, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. En regard de Condition de filtre, sélectionnez Créer.
  4. Dans le panneau Créer une condition de filtre, dans la section Générateur de condition, vous pouvez cliquer deux fois sur des attributs, des paramètres et des fonctions, ou les faire glisser pour les ajouter à l'éditeur afin de créer une condition. Vous pouvez également entrer une expression de condition manuellement dans l'éditeur et valider l'expression.
    Remarque

    Dans l'éditeur, un élément ajouté tel qu'une fonction peut comporter des espaces réservés. Pour remplacer un espace réservé par un autre élément, mettez en surbrillance l'espace réservé, puis cliquez deux fois sur un autre élément de la liste.
  5. Sélectionnez Create (Créer).
  6. (Facultatif) Sélectionnez Affecter des paramètres pour utiliser des paramètres afin que la condition de filtre ne soit pas liée au code compilé lorsque vous publiez le flux de données. Reportez-vous à Affectation d'un paramètre.
  7. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  8. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  9. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Création d'une condition de filtre

Utilisez le générateur de condition pour sélectionner visuellement des éléments afin de créer une condition de filtre. Vous pouvez également entrer une condition de filtre manuellement dans l'éditeur.

La création d'une condition de filtre permet de sélectionner un sous-ensemble de données à partir d'un opérateur en amont en fonction de la condition.

Les éléments que vous pouvez utiliser dans une condition de filtre sont les fonctions, attributs et paramètres entrants. Vous pouvez cliquer deux fois sur un élément de la liste ou le faire glisser pour l'ajouter à l'éditeur afin de créer une condition. Vous pouvez valider la condition avant de la créer.

La zone Entrant affiche les attributs de l'opérateur en amont qui arrivent dans cet opérateur de filtre.

Par exemple, pour filtrer les données sur le nom de ville, vous pouvez créer l'expression de condition comme suit :

FILTER_1.ADDRESSES.CITY='Redwood Shores'

Les Paramètres sont les paramètres d'expression qui ont été ajoutés au flux de données à l'aide du générateur de condition (opérateurs de filtre, de jointure, de recherche et de fractionnement) ou du générateur d'expressions (opérateurs d'expression et d'agrégation. Un paramètre d'expression possède un nom, un type et une valeur par défaut. Reportez-vous à Ajout d'un paramètre d'expression.

Supposons que vous voulez utiliser un paramètre pour le nom de la ville dans la condition de filtre. Vous pouvez créer un paramètre VARCHAR portant le nom P_VARCHAR_CITY et définir la valeur par défaut sur Redwood Shores. Vous pouvez ensuite créer l'expression de filtre comme suit :

FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY

Les fonctions sont les fonctions disponibles dans Data Integration que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur les arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir des arguments.

Par exemple, pour filtrer les données par nom de ville ou par population, vous pouvez utiliser la fonction OR afin de créer l'expression de condition de filtre comme suit :

FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>100000000
FILTER_1.COUNTRIES.CITY=$P_VARCHAR_CITY OR FILTER_1.COUNTRIES.POPULATION>$P_NUMERIC

Voici la liste des fonctions que vous pouvez ajouter lorsque vous construisez des conditions :

Fonctions de hachage
FonctionDescriptionExemple
MD5(all data types)Calcule un checksum MD5 du type de données et renvoie une valeur de chaîne. MD5(column_name)
SHA1(all data types)Calcule une valeur de hachage SHA-1 du type de données et renvoie une valeur de chaîne. SHA1(column_name)
SHA2(all data types, bitLength)Calcule une valeur de hachage SHA-2 du type de données et renvoie une valeur de chaîne. bitLength est un entier. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcule une valeur de hachage pour expr et renvoie une valeur NUMBER.

expr peut être une expression, une colonne ou un littéral.

max_bucket est la valeur de bucket maximale renvoyée, comprise entre 0 et 4294967295 (valeur par défaut).

seed_value est une valeur comprise entre 0 (valeur par défaut) et 4294967295.

Oracle applique la fonction de hachage à la combinaison de expr et seed_value afin de produire de nombreux résultats différents pour le même ensemble de données.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Fonctions arithmétiques
FonctionDescriptionExemple
ABS(numeric)Renvoie la puissance absolue de la valeur numeric.ABS(-1)
CEIL(numeric)Renvoie l'entier le plus petit qui n'est pas supérieur à la valeur numericCEIL(-1,2)
FLOOR(numeric)Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numericFLOOR(-1,2)
MOD(numeric1, numeric2)Renvoie le reste après que numeric1 est divisé par numeric2.MOD(8,2)
POWER(numeric1, numeric2)Place numeric1 comme puissance de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Renvoie numeric1 arrondi à numeric2 décimales.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Renvoie numeric1 tronqué à numeric2 décimales.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Convertit une valeur expr en nombre, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format pris en charge :

  • 0 : chiffre
  • # : chiffre (zéro affiché comme absent)
  • . : espace réservé pour le séparateur décimal
  • , : espace réservé pour le séparateur de groupes
  • E : sépare la mantisse et l'exposant pour les formats exponentiels
  • - : préfixe négatif par défaut
  • ¤ : signe de devise ; remplacé par le symbole de devise ; s'il est double, remplacé par le symbole de devise internationale ; s'il est présent dans un modèle, le séparateur décimal monétaire est utilisé à la place du séparateur décimal

TO_NUMBER('5467.12') returns renvoie 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') renvoie -45677.7

Fonctions de date et d'heure
Fonction Description Exemple
CURRENT_DATE Renvoie la date actuelle. CURRENT_DATErenvoie la date du jour, par exemple 2023-05-26
CURRENT_TIMESTAMP Renvoie la date et l'heure en cours du fuseau horaire de la session. CURRENT_TIMESTAMP renvoie la date du jour et l'heure actuelle, par exemple 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Renvoie la date qui correspond au nombre (number) de jours indiqué après la valeur date spécifiée. DATE_ADD('2017-07-30', 1) renvoie 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formate une valeur expr de date, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format de date pris en charge :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') renvoie '2020-10-11'. Le premier argument est un objet Date représentant le 11 octobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') renvoie '2018/junio/17'

DAYOFMONTH(date) Renvoie le jour de la date dans le mois. DAYOFMONTH('2020-12-25') renvoie 25
DAYOFWEEK(date) Renvoie le jour de la date dans la semaine. DAYOFWEEK('2020-12-25') renvoie 6 pour vendredi. Aux États-Unis, dimanche est considéré comme 1, lundi est 2, et ainsi de suite.
DAYOFYEAR(date) Renvoie le jour de la date dans l'année. DAYOFYEAR('2020-12-25') renvoie 360
WEEKOFYEAR(date) Renvoie la semaine de la date dans l'année.

WEEKOFYEAR('2022-07-28') renvoie 30

WEEKOFYEAR('2022-07-28 13:24:30') renvoie 30

HOUR(datetime) Renvoie la valeur d'heure de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 15
LAST_DAY(date) Renvoie le dernier jour du mois de la date. LAST_DAY('2020-12-25') renvoie 31
MINUTE(datetime) Renvoie la valeur de minute de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 10
MONTH(date) Renvoie la valeur de mois de la date. MONTH('2020-06-25') renvoie 6
QUARTER(date) Renvoie le trimestre de l'année correspondant à la date. QUARTER('2020-12-25') renvoie 4
SECOND(datetime) Renvoie la valeur de seconde de la date et de l'heure. SECOND('2020-12-25 15:10:30') renvoie 30
TO_DATE(string, format_string[, localeStr]) Analyse l'expression de chaîne avec l'expression format_string pour générer une date. L'environnement local est facultatif. La valeur par défaut est en-US. Balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les chaînes de format distinguant les minuscules des majuscules prises en charge sont les suivantes :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') renvoie la valeur Date 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') renvoie la valeur Date 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Convertit une valeur expr VARCHAR en valeur TIMESTAMP, en fonction des éléments format_string et localeStr (facultatif) fournis.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') renvoie un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020
WEEK(date)

Renvoie la valeur de semaine de la date.

WEEK('2020-06-25') renvoie 4
YEAR(date) Renvoie la valeur d'année de la date. YEAR('2020-06-25') renvoie 2020
ADD_MONTHS(date_expr, number_months) Renvoie la date après ajout du nombre de mois spécifié à la date, à la chaîne ou à l'horodatage spécifié avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) renvoie 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) renvoie 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Renvoie le nombre de mois entre start_date_expr et end_date_expr. start_date_expr et end_date_expr peuvent être des dates, des horodatages ou des chaînes avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Un nombre entier est renvoyé si les deux dates sont le même jour du mois ou le dernier jour de leurs mois respectifs. Sinon, la différence est calculée sur la base de 31 jours par mois.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') renvoie 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') renvoie 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') renvoie 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interprète une date, un horodatage ou une chaîne en temps UTC, converti ensuite en horodatage dans le fuseau horaire spécifié.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Convertit une date, un horodatage ou une chaîne dans le fuseau horaire spécifié en horodatage UTC.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Convertit la période ou l'heure UNIX spécifiée en chaîne qui représente l'horodatage correspondant dans le fuseau horaire système en cours et dans le format spécifié.

Remarque : l'heure Unix est le nombre de secondes qui s'est écoulé depuis le 1er janvier 1970 à 00:0:00 UTC.

Si fmt est omis, le format par défaut est yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) renvoie '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) renvoie '2021-11-18 10:07:34'

Le fuseau horaire par défaut est PST dans les exemples

UNIX_TIMESTAMP([time_expr[, fmt]])

Convertit l'heure en cours ou spécifiée en horodatage Unix en secondes.

time_expr est une date, un horodatage ou une chaîne avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Si time_expr n'est pas fourni, l'heure en cours est convertie.

Si time_expr est une chaîne et que fmt est omis, la valeur par défaut est yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') renvoie 28800

Le fuseau horaire par défaut est PST dans cet exemple

INTERVAL 'year' YEAR[(year_precision)]

Renvoie une période en années.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '1' YEAR renvoie un intervalle de 1 an

INTERVAL '200' YEAR(3) renvoie un intervalle de 200 ans

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Renvoie une période en années et en mois. Permet de stocker une période à l'aide des champs year et month.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '100-5' YEAR(3) TO MONTH renvoie un intervalle de 100 ans et 5 mois. Vous devez indiquer une précision de 3 pour l'année de début.
INTERVAL 'month' MONTH[(month_precision)]

Renvoie une période en mois.

month_precision est le nombre de chiffres du champ mois ; il varie de 0 à 9. Si month_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '200' MONTH(3) renvoie un intervalle de 200 mois. Vous devez indiquer une précision de 3 pour le mois.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en jours, heures, minutes et secondes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) renvoie un intervalle de 11 jours, 10 heures, 9 minutes, 8 secondes et 555 millièmes de seconde
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en jours, heures et minutes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '11 10:09' DAY TO MINUTE renvoie un intervalle de 11 jours, 10 heures et 9 minutes
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Renvoie une période en jours et heures.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '100 10' DAY(3) TO HOUR renvoie un intervalle de 100 jours et 10 heures
INTERVAL 'day' DAY[(day_precision)]

Renvoie une période en jours.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

INTERVAL '999' DAY(3) renvoie un intervalle de 999 jours
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en heures, minutes et secondes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) renvoie un intervalle de 9 heures, 8 minutes et 7,6666666 secondes
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en heures et minutes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '09:30' HOUR TO MINUTE renvoie un intervalle de 9 heures et 30 minutes
INTERVAL 'hour' HOUR[(hour_precision)]

Renvoie une période en heures.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '40' HOUR renvoie un intervalle de 40 heures
INTERVAL 'minute' MINUTE[(minute_precision)]

Renvoie une période en minutes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '15' MINUTE renvoie un intervalle de 15 minutes
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en minutes et secondes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '15:30' MINUTE TO SECOND renvoie un intervalle de 15 minutes et 30 secondes
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Renvoie une période en secondes.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire du champ second ; il est compris entre 0 et 9. La valeur par défaut est 3.

INTERVAL '15.678' SECOND renvoie un intervalle de 15,678 secondes
Fonctions analytiques
Fonction Description Exemple
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Renvoie la valeur évaluée à la ligne qui est la première ligne du cadre de la fenêtre. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la première valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné avant la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) renvoie la valeur BANK_ID de la deuxième ligne avant la ligne en cours, partitionnée par BANK_ID et dans l'ordre décroissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Renvoie la valeur évaluée à la ligne qui est la dernière ligne du cadre de la fenêtre. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la dernière valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné après la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie la valeur BANK_ID de la deuxième ligne après la ligne en cours, partitionnée par BANK_ID et dans l'ordre croissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
RANK() OVER([ partition_clause ] order_by_clause) Renvoie le rang de la ligne en cours avec les intervalles, à partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le rang de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Renvoie le numéro unique de la ligne en cours dans sa partition, à partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le numéro unique de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
Fonctions de chaîne
FonctionsDescriptionExemple
CAST(value AS type)Renvoie la valeur indiquée dans le type spécifié.CAST("10" AS INT) renvoie 10
CONCAT(string, string)Renvoie les valeurs combinées des chaînes ou des colonnes.CONCAT('Oracle','SQL') renvoie OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Renvoie les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur indiqué entre les chaînes ou les colonnes.

Un séparateur est requis et doit être une chaîne.

Au moins une expression doit être fournie après le séparateur. Par exemple : CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') renvoie Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) renvoie 123 MyCity 987654

Si un enfant de la fonction est un tableau, ce dernier est mis à plat :

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) renvoie 1,2,3,4,5,6,7,8,9

INITCAP(string)Renvoie la chaîne avec la première lettre de chaque mot en majuscule, tandis que toutes les autres sont en minuscules et chaque mot est délimité par un caractère non imprimable.INITCAP('oRACLE sql') renvoie Oracle Sql
INSTR(string, substring[start_position])Renvoie l'index (base 1) de la première occurrence de substring dans string.INSTR('OracleSQL', 'SQL') renvoie 7
LOWER(string)Renvoie la chaîne avec toutes les lettres passées en minuscules.LOWER('ORACLE') renvoie oracle
LENGTH(string)Renvoie la longueur (en caractères) de la chaîne ou le nombre d'octets des données binaires. La longueur de la chaîne inclut les espaces de fin.LENGTH('Oracle') renvoie 6
LTRIM(string)Renvoie la chaîne avec les espaces de début enlevés à gauche.LTRIM(' Oracle')
NVL(expr1, epxr2)Renvoie l'argument qui n'est pas NULL.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Recherche et extrait la chaîne qui correspond à un modèle d'expression régulière dans la chaîne d'entrée. Si l'index de groupe de capture (facultatif) est fourni, la fonction extrait le groupe spécifique.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') renvoie https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) renvoie 22
REPLACE(string, search, replacement)Remplace toutes les occurrences de search par replacement.

Si search est introuvable dans la chaîne, la chaîne est renvoyée sans modification.

Si replacement n'est pas spécifié ou est une chaîne vide, rien ne remplace l'élément search, qui est enlevé de string.

REPLACE('ABCabc', 'abc', 'DEF') renvoie ABCDEF
RTRIM(string)Renvoie la chaîne avec les espaces de fin enlevés à droite.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Renvoie la sous-chaîne commençant à la position indiquée. SUBSTRING('Oracle SQL' FROM 2 FOR 3) renvoie rac
Pour les nombres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale])Convertit des nombres et des dates en chaînes. Pour les nombres, aucun format n'est requis. Pour les dates, utilisez le même format que DATE_FORMAT décrit dans Fonctions de date et d'heure. L'environnement local par défaut est en-US. Reportez-vous aux balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format de date pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

Exemple de nombre : TO_CHAR(123) renvoie 123

Exemple de date : TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') renvoie la chaîne 2020.10.30. Le premier argument est un objet Date représentant le 30 octobre 2020

UPPER(string)Renvoie la chaîne avec toutes les lettres passées en majuscules.UPPER('oracle') renvoie ORACLE
LPAD(str, len[, pad])Renvoie une chaîne complétée à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.LPAD('ABC', 5, '*') renvoie '**ABC'
RPAD(str, len[, pad])Renvoie une chaîne complétée à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Fonctions d'opérateur (comparaison)
FonctionDescriptionExemple
CASE WHEN condition1 THEN result1 ELSE result2 ENDRenvoie la valeur pour laquelle une condition est remplie.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END renvoie ABC si 1> 0, sinon, renvoie XYZ
ANDOpérateur AND logique. Renvoie true si les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 AND y = 20) renvoie "true" si x est égal à 10 et y est égal à 20. Si l'une des conditions n'est pas remplie, la fonction renvoie "false".
OROpérateur OR logique. Renvoie true si l'une des opérandes ou les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 OR y = 20) renvoie "false" si x n'est pas égal à 10 et que y n'est pas égal à 20. Si l'une des conditions est remplie, la fonction renvoie "true".
NOTOpérateur NOT logique.
LIKEExécute la correspondance de modèle de chaîne, si string1 correspond au modèle dans string2.
=Recherche l'égalité. Renvoie true si la valeur expr1 est égale à expr2. Sinon, renvoie false.x = 10 renvoie "true" lorsque la valeur de x est 10, sinon, renvoie "false"
!=Recherche l'inégalité. Renvoie true si la valeur expr1 est différente de expr2. Sinon, renvoie false.x != 10 renvoie "false" lorsque la valeur de x est 10, sinon, renvoie "true"
>Recherche une expression supérieure. Renvoie true si la valeur expr1 est supérieure à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure à 10, sinon, renvoie "false"
>=Recherche une expression supérieure ou égale. Renvoie true si la valeur expr1 est supérieure ou égale à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure ou égale à 10, sinon, renvoie "false"
<Recherche une expression inférieure. Renvoie true si la valeur expr1 est inférieure à expr2.x < 10 renvoie "true" lorsque la valeur de x est inférieure à 10, sinon, renvoie "false"
<=Recherche une expression inférieure ou égale. Renvoie true si la valeur expr1 est inférieure ou égale à expr2.x <= 10 renvoie "true" lorsque la valeur de x est inférieure ou égale à 10, sinon, renvoie "false"
||Concatène deux chaînes.'XYZ' || 'hello' renvoie 'XYZhello'
BETWEENEvalue une plage.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVérifie si une expression correspond à une liste de valeurs.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Fonctions d'ID unique
FonctionDescriptionExemple
NUMERIC_ID()Génère un identificateur universel unique qui est un numéro 64 bits pour chaque ligne.NUMERIC_ID() renvoie, par exemple, 3458761969522180096 et 3458762008176885761
ROWID()Génère une augmentation monotone des numéros 64 bits.ROWID() renvoie, par exemple, 0, 1, 2, etc.
UUID()Génère un identificateur universel unique qui est une chaîne 128 bits pour chaque ligne.UUID() renvoie, par exemple, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Génère des entiers 64 bits uniques croissants de manière monotone qui ne sont pas des nombres consécutifs. MONOTONICALLY_INCREASING_ID() renvoie, par exemple, 8589934592 et 25769803776
Fonctions conditionnelles
FonctionDescriptionExemple
COALESCE(value, value [, value]*)Renvoie le premier argument non NULL, le cas échéant, sinon, renvoie la valeur NULL.COALESCE(NULL, 1, NULL) renvoie 1
NULLIF(value, value)Renvoie la valeur NULL si les deux valeurs sont égales, sinon, renvoie la première valeur.NULLIF('ABC','XYZ') renvoie ABC
Fonctions hiérarchiques
FonctionDescriptionExemple
SCHEMA_OF_JSON(string)Analyse une chaîne JSON et déduit le schéma au format DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') renvoie 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') renvoie 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.

  • Map, avec le type de clé String
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') renvoie une colonne de type Struct avec le schéma indiqué : {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') renvoie une colonne de type Struct avec le schéma indiqué : {1, 0.8}

TO_JSON(column)Convertit une colonne contenant le type Struct, Array of Structs, Map ou Array of Maps en chaîne JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) renvoie une chaîne JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Crée une colonne de type Map. Les colonnes d'entrée doivent être regroupées en paires clé-valeur. Les colonnes de clé d'entrée ne peuvent pas être NULL et doivent toutes comporter le même type de données. Les colonnes de valeur d'entrée doivent toutes comporter le même type de données.

TO_MAP('Ename',Expression_1.attribute1) renvoie une colonne de type Map : {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) renvoie une colonne de type Map : {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Crée une colonne de type Struct. Les colonnes d'entrée doivent être regroupées en paires clé-valeur.

TO_STRUCT('Ename',Expression_1.attribute1) renvoie {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) renvoie {100, "John"}

TO_ARRAY(column[,column]*)Crée une colonne de type Array. Les colonnes d'entrée doivent toutes comporter le même type de données.

TO_Array(Expression_1.attribute1) renvoie [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) renvoie ["John","Friend"]

Fonctions d'ordre supérieur

Les opérateurs de flux de données qui prennent en charge la création d'expressions et de types de données hiérarchiques peuvent utiliser des fonctions d'ordre supérieur.

Les opérateurs pris en charge sont les suivants :

  • Agréger

  • Expression

  • Filtre

  • Jointure

  • Code express

  • Fractionner

  • Faire pivoter

FonctionDescriptionExemple
TRANSFORM(column, lambda_function)Prend un tableau et une fonction anonyme, et configure un nouveau tableau en appliquant la fonction à chaque élément, et en affectant le résultat au tableau de sortie.Pour un tableau d'entrée d'entiers [1, 2, 3], TRANSFORM(array, x -> x + 1) renvoie un nouveau tableau de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les clés ont le type du résultat de la fonction lambda, et les valeurs ont le type des valeurs de la correspondance de colonne.Pour une correspondance d'entrée avec des clés entières et des valeurs de chaîne de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) renvoie une nouvelle correspondance de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les valeurs ont le type du résultat des fonctions lambda, et les clés ont le type des clés de correspondance de colonne. Pour une correspondance d'entrée avec des clés de chaîne et des valeurs de chaîne de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) renvoie une nouvelle correspondance de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Seul l'opérateur d'expression prend en charge ARRAY_SORT.

Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments.

La fonction doit renvoyer -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au second.

Si la fonction est omise, le tableau est trié par ordre croissant.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

Le tableau renvoyé est :

[1,5,6]

Opérateur de jointure

Utilisez l'opérateur de jointure pour lier des données provenant de plusieurs sources entrantes.

Ajout et configuration d'un opérateur de jointure
  1. A partir du panneau Opérateurs, faites glisser un opérateur de jointure vers le canevas.
  2. Avec le focus sur l'opérateur de jointure, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. Sélectionnez le type de jointure. Les types de jointure pris en charge sont les suivants :
    Types de jointure
    Icône Type de jointure Description
    diagramme de venn de jointure interne Interne Sélectionne les données des deux sources entrantes pour lesquelles la condition de jointure est remplie.
    diagramme de venn de jointure externe gauche Externe gauche Sélectionne toutes les données de la source entrante 1 et celles de la source entrante 2 pour lesquelles la condition de jointure est remplie.
    diagramme de venn de jointure externe droite Externe droite Sélectionne les données de la source entrante 1 pour lesquelles la condition de jointure est remplie et toutes les données de la source entrante 2.
    diagramme de venn de jointure externe complète Complètement externe Sélectionne toutes les données des deux sources entrantes, en faisant correspondre les lignes lorsque des correspondances peuvent être effectuées et en insérant des valeurs NULL lorsqu'aucune correspondance n'est trouvée.
  4. En regard de Condition de jointure, sélectionnez Créer.
  5. Dans le panneau Créer une condition de jointure, dans la section Générateur de condition, vous pouvez cliquer deux fois sur des attributs, des paramètres et des fonctions ou les faire glisser pour les ajouter à l'éditeur afin de créer une condition. Vous pouvez également entrer une expression de condition manuellement dans l'éditeur et valider l'expression.
    Remarque

    Dans l'éditeur, un élément ajouté tel qu'une fonction peut comporter des espaces réservés. Pour remplacer un espace réservé par un autre élément, mettez en surbrillance l'espace réservé, puis cliquez deux fois sur un autre élément de la liste.
  6. Sélectionnez Create (Créer).
  7. (Facultatif) Sélectionnez Affecter des paramètres pour utiliser des paramètres afin que la condition de jointure ne soit pas liée au code compilé lorsque vous publiez le flux de données. Reportez-vous à Affectation d'un paramètre.
  8. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  9. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  10. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Création d'une condition de jointure

Utilisez le générateur de condition pour sélectionner visuellement des éléments afin de créer une condition de jointure. Vous pouvez également entrer une condition de jointure manuellement dans l'éditeur.

La création d'une condition de jointure permet de sélectionner les données de deux sources entrantes en fonction de la condition.

Les éléments que vous pouvez utiliser dans une condition de jointure sont les fonctions, attributs et paramètres entrants. Vous pouvez cliquer deux fois sur un élément de la liste ou le faire glisser pour l'ajouter à l'éditeur afin de créer une condition. Vous pouvez valider la condition avant de la créer.

La zone Entrant affiche les attributs des ports en amont connectés à l'opérateur de jointure sous la forme de deux dossiers JOIN distincts. Affichez les attributs de chaque port en développant ou en réduisant le dossier JOIN approprié. Par exemple : JOIN_1_1 et JOIN_1_2.

JOIN_1_1.BANK_CUSTOMER.ADDRESS_ID = JOIN_1_2.BANK_ADDRESS.ADDRESS_ID

Les Paramètres sont les paramètres d'expression qui ont été ajoutés au flux de données à l'aide du générateur de condition (opérateurs de filtre, de jointure, de recherche et de fractionnement) ou du générateur d'expressions (opérateurs d'expression et d'agrégation. Un paramètre d'expression possède un nom, un type et une valeur par défaut. Reportez-vous à Ajout d'un paramètre d'expression.

Supposons que vous voulez joindre deux sources et conserver uniquement les lignes dans lesquelles BANK_NAME='ABC Bank'. Vous pouvez créer un paramètre VARCHAR portant le nom P_VARCHAR et définir la valeur par défaut sur ABC BANK. Vous pouvez ensuite créer l'expression de jointure comme suit :

JOIN_1_1.ADDRESSES.BANK_ID = JOIN_1_2.BANK.BANK_ID AND JOIN_1_2.BANK.BANK_NAME = $P_VARCHAR

Les fonctions sont les fonctions disponibles dans Data Integration que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur les arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir des arguments.

Voici la liste des fonctions que vous pouvez ajouter lorsque vous construisez des conditions :

Fonctions de hachage
FonctionDescriptionExemple
MD5(all data types)Calcule un checksum MD5 du type de données et renvoie une valeur de chaîne. MD5(column_name)
SHA1(all data types)Calcule une valeur de hachage SHA-1 du type de données et renvoie une valeur de chaîne. SHA1(column_name)
SHA2(all data types, bitLength)Calcule une valeur de hachage SHA-2 du type de données et renvoie une valeur de chaîne. bitLength est un entier. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcule une valeur de hachage pour expr et renvoie une valeur NUMBER.

expr peut être une expression, une colonne ou un littéral.

max_bucket est la valeur de bucket maximale renvoyée, comprise entre 0 et 4294967295 (valeur par défaut).

seed_value est une valeur comprise entre 0 (valeur par défaut) et 4294967295.

Oracle applique la fonction de hachage à la combinaison de expr et seed_value afin de produire de nombreux résultats différents pour le même ensemble de données.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Fonctions arithmétiques
FonctionDescriptionExemple
ABS(numeric)Renvoie la puissance absolue de la valeur numeric.ABS(-1)
CEIL(numeric)Renvoie l'entier le plus petit qui n'est pas supérieur à la valeur numericCEIL(-1,2)
FLOOR(numeric)Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numericFLOOR(-1,2)
MOD(numeric1, numeric2)Renvoie le reste après que numeric1 est divisé par numeric2.MOD(8,2)
POWER(numeric1, numeric2)Place numeric1 comme puissance de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Renvoie numeric1 arrondi à numeric2 décimales.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Renvoie numeric1 tronqué à numeric2 décimales.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Convertit une valeur expr en nombre, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format pris en charge :

  • 0 : chiffre
  • # : chiffre (zéro affiché comme absent)
  • . : espace réservé pour le séparateur décimal
  • , : espace réservé pour le séparateur de groupes
  • E : sépare la mantisse et l'exposant pour les formats exponentiels
  • - : préfixe négatif par défaut
  • ¤ : signe de devise ; remplacé par le symbole de devise ; s'il est double, remplacé par le symbole de devise internationale ; s'il est présent dans un modèle, le séparateur décimal monétaire est utilisé à la place du séparateur décimal

TO_NUMBER('5467.12') returns renvoie 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') renvoie -45677.7

Fonctions de date et d'heure
Fonction Description Exemple
CURRENT_DATE Renvoie la date actuelle. CURRENT_DATErenvoie la date du jour, par exemple 2023-05-26
CURRENT_TIMESTAMP Renvoie la date et l'heure en cours du fuseau horaire de la session. CURRENT_TIMESTAMP renvoie la date du jour et l'heure actuelle, par exemple 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Renvoie la date qui correspond au nombre (number) de jours indiqué après la valeur date spécifiée. DATE_ADD('2017-07-30', 1) renvoie 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formate une valeur expr de date, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format de date pris en charge :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') renvoie '2020-10-11'. Le premier argument est un objet Date représentant le 11 octobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') renvoie '2018/junio/17'

DAYOFMONTH(date) Renvoie le jour de la date dans le mois. DAYOFMONTH('2020-12-25') renvoie 25
DAYOFWEEK(date) Renvoie le jour de la date dans la semaine. DAYOFWEEK('2020-12-25') renvoie 6 pour vendredi. Aux États-Unis, dimanche est considéré comme 1, lundi est 2, et ainsi de suite.
DAYOFYEAR(date) Renvoie le jour de la date dans l'année. DAYOFYEAR('2020-12-25') renvoie 360
WEEKOFYEAR(date) Renvoie la semaine de la date dans l'année.

WEEKOFYEAR('2022-07-28') renvoie 30

WEEKOFYEAR('2022-07-28 13:24:30') renvoie 30

HOUR(datetime) Renvoie la valeur d'heure de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 15
LAST_DAY(date) Renvoie le dernier jour du mois de la date. LAST_DAY('2020-12-25') renvoie 31
MINUTE(datetime) Renvoie la valeur de minute de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 10
MONTH(date) Renvoie la valeur de mois de la date. MONTH('2020-06-25') renvoie 6
QUARTER(date) Renvoie le trimestre de l'année correspondant à la date. QUARTER('2020-12-25') renvoie 4
SECOND(datetime) Renvoie la valeur de seconde de la date et de l'heure. SECOND('2020-12-25 15:10:30') renvoie 30
TO_DATE(string, format_string[, localeStr]) Analyse l'expression de chaîne avec l'expression format_string pour générer une date. L'environnement local est facultatif. La valeur par défaut est en-US. Balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les chaînes de format distinguant les minuscules des majuscules prises en charge sont les suivantes :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') renvoie la valeur Date 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') renvoie la valeur Date 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Convertit une valeur expr VARCHAR en valeur TIMESTAMP, en fonction des éléments format_string et localeStr (facultatif) fournis.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') renvoie un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020
WEEK(date)

Renvoie la valeur de semaine de la date.

WEEK('2020-06-25') renvoie 4
YEAR(date) Renvoie la valeur d'année de la date. YEAR('2020-06-25') renvoie 2020
ADD_MONTHS(date_expr, number_months) Renvoie la date après ajout du nombre de mois spécifié à la date, à la chaîne ou à l'horodatage spécifié avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) renvoie 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) renvoie 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Renvoie le nombre de mois entre start_date_expr et end_date_expr. start_date_expr et end_date_expr peuvent être des dates, des horodatages ou des chaînes avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Un nombre entier est renvoyé si les deux dates sont le même jour du mois ou le dernier jour de leurs mois respectifs. Sinon, la différence est calculée sur la base de 31 jours par mois.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') renvoie 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') renvoie 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') renvoie 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interprète une date, un horodatage ou une chaîne en temps UTC, converti ensuite en horodatage dans le fuseau horaire spécifié.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Convertit une date, un horodatage ou une chaîne dans le fuseau horaire spécifié en horodatage UTC.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Convertit la période ou l'heure UNIX spécifiée en chaîne qui représente l'horodatage correspondant dans le fuseau horaire système en cours et dans le format spécifié.

Remarque : l'heure Unix est le nombre de secondes qui s'est écoulé depuis le 1er janvier 1970 à 00:0:00 UTC.

Si fmt est omis, le format par défaut est yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) renvoie '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) renvoie '2021-11-18 10:07:34'

Le fuseau horaire par défaut est PST dans les exemples

UNIX_TIMESTAMP([time_expr[, fmt]])

Convertit l'heure en cours ou spécifiée en horodatage Unix en secondes.

time_expr est une date, un horodatage ou une chaîne avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Si time_expr n'est pas fourni, l'heure en cours est convertie.

Si time_expr est une chaîne et que fmt est omis, la valeur par défaut est yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') renvoie 28800

Le fuseau horaire par défaut est PST dans cet exemple

INTERVAL 'year' YEAR[(year_precision)]

Renvoie une période en années.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '1' YEAR renvoie un intervalle de 1 an

INTERVAL '200' YEAR(3) renvoie un intervalle de 200 ans

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Renvoie une période en années et en mois. Permet de stocker une période à l'aide des champs year et month.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '100-5' YEAR(3) TO MONTH renvoie un intervalle de 100 ans et 5 mois. Vous devez indiquer une précision de 3 pour l'année de début.
INTERVAL 'month' MONTH[(month_precision)]

Renvoie une période en mois.

month_precision est le nombre de chiffres du champ mois ; il varie de 0 à 9. Si month_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '200' MONTH(3) renvoie un intervalle de 200 mois. Vous devez indiquer une précision de 3 pour le mois.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en jours, heures, minutes et secondes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) renvoie un intervalle de 11 jours, 10 heures, 9 minutes, 8 secondes et 555 millièmes de seconde
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en jours, heures et minutes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '11 10:09' DAY TO MINUTE renvoie un intervalle de 11 jours, 10 heures et 9 minutes
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Renvoie une période en jours et heures.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '100 10' DAY(3) TO HOUR renvoie un intervalle de 100 jours et 10 heures
INTERVAL 'day' DAY[(day_precision)]

Renvoie une période en jours.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

INTERVAL '999' DAY(3) renvoie un intervalle de 999 jours
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en heures, minutes et secondes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) renvoie un intervalle de 9 heures, 8 minutes et 7,6666666 secondes
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en heures et minutes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '09:30' HOUR TO MINUTE renvoie un intervalle de 9 heures et 30 minutes
INTERVAL 'hour' HOUR[(hour_precision)]

Renvoie une période en heures.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '40' HOUR renvoie un intervalle de 40 heures
INTERVAL 'minute' MINUTE[(minute_precision)]

Renvoie une période en minutes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '15' MINUTE renvoie un intervalle de 15 minutes
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en minutes et secondes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '15:30' MINUTE TO SECOND renvoie un intervalle de 15 minutes et 30 secondes
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Renvoie une période en secondes.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire du champ second ; il est compris entre 0 et 9. La valeur par défaut est 3.

INTERVAL '15.678' SECOND renvoie un intervalle de 15,678 secondes
Fonctions analytiques
Fonction Description Exemple
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Renvoie la valeur évaluée à la ligne qui est la première ligne du cadre de la fenêtre. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la première valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné avant la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) renvoie la valeur BANK_ID de la deuxième ligne avant la ligne en cours, partitionnée par BANK_ID et dans l'ordre décroissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Renvoie la valeur évaluée à la ligne qui est la dernière ligne du cadre de la fenêtre. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la dernière valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné après la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie la valeur BANK_ID de la deuxième ligne après la ligne en cours, partitionnée par BANK_ID et dans l'ordre croissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
RANK() OVER([ partition_clause ] order_by_clause) Renvoie le rang de la ligne en cours avec les intervalles, à partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le rang de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Renvoie le numéro unique de la ligne en cours dans sa partition, à partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le numéro unique de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
Fonctions de chaîne
FonctionsDescriptionExemple
CAST(value AS type)Renvoie la valeur indiquée dans le type spécifié.CAST("10" AS INT) renvoie 10
CONCAT(string, string)Renvoie les valeurs combinées des chaînes ou des colonnes.CONCAT('Oracle','SQL') renvoie OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Renvoie les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur indiqué entre les chaînes ou les colonnes.

Un séparateur est requis et doit être une chaîne.

Au moins une expression doit être fournie après le séparateur. Par exemple : CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') renvoie Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) renvoie 123 MyCity 987654

Si un enfant de la fonction est un tableau, ce dernier est mis à plat :

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) renvoie 1,2,3,4,5,6,7,8,9

INITCAP(string)Renvoie la chaîne avec la première lettre de chaque mot en majuscule, tandis que toutes les autres sont en minuscules et chaque mot est délimité par un caractère non imprimable.INITCAP('oRACLE sql') renvoie Oracle Sql
INSTR(string, substring[start_position])Renvoie l'index (base 1) de la première occurrence de substring dans string.INSTR('OracleSQL', 'SQL') renvoie 7
LOWER(string)Renvoie la chaîne avec toutes les lettres passées en minuscules.LOWER('ORACLE') renvoie oracle
LENGTH(string)Renvoie la longueur (en caractères) de la chaîne ou le nombre d'octets des données binaires. La longueur de la chaîne inclut les espaces de fin.LENGTH('Oracle') renvoie 6
LTRIM(string)Renvoie la chaîne avec les espaces de début enlevés à gauche.LTRIM(' Oracle')
NVL(expr1, epxr2)Renvoie l'argument qui n'est pas NULL.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Recherche et extrait la chaîne qui correspond à un modèle d'expression régulière dans la chaîne d'entrée. Si l'index de groupe de capture (facultatif) est fourni, la fonction extrait le groupe spécifique.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') renvoie https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) renvoie 22
REPLACE(string, search, replacement)Remplace toutes les occurrences de search par replacement.

Si search est introuvable dans la chaîne, la chaîne est renvoyée sans modification.

Si replacement n'est pas spécifié ou est une chaîne vide, rien ne remplace l'élément search, qui est enlevé de string.

REPLACE('ABCabc', 'abc', 'DEF') renvoie ABCDEF
RTRIM(string)Renvoie la chaîne avec les espaces de fin enlevés à droite.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Renvoie la sous-chaîne commençant à la position indiquée. SUBSTRING('Oracle SQL' FROM 2 FOR 3) renvoie rac
Pour les nombres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale])Convertit des nombres et des dates en chaînes. Pour les nombres, aucun format n'est requis. Pour les dates, utilisez le même format que DATE_FORMAT décrit dans Fonctions de date et d'heure. L'environnement local par défaut est en-US. Reportez-vous aux balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format de date pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

Exemple de nombre : TO_CHAR(123) renvoie 123

Exemple de date : TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') renvoie la chaîne 2020.10.30. Le premier argument est un objet Date représentant le 30 octobre 2020

UPPER(string)Renvoie la chaîne avec toutes les lettres passées en majuscules.UPPER('oracle') renvoie ORACLE
LPAD(str, len[, pad])Renvoie une chaîne complétée à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.LPAD('ABC', 5, '*') renvoie '**ABC'
RPAD(str, len[, pad])Renvoie une chaîne complétée à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Fonctions d'opérateur (comparaison)
FonctionDescriptionExemple
CASE WHEN condition1 THEN result1 ELSE result2 ENDRenvoie la valeur pour laquelle une condition est remplie.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END renvoie ABC si 1> 0, sinon, renvoie XYZ
ANDOpérateur AND logique. Renvoie true si les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 AND y = 20) renvoie "true" si x est égal à 10 et y est égal à 20. Si l'une des conditions n'est pas remplie, la fonction renvoie "false".
OROpérateur OR logique. Renvoie true si l'une des opérandes ou les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 OR y = 20) renvoie "false" si x n'est pas égal à 10 et que y n'est pas égal à 20. Si l'une des conditions est remplie, la fonction renvoie "true".
NOTOpérateur NOT logique.
LIKEExécute la correspondance de modèle de chaîne, si string1 correspond au modèle dans string2.
=Recherche l'égalité. Renvoie true si la valeur expr1 est égale à expr2. Sinon, renvoie false.x = 10 renvoie "true" lorsque la valeur de x est 10, sinon, renvoie "false"
!=Recherche l'inégalité. Renvoie true si la valeur expr1 est différente de expr2. Sinon, renvoie false.x != 10 renvoie "false" lorsque la valeur de x est 10, sinon, renvoie "true"
>Recherche une expression supérieure. Renvoie true si la valeur expr1 est supérieure à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure à 10, sinon, renvoie "false"
>=Recherche une expression supérieure ou égale. Renvoie true si la valeur expr1 est supérieure ou égale à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure ou égale à 10, sinon, renvoie "false"
<Recherche une expression inférieure. Renvoie true si la valeur expr1 est inférieure à expr2.x < 10 renvoie "true" lorsque la valeur de x est inférieure à 10, sinon, renvoie "false"
<=Recherche une expression inférieure ou égale. Renvoie true si la valeur expr1 est inférieure ou égale à expr2.x <= 10 renvoie "true" lorsque la valeur de x est inférieure ou égale à 10, sinon, renvoie "false"
||Concatène deux chaînes.'XYZ' || 'hello' renvoie 'XYZhello'
BETWEENEvalue une plage.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVérifie si une expression correspond à une liste de valeurs.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Fonctions d'ID unique
FonctionDescriptionExemple
NUMERIC_ID()Génère un identificateur universel unique qui est un numéro 64 bits pour chaque ligne.NUMERIC_ID() renvoie, par exemple, 3458761969522180096 et 3458762008176885761
ROWID()Génère une augmentation monotone des numéros 64 bits.ROWID() renvoie, par exemple, 0, 1, 2, etc.
UUID()Génère un identificateur universel unique qui est une chaîne 128 bits pour chaque ligne.UUID() renvoie, par exemple, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Génère des entiers 64 bits uniques croissants de manière monotone qui ne sont pas des nombres consécutifs. MONOTONICALLY_INCREASING_ID() renvoie, par exemple, 8589934592 et 25769803776
Fonctions conditionnelles
FonctionDescriptionExemple
COALESCE(value, value [, value]*)Renvoie le premier argument non NULL, le cas échéant, sinon, renvoie la valeur NULL.COALESCE(NULL, 1, NULL) renvoie 1
NULLIF(value, value)Renvoie la valeur NULL si les deux valeurs sont égales, sinon, renvoie la première valeur.NULLIF('ABC','XYZ') renvoie ABC
Fonctions hiérarchiques
FonctionDescriptionExemple
SCHEMA_OF_JSON(string)Analyse une chaîne JSON et déduit le schéma au format DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') renvoie 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') renvoie 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.

  • Map, avec le type de clé String
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') renvoie une colonne de type Struct avec le schéma indiqué : {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') renvoie une colonne de type Struct avec le schéma indiqué : {1, 0.8}

TO_JSON(column)Convertit une colonne contenant le type Struct, Array of Structs, Map ou Array of Maps en chaîne JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) renvoie une chaîne JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Crée une colonne de type Map. Les colonnes d'entrée doivent être regroupées en paires clé-valeur. Les colonnes de clé d'entrée ne peuvent pas être NULL et doivent toutes comporter le même type de données. Les colonnes de valeur d'entrée doivent toutes comporter le même type de données.

TO_MAP('Ename',Expression_1.attribute1) renvoie une colonne de type Map : {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) renvoie une colonne de type Map : {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Crée une colonne de type Struct. Les colonnes d'entrée doivent être regroupées en paires clé-valeur.

TO_STRUCT('Ename',Expression_1.attribute1) renvoie {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) renvoie {100, "John"}

TO_ARRAY(column[,column]*)Crée une colonne de type Array. Les colonnes d'entrée doivent toutes comporter le même type de données.

TO_Array(Expression_1.attribute1) renvoie [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) renvoie ["John","Friend"]

Fonctions d'ordre supérieur

Les opérateurs de flux de données qui prennent en charge la création d'expressions et de types de données hiérarchiques peuvent utiliser des fonctions d'ordre supérieur.

Les opérateurs pris en charge sont les suivants :

  • Agréger

  • Expression

  • Filtre

  • Jointure

  • Code express

  • Fractionner

  • Faire pivoter

FonctionDescriptionExemple
TRANSFORM(column, lambda_function)Prend un tableau et une fonction anonyme, et configure un nouveau tableau en appliquant la fonction à chaque élément, et en affectant le résultat au tableau de sortie.Pour un tableau d'entrée d'entiers [1, 2, 3], TRANSFORM(array, x -> x + 1) renvoie un nouveau tableau de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les clés ont le type du résultat de la fonction lambda, et les valeurs ont le type des valeurs de la correspondance de colonne.Pour une correspondance d'entrée avec des clés entières et des valeurs de chaîne de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) renvoie une nouvelle correspondance de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les valeurs ont le type du résultat des fonctions lambda, et les clés ont le type des clés de correspondance de colonne. Pour une correspondance d'entrée avec des clés de chaîne et des valeurs de chaîne de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) renvoie une nouvelle correspondance de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Seul l'opérateur d'expression prend en charge ARRAY_SORT.

Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments.

La fonction doit renvoyer -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au second.

Si la fonction est omise, le tableau est trié par ordre croissant.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

Le tableau renvoyé est :

[1,5,6]

Opérateur d'expression

Utilisez l'opérateur d'expression pour effectuer des transformations sur une seule ligne de données afin de créer des champs dérivés.

Pour utiliser l'opérateur d'expression afin de modifier le type de données d'un groupe d'attributs, reportez-vous à Modification du type de données d'un groupe d'attributs.

Ajout et configuration d'un opérateur d'expression
  1. Faites glisser un opérateur d'expression du panneau Opérateurs vers le canevas.
  2. Avec le focus sur l'opérateur d'expression, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom en l'état.
  3. Sous Expressions, sélectionnez Ajouter une expression.
  4. Dans le panneau Ajouter une expression, entrez le nom de l'expression dans le champ Identificateur ou laissez le nom en l'état.
  5. (Facultatif) Pour appliquer l'expression à plusieurs attributs, sélectionnez Autoriser la sélection en masse. Sélectionnez ensuite les attributs selon leur nom ou à l'aide d'un modèle d'expression régulière. Par exemple, supposons que vous disposez de trois attributs de nom dans l'ensemble de données source et que vous voulez appliquer la fonction UPPER aux trois attributs source. Vous pouvez utiliser un modèle pour sélectionner ce groupe d'attributs source.
    1. Pour Attributs source, sélectionnez Modèle, puis Modifier le modèle. Entrez ensuite l'expression régulière correspondant à un groupe d'attributs source. Par exemple, entrez *NAME pour faire correspondre les attributs FIRST_NAME, LAST_NAME et FULL_NAME.
    2. Sélectionnez un type de données dans le menu.
    3. Pour attributs cible, entrez l'expression régulière définissant les noms d'attribut cible dans Modèle. Par défaut, $0 est indiqué, ce qui fait référence aux noms d'attribut source d'origine. Mettez à jour le modèle pour nommer les attributs cible en fonction des exigences. Par exemple, entrez $0_UPPER pour ajouter le texte UPPER aux noms d'attribut source d'origine.
    4. Par défaut, l'option Utiliser des types de données d'attribut source est sélectionnée. Vous pouvez conserver la sélection. Si vous désélectionnez la case Utiliser des types de données d'attribut source, sélectionnez un type de données et renseignez les champs associés au type sélectionné.
  6. (Optional) If you did not select Allow bulk selection, under Expression data type, you can select Infer data type if you want the expression builder to detect the data type from the expression that you enter. Vous pouvez sélectionner Prévisualiser les types de données et Valider pour prévisualiser et actualiser le type de données, et valider l'expression.

    L'option Déduire le type de données est utile lorsque vous travaillez avec des types de données complexes tels que Map, Array et Struct pouvant comporter des types imbriqués sur plusieurs niveaux.

  7. Si vous n'avez pas sélectionné Autoriser la sélection en masse et Inférer le type de données, sélectionnez une valeur dans le menu Type de données, puis renseignez les champs correspondants.
  8. Dans la section Générateur d'expressions, construisez visuellement une expression en cliquant deux fois sur des attributs, paramètres ou fonctions entrants ou en les déplaçant vers ceux-ci pour les ajouter à l'éditeur afin de créer l'expression. Vous pouvez aussi écrire l'expression vous-même manuellement. Reportez-vous à Ajout d'une expression. Vous pouvez également valider l'expression.

    Vous pouvez utiliser des paramètres dans les expressions, y compris des paramètres définis par l'utilisateur qui ont été créés dans le flux de données, et des paramètres système générés par Data Integration lors de l'exécution.

    Si vous avez sélectionné autoriser la sélection en masse, utilisez %MACRO_INPUT% dans l'expression pour indiquer les attributs sur lesquels la fonction doit être appliquée. Par exemple, supposons que vous avez utilisé le modèle *NAME pour faire correspondre les attributs source FIRST_NAME, LAST_NAME et FULL_NAME. Vous pouvez maintenant spécifier la fonction UPPER(%MACRO_INPUT%) pour l'appliquer à tous les attributs qui correspondent au modèle.

    Pour exclure des attributs entrants de la sortie de cette expression, cochez la case Exclure des attributs entrants. Utilisez ensuite le menu pour ajouter les attributs entrants à exclure de la sortie. Une règle d'exclusion est appliquée à chaque attribut sélectionné pour exclusion. Vous pouvez uniquement exclure des attributs lorsque vous ajoutez l'expression pour la première fois. Lorsque vous modifiez l'expression, la case à cocher Exclure les attributs entrants n'est pas disponible.

    Remarque

    Pour remplacer un espace réservé dans une fonction par un autre élément, mettez en surbrillance l'espace réservé, puis cliquez deux fois sur l'élément dans la liste afin de l'ajouter à la fonction.
  9. Sélectionnez Ajouter.
    Vous pouvez répéter les étapes à partir de l'étape 3 pour ajouter d'autres expressions, si nécessaire.
  10. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs, puis appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser des caractères génériques tels que ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.

      Pour modifier le type de données d'un groupe d'attributs, sélectionnez Modifier le type de données. Dans la boîte de dialogue qui s'affiche, sélectionnez le nouveau Type de données pour les attributs sélectionnés ou filtrés. Sélectionnez ensuite toute autre propriété applicable au nouveau type de données sélectionné. Lorsque vous sélectionnez Appliquer, une expression est ajoutée à l'onglet Détails au lieu d'une règle.

    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  11. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

    Reportez-vous également à Ajout d'une expression.

  12. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Modification du type de données d'un groupe d'attributs

Vous pouvez utiliser l'opérateur d'expression pour modifier le type de données des attributs à l'aide d'une action de transformation en masse.

Au lieu d'utiliser une fonction CAST pour modifier le type de données des attributs un par un, vous pouvez ajouter l'opérateur d'expression et appliquer une action de transformation en masse sur plusieurs attributs à la fois.
  1. Connectez l'opérateur d'expression à l'objet entrant approprié.
  2. Avec le focus sur l'opérateur d'expression sur le canevas, dans l'onglet Attributs du panneau Propriétés, sélectionnez les attributs entrants (liés à l'opérateur d'expression sur le côté gauche).
  3. Si vous avez quelques attributs à transformer, cochez les cases pour sélectionner les attributs à transformer.
  4. Si vous avez de nombreux attributs à transformer, filtrez les attributs :
    1. Sélectionnez l'icône de filtre dans la colonne Nom. Dans le champ de filtre affiché, entrez un modèle d'expression régulière simple à l'aide de caractères génériques ( ? et *) afin de filtrer les attributs par modèle de nom (nom). Par exemple, entrez ADD* pour faire correspondre les attributs ADDRESS1, ADDRESS2 et ADDRESS_KEY.
    2. Sélectionnez l'icône de filtre dans la colonne Type. Dans le menu affiché, sélectionnez le type actuel des attributs à modifier. Par exemple, supposons que le type de ADDRESS1 et de ADDRESS2 est VARCHAR et que le type de ADDRESS_KEY est NUMERIC. Vous pouvez sélectionner VARCHAR pour transformer ADDRESS1 et ADDRESS2 uniquement.
  5. Dans le menu Actions, sélectionnez Modifier le type de données.
  6. Dans la boîte de dialogue Modifier le type de données, sélectionnez le nouveau type de données pour les attributs sélectionnés ou filtrés.

    Indiquez ensuite toute autre propriété applicable au nouveau type de données sélectionné.

    Pour conserver les attributs d'origine dans l'ensemble de données, sélectionnez Conserver les attributs source. Si la case n'est pas cochée, seuls les nouveaux attributs sont disponibles dans les données obtenues.

  7. Sélectionnez Appliquer.
  8. Sélectionnez l'onglet Détails.
    Vérifiez l'expression ajoutée à l'opérateur.
Ajout d'une expression

Utilisez le générateur d'expressions pour sélectionner visuellement des éléments afin de créer une expression dans l'éditeur. Vous pouvez aussi écrire une expression vous-même manuellement.

Tenez compte des points suivants lorsque vous créez des expressions :

  • Placez les littéraux de chaîne entre apostrophes. Par exemple : CONCAT('We ', 'like') ou UPPER('oracle').

  • Placez les noms d'attribut entre guillemets. Par exemple : UPPER("Sales") ou CONCAT(CONCAT("EXPRESSION_1.EMP_UTF8_EN_COL_CSV.EN_NAME", ' '), "EXPRESSION_1.EMP_UTF8_EN_COL_CSV.NAME").

    L'utilisation de guillemets autour des noms d'attribut est obligatoire pour les caractères multioctets et les noms qualifiés complets comportant des caractères spéciaux.

Le panneau Ajouter une expression comporte deux sections : Informations sur l'expression et Générateur d'expressions. Les champs Informations sur l'expression permettent d'indiquer un nom et un type de données pour l'expression. Vous pouvez également créer l'expression à appliquer à plusieurs attributs. Lorsque vous travaillez avec des types de données complexes tels que Map, Array et Struct pouvant comporter des types imbriqués sur plusieurs niveaux, vous pouvez laisser le générateur détecter le type de données dans l'expression que vous saisissez. Lorsque vous laissez le générateur déduire le type de données, vous pouvez prévisualiser et actualiser le type de données, puis valider l'expression.

La section Générateur d'expressions répertorie les éléments permettant de créer une expression. Les éléments que vous pouvez utiliser dans une expression sont les fonctions, attributs et paramètres entrants. Cliquez deux fois sur un élément de la liste ou faites-le glisser pour l'ajouter à l'éditeur afin de créer l'expression, ou écrivez vous-même manuellement l'expression. Vous pouvez valider l'expression avant de la créer.

La zone En entrée affiche les attributs de l'opérateur en amont qui arrivent dans cet opérateur d'expression. Sous la liste des attributs se trouve une case à cocher qui vous permet d'appliquer des règles d'exclusion. Pour exclure des attributs entrants de la sortie de cette expression, cochez la case Exclure des attributs entrants. Utilisez ensuite le menu pour ajouter les attributs entrants à exclure de la sortie. Une règle d'exclusion est appliquée à chaque attribut sélectionné pour exclusion. Vous pouvez uniquement exclure des attributs lorsque vous ajoutez l'expression pour la première fois. Lorsque vous modifiez l'expression, la case à cocher Exclure les attributs entrants n'est pas disponible.

Les paramètres incluent ceux définis par l'utilisateur et ceux générés par le système.

Les paramètres définis par l'utilisateur sont les paramètres d'expression qui ont été ajoutés au flux de données à l'aide du générateur de condition (opérateurs de filtre, de jointure, de recherche et de fractionnement) ou du générateur d'expressions (opérateurs d'expression et d'agrégation). Reportez-vous à Ajout d'un paramètre d'expression. La syntaxe est $PARAMETER_NAME. Par exemple : EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE

Data Integration génère des paramètres système tels que SYS.TASK_START_TIME. Les valeurs des paramètres système peuvent être utilisées dans les expressions pour journaliser les informations système. La syntaxe est ${SYSTEM_PARAMETER}. Par exemple : ${SYS.TASK_RUN_NAME}

Les fonctions sont les fonctions disponibles dans Data Integration que vous pouvez utiliser dans une expression. Les fonctions sont des opérations effectuées sur les arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir des arguments. Vous pouvez également ajouter des fonctions définies par l'utilisateur que vous avez créées dans l'espace de travail. Par exemple : MYLIBRARY.MYFUNCTION

La liste des fonctions disponibles dans Data Integration pour utilisation est la suivante :

Fonctions de hachage
FonctionDescriptionExemple
MD5(all data types)Calcule un checksum MD5 du type de données et renvoie une valeur de chaîne. MD5(column_name)
SHA1(all data types)Calcule une valeur de hachage SHA-1 du type de données et renvoie une valeur de chaîne. SHA1(column_name)
SHA2(all data types, bitLength)Calcule une valeur de hachage SHA-2 du type de données et renvoie une valeur de chaîne. bitLength est un entier. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcule une valeur de hachage pour expr et renvoie une valeur NUMBER.

expr peut être une expression, une colonne ou un littéral.

max_bucket est la valeur de bucket maximale renvoyée, comprise entre 0 et 4294967295 (valeur par défaut).

seed_value est une valeur comprise entre 0 (valeur par défaut) et 4294967295.

Oracle applique la fonction de hachage à la combinaison de expr et seed_value afin de produire de nombreux résultats différents pour le même ensemble de données.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Fonctions arithmétiques
FonctionDescriptionExemple
ABS(numeric)Renvoie la puissance absolue de la valeur numeric.ABS(-1)
CEIL(numeric)Renvoie l'entier le plus petit qui n'est pas supérieur à la valeur numericCEIL(-1,2)
FLOOR(numeric)Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numericFLOOR(-1,2)
MOD(numeric1, numeric2)Renvoie le reste après que numeric1 est divisé par numeric2.MOD(8,2)
POWER(numeric1, numeric2)Place numeric1 comme puissance de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Renvoie numeric1 arrondi à numeric2 décimales.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Renvoie numeric1 tronqué à numeric2 décimales.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Convertit une valeur expr en nombre, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format pris en charge :

  • 0 : chiffre
  • # : chiffre (zéro affiché comme absent)
  • . : espace réservé pour le séparateur décimal
  • , : espace réservé pour le séparateur de groupes
  • E : sépare la mantisse et l'exposant pour les formats exponentiels
  • - : préfixe négatif par défaut
  • ¤ : signe de devise ; remplacé par le symbole de devise ; s'il est double, remplacé par le symbole de devise internationale ; s'il est présent dans un modèle, le séparateur décimal monétaire est utilisé à la place du séparateur décimal

TO_NUMBER('5467.12') returns renvoie 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') renvoie -45677.7

Fonctions de tableau

Seul l'opérateur Expression prend en charge les fonctions de tableau.

FonctionDescriptionExemple
ARRAY_POSITION(array(...), element)Renvoie la position de la première occurrence de l'élément donné dans le tableau donné.

La position n'est pas basée sur zéro, elle commence par 1.

ARRAY_POSITION(array(3, 2, 1, 4, 1), 1) renvoie 3
REVERSE(array(...)) Renvoie le tableau d'éléments donné dans un ordre inverse. REVERSE(array(2, 1, 4, 3)) renvoie [3,4,1,2]
ELEMENT_AT(array(...), index) Renvoie l'élément du tableau donné à la position d'index donnée.

L'index n'est pas basé sur zéro, il commence par 1.

Si index = -1, il renvoie le dernier élément.

ELEMENT_AT(array(1, 2, 3), 2) renvoie 2
Fonctions de date et d'heure
Fonction Description Exemple
CURRENT_DATE Renvoie la date actuelle. CURRENT_DATErenvoie la date du jour, par exemple 2023-05-26
CURRENT_TIMESTAMP Renvoie la date et l'heure en cours du fuseau horaire de la session. CURRENT_TIMESTAMP renvoie la date du jour et l'heure actuelle, par exemple 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Renvoie la date qui correspond au nombre (number) de jours indiqué après la valeur date spécifiée. DATE_ADD('2017-07-30', 1) renvoie 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formate une valeur expr de date, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format de date pris en charge :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') renvoie '2020-10-11'. Le premier argument est un objet Date représentant le 11 octobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') renvoie '2018/junio/17'

DAYOFMONTH(date) Renvoie le jour de la date dans le mois. DAYOFMONTH('2020-12-25') renvoie 25
DAYOFWEEK(date) Renvoie le jour de la date dans la semaine. DAYOFWEEK('2020-12-25') renvoie 6 pour vendredi. Aux États-Unis, dimanche est considéré comme 1, lundi est 2, et ainsi de suite.
DAYOFYEAR(date) Renvoie le jour de la date dans l'année. DAYOFYEAR('2020-12-25') renvoie 360
WEEKOFYEAR(date) Renvoie la semaine de la date dans l'année.

WEEKOFYEAR('2022-07-28') renvoie 30

WEEKOFYEAR('2022-07-28 13:24:30') renvoie 30

HOUR(datetime) Renvoie la valeur d'heure de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 15
LAST_DAY(date) Renvoie le dernier jour du mois de la date. LAST_DAY('2020-12-25') renvoie 31
MINUTE(datetime) Renvoie la valeur de minute de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 10
MONTH(date) Renvoie la valeur de mois de la date. MONTH('2020-06-25') renvoie 6
QUARTER(date) Renvoie le trimestre de l'année correspondant à la date. QUARTER('2020-12-25') renvoie 4
SECOND(datetime) Renvoie la valeur de seconde de la date et de l'heure. SECOND('2020-12-25 15:10:30') renvoie 30
TO_DATE(string, format_string[, localeStr]) Analyse l'expression de chaîne avec l'expression format_string pour générer une date. L'environnement local est facultatif. La valeur par défaut est en-US. Balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les chaînes de format distinguant les minuscules des majuscules prises en charge sont les suivantes :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') renvoie la valeur Date 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') renvoie la valeur Date 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Convertit une valeur expr VARCHAR en valeur TIMESTAMP, en fonction des éléments format_string et localeStr (facultatif) fournis.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') renvoie un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020
WEEK(date)

Renvoie la valeur de semaine de la date.

WEEK('2020-06-25') renvoie 4
YEAR(date) Renvoie la valeur d'année de la date. YEAR('2020-06-25') renvoie 2020
ADD_MONTHS(date_expr, number_months) Renvoie la date après ajout du nombre de mois spécifié à la date, à la chaîne ou à l'horodatage spécifié avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) renvoie 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) renvoie 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Renvoie le nombre de mois entre start_date_expr et end_date_expr. start_date_expr et end_date_expr peuvent être des dates, des horodatages ou des chaînes avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Un nombre entier est renvoyé si les deux dates sont le même jour du mois ou le dernier jour de leurs mois respectifs. Sinon, la différence est calculée sur la base de 31 jours par mois.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') renvoie 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') renvoie 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') renvoie 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interprète une date, un horodatage ou une chaîne en temps UTC, converti ensuite en horodatage dans le fuseau horaire spécifié.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Convertit une date, un horodatage ou une chaîne dans le fuseau horaire spécifié en horodatage UTC.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Convertit la période ou l'heure UNIX spécifiée en chaîne qui représente l'horodatage correspondant dans le fuseau horaire système en cours et dans le format spécifié.

Remarque : l'heure Unix est le nombre de secondes qui s'est écoulé depuis le 1er janvier 1970 à 00:0:00 UTC.

Si fmt est omis, le format par défaut est yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) renvoie '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) renvoie '2021-11-18 10:07:34'

Le fuseau horaire par défaut est PST dans les exemples

UNIX_TIMESTAMP([time_expr[, fmt]])

Convertit l'heure en cours ou spécifiée en horodatage Unix en secondes.

time_expr est une date, un horodatage ou une chaîne avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Si time_expr n'est pas fourni, l'heure en cours est convertie.

Si time_expr est une chaîne et que fmt est omis, la valeur par défaut est yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') renvoie 28800

Le fuseau horaire par défaut est PST dans cet exemple

INTERVAL 'year' YEAR[(year_precision)]

Renvoie une période en années.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '1' YEAR renvoie un intervalle de 1 an

INTERVAL '200' YEAR(3) renvoie un intervalle de 200 ans

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Renvoie une période en années et en mois. Permet de stocker une période à l'aide des champs year et month.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '100-5' YEAR(3) TO MONTH renvoie un intervalle de 100 ans et 5 mois. Vous devez indiquer une précision de 3 pour l'année de début.
INTERVAL 'month' MONTH[(month_precision)]

Renvoie une période en mois.

month_precision est le nombre de chiffres du champ mois ; il varie de 0 à 9. Si month_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '200' MONTH(3) renvoie un intervalle de 200 mois. Vous devez indiquer une précision de 3 pour le mois.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en jours, heures, minutes et secondes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) renvoie un intervalle de 11 jours, 10 heures, 9 minutes, 8 secondes et 555 millièmes de seconde
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en jours, heures et minutes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '11 10:09' DAY TO MINUTE renvoie un intervalle de 11 jours, 10 heures et 9 minutes
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Renvoie une période en jours et heures.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '100 10' DAY(3) TO HOUR renvoie un intervalle de 100 jours et 10 heures
INTERVAL 'day' DAY[(day_precision)]

Renvoie une période en jours.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

INTERVAL '999' DAY(3) renvoie un intervalle de 999 jours
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en heures, minutes et secondes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) renvoie un intervalle de 9 heures, 8 minutes et 7,6666666 secondes
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en heures et minutes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '09:30' HOUR TO MINUTE renvoie un intervalle de 9 heures et 30 minutes
INTERVAL 'hour' HOUR[(hour_precision)]

Renvoie une période en heures.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '40' HOUR renvoie un intervalle de 40 heures
INTERVAL 'minute' MINUTE[(minute_precision)]

Renvoie une période en minutes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '15' MINUTE renvoie un intervalle de 15 minutes
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en minutes et secondes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '15:30' MINUTE TO SECOND renvoie un intervalle de 15 minutes et 30 secondes
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Renvoie une période en secondes.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire du champ second ; il est compris entre 0 et 9. La valeur par défaut est 3.

INTERVAL '15.678' SECOND renvoie un intervalle de 15,678 secondes
Fonctions analytiques
Fonction Description Exemple
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Renvoie la valeur évaluée à la ligne qui est la première ligne du cadre de la fenêtre. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la première valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné avant la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) renvoie la valeur BANK_ID de la deuxième ligne avant la ligne en cours, partitionnée par BANK_ID et dans l'ordre décroissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Renvoie la valeur évaluée à la ligne qui est la dernière ligne du cadre de la fenêtre. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la dernière valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné après la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie la valeur BANK_ID de la deuxième ligne après la ligne en cours, partitionnée par BANK_ID et dans l'ordre croissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
RANK() OVER([ partition_clause ] order_by_clause) Renvoie le rang de la ligne en cours avec les intervalles, à partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le rang de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Renvoie le numéro unique de la ligne en cours dans sa partition, à partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le numéro unique de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
Fonctions de chaîne
FonctionsDescriptionExemple
CAST(value AS type)Renvoie la valeur indiquée dans le type spécifié.CAST("10" AS INT) renvoie 10
CONCAT(string, string)Renvoie les valeurs combinées des chaînes ou des colonnes.CONCAT('Oracle','SQL') renvoie OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Renvoie les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur indiqué entre les chaînes ou les colonnes.

Un séparateur est requis et doit être une chaîne.

Au moins une expression doit être fournie après le séparateur. Par exemple : CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') renvoie Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) renvoie 123 MyCity 987654

Si un enfant de la fonction est un tableau, ce dernier est mis à plat :

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) renvoie 1,2,3,4,5,6,7,8,9

INITCAP(string)Renvoie la chaîne avec la première lettre de chaque mot en majuscule, tandis que toutes les autres sont en minuscules et chaque mot est délimité par un caractère non imprimable.INITCAP('oRACLE sql') renvoie Oracle Sql
INSTR(string, substring[start_position])Renvoie l'index (base 1) de la première occurrence de substring dans string.INSTR('OracleSQL', 'SQL') renvoie 7
LOWER(string)Renvoie la chaîne avec toutes les lettres passées en minuscules.LOWER('ORACLE') renvoie oracle
LENGTH(string)Renvoie la longueur (en caractères) de la chaîne ou le nombre d'octets des données binaires. La longueur de la chaîne inclut les espaces de fin.LENGTH('Oracle') renvoie 6
LTRIM(string)Renvoie la chaîne avec les espaces de début enlevés à gauche.LTRIM(' Oracle')
NVL(expr1, epxr2)Renvoie l'argument qui n'est pas NULL.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Recherche et extrait la chaîne qui correspond à un modèle d'expression régulière dans la chaîne d'entrée. Si l'index de groupe de capture (facultatif) est fourni, la fonction extrait le groupe spécifique.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') renvoie https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) renvoie 22
REPLACE(string, search, replacement)Remplace toutes les occurrences de search par replacement.

Si search est introuvable dans la chaîne, la chaîne est renvoyée sans modification.

Si replacement n'est pas spécifié ou est une chaîne vide, rien ne remplace l'élément search, qui est enlevé de string.

REPLACE('ABCabc', 'abc', 'DEF') renvoie ABCDEF
RTRIM(string)Renvoie la chaîne avec les espaces de fin enlevés à droite.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Renvoie la sous-chaîne commençant à la position indiquée. SUBSTRING('Oracle SQL' FROM 2 FOR 3) renvoie rac
Pour les nombres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale])Convertit des nombres et des dates en chaînes. Pour les nombres, aucun format n'est requis. Pour les dates, utilisez le même format que DATE_FORMAT décrit dans Fonctions de date et d'heure. L'environnement local par défaut est en-US. Reportez-vous aux balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format de date pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

Exemple de nombre : TO_CHAR(123) renvoie 123

Exemple de date : TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') renvoie la chaîne 2020.10.30. Le premier argument est un objet Date représentant le 30 octobre 2020

UPPER(string)Renvoie la chaîne avec toutes les lettres passées en majuscules.UPPER('oracle') renvoie ORACLE
LPAD(str, len[, pad])Renvoie une chaîne complétée à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.LPAD('ABC', 5, '*') renvoie '**ABC'
RPAD(str, len[, pad])Renvoie une chaîne complétée à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Fonctions d'opérateur (comparaison)
FonctionDescriptionExemple
CASE WHEN condition1 THEN result1 ELSE result2 ENDRenvoie la valeur pour laquelle une condition est remplie.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END renvoie ABC si 1> 0, sinon, renvoie XYZ
ANDOpérateur AND logique. Renvoie true si les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 AND y = 20) renvoie "true" si x est égal à 10 et y est égal à 20. Si l'une des conditions n'est pas remplie, la fonction renvoie "false".
OROpérateur OR logique. Renvoie true si l'une des opérandes ou les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 OR y = 20) renvoie "false" si x n'est pas égal à 10 et que y n'est pas égal à 20. Si l'une des conditions est remplie, la fonction renvoie "true".
NOTOpérateur NOT logique.
LIKEExécute la correspondance de modèle de chaîne, si string1 correspond au modèle dans string2.
=Recherche l'égalité. Renvoie true si la valeur expr1 est égale à expr2. Sinon, renvoie false.x = 10 renvoie "true" lorsque la valeur de x est 10, sinon, renvoie "false"
!=Recherche l'inégalité. Renvoie true si la valeur expr1 est différente de expr2. Sinon, renvoie false.x != 10 renvoie "false" lorsque la valeur de x est 10, sinon, renvoie "true"
>Recherche une expression supérieure. Renvoie true si la valeur expr1 est supérieure à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure à 10, sinon, renvoie "false"
>=Recherche une expression supérieure ou égale. Renvoie true si la valeur expr1 est supérieure ou égale à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure ou égale à 10, sinon, renvoie "false"
<Recherche une expression inférieure. Renvoie true si la valeur expr1 est inférieure à expr2.x < 10 renvoie "true" lorsque la valeur de x est inférieure à 10, sinon, renvoie "false"
<=Recherche une expression inférieure ou égale. Renvoie true si la valeur expr1 est inférieure ou égale à expr2.x <= 10 renvoie "true" lorsque la valeur de x est inférieure ou égale à 10, sinon, renvoie "false"
||Concatène deux chaînes.'XYZ' || 'hello' renvoie 'XYZhello'
BETWEENEvalue une plage.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVérifie si une expression correspond à une liste de valeurs.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Fonctions d'ID unique
FonctionDescriptionExemple
NUMERIC_ID()Génère un identificateur universel unique qui est un numéro 64 bits pour chaque ligne.NUMERIC_ID() renvoie, par exemple, 3458761969522180096 et 3458762008176885761
ROWID()Génère une augmentation monotone des numéros 64 bits.ROWID() renvoie, par exemple, 0, 1, 2, etc.
UUID()Génère un identificateur universel unique qui est une chaîne 128 bits pour chaque ligne.UUID() renvoie, par exemple, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Génère des entiers 64 bits uniques croissants de manière monotone qui ne sont pas des nombres consécutifs. MONOTONICALLY_INCREASING_ID() renvoie, par exemple, 8589934592 et 25769803776
Fonctions conditionnelles
FonctionDescriptionExemple
COALESCE(value, value [, value]*)Renvoie le premier argument non NULL, le cas échéant, sinon, renvoie la valeur NULL.COALESCE(NULL, 1, NULL) renvoie 1
NULLIF(value, value)Renvoie la valeur NULL si les deux valeurs sont égales, sinon, renvoie la première valeur.NULLIF('ABC','XYZ') renvoie ABC
Fonctions hiérarchiques
FonctionDescriptionExemple
SCHEMA_OF_JSON(string)Analyse une chaîne JSON et déduit le schéma au format DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') renvoie 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') renvoie 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.

  • Map, avec le type de clé String
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') renvoie une colonne de type Struct avec le schéma indiqué : {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') renvoie une colonne de type Struct avec le schéma indiqué : {1, 0.8}

TO_JSON(column)Convertit une colonne contenant le type Struct, Array of Structs, Map ou Array of Maps en chaîne JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) renvoie une chaîne JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Crée une colonne de type Map. Les colonnes d'entrée doivent être regroupées en paires clé-valeur. Les colonnes de clé d'entrée ne peuvent pas être NULL et doivent toutes comporter le même type de données. Les colonnes de valeur d'entrée doivent toutes comporter le même type de données.

TO_MAP('Ename',Expression_1.attribute1) renvoie une colonne de type Map : {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) renvoie une colonne de type Map : {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Crée une colonne de type Struct. Les colonnes d'entrée doivent être regroupées en paires clé-valeur.

TO_STRUCT('Ename',Expression_1.attribute1) renvoie {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) renvoie {100, "John"}

TO_ARRAY(column[,column]*)Crée une colonne de type Array. Les colonnes d'entrée doivent toutes comporter le même type de données.

TO_Array(Expression_1.attribute1) renvoie [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) renvoie ["John","Friend"]

Fonctions d'ordre supérieur

Les opérateurs de flux de données qui prennent en charge la création d'expressions et de types de données hiérarchiques peuvent utiliser des fonctions d'ordre supérieur.

Les opérateurs pris en charge sont les suivants :

  • Agréger

  • Expression

  • Filtre

  • Jointure

  • Code express

  • Fractionner

  • Faire pivoter

FonctionDescriptionExemple
TRANSFORM(column, lambda_function)Prend un tableau et une fonction anonyme, et configure un nouveau tableau en appliquant la fonction à chaque élément, et en affectant le résultat au tableau de sortie.Pour un tableau d'entrée d'entiers [1, 2, 3], TRANSFORM(array, x -> x + 1) renvoie un nouveau tableau de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les clés ont le type du résultat de la fonction lambda, et les valeurs ont le type des valeurs de la correspondance de colonne.Pour une correspondance d'entrée avec des clés entières et des valeurs de chaîne de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) renvoie une nouvelle correspondance de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les valeurs ont le type du résultat des fonctions lambda, et les clés ont le type des clés de correspondance de colonne. Pour une correspondance d'entrée avec des clés de chaîne et des valeurs de chaîne de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) renvoie une nouvelle correspondance de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Seul l'opérateur d'expression prend en charge ARRAY_SORT.

Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments.

La fonction doit renvoyer -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au second.

Si la fonction est omise, le tableau est trié par ordre croissant.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

Le tableau renvoyé est :

[1,5,6]
Duplication d'une expression

Vous pouvez dupliquer des expressions qui ont été ajoutées à un opérateur d'expression.

  1. Sur le canevas du flux de données, sélectionnez l'opérateur d'expression.
  2. Dans l'onglet Détails du panneau Propriétés, consultez la liste des expressions.
  3. Sélectionnez Dupliquer dans le menu (menu Actions) correspondant à l'expression à dupliquer.
    Aucune boîte de dialogue de confirmation n'apparaît : l'expression dupliquée est immédiatement ajoutée à la liste.
Déplacement d'une expression

Vous pouvez modifier l'ordre des expressions qui ont été ajoutées à un opérateur d'expression.

  1. Sur le canevas du flux de données, sélectionnez l'opérateur d'expression.
  2. Dans l'onglet Détails du panneau Propriétés, consultez la liste des expressions.
  3. Pour l'expression à déplacer, sélectionnez Move up, Move down, Move to top ou Move to bottom dans le menu Actions (menu Actions).
    Seules les actions de déplacement pertinentes sont disponibles, en fonction de la position actuelle de l'expression. Par exemple, Monter et Monter au début ne sont pas disponibles pour la première expression de la liste.

Opérateur d'agrégation

Utilisez l'opérateur d'agrégation pour effectuer des calculs tels que somme ou décompte sur toutes les lignes ou sur un groupe de lignes afin de créer des attributs dérivés.

Ajout et configuration d'un opérateur d'agrégation
  1. Dans le panneau Opérateurs, faites glisser l'opérateur d'agrégation vers le canevas.
  2. Avec le focus sur l'opérateur d'agrégation, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom en l'état.
  3. Sous Grouper par, sélectionnez l'un des éléments suivants :
    • Attributs : utilisez le menu pour sélectionner les attributs à regrouper.
    • Modèle : sélectionnez Ajouter une structure pour ajouter un modèle qui sélectionne les attributs à regrouper. Utilisez un modèle d'expression régulière pour mettre en correspondance plusieurs attributs.
    Remarque

    Les expressions que vous ajoutez sont exécutées sur chaque attribut sélectionné. Les attributs qui continuent en aval sont les attributs que vous regroupez plus les attributs dérivés des expressions que vous ajoutez.
  4. Sous Expressions, sélectionnez Ajouter une expression.
  5. Dans le panneau Ajouter une expression, entrez le nom de l'expression d'agrégation dans le champ Identificateur ou laissez le nom en l'état.
  6. (Facultatif) Pour sélectionner les attributs source sur lesquels appliquer l'opération d'expression à l'aide de modèles d'expression régulière, sélectionnez Autoriser la sélection en masse, puis Modèle. Par exemple, supposons que vous disposez de trois attributs de commande dans l'ensemble de données et que vous voulez appliquer la fonction d'opérateur SUM aux trois. Vous pouvez utiliser un modèle pour sélectionner ce groupe d'attributs source.
    1. Pour attributs source, entrez l'expression régulière qui correspond à un groupe d'attributs source dans Modèle. Par exemple, entrez *ORDER pour faire correspondre les attributs FIRST_ORDER, LAST_ORDER et FINAL_ORDER.
    2. Ensuite, pour Type de données, sélectionnez une valeur dans le menu et renseignez les champs correspondant au type sélectionné.
    3. Pour attributs cible, entrez l'expression régulière définissant les noms d'attribut cible dans Modèle. Par défaut, $0 est indiqué pour faire référence aux attributs source d'origine. Mettez à jour le modèle pour nommer les attributs cible en fonction des besoins. Par exemple, entrez $0_SUM pour ajouter le texte SUM aux noms d'attribut source d'origine.
    4. Par défaut, l'option Utiliser des types de données d'attribut source est sélectionnée. Vous pouvez conserver la sélection. Si vous désélectionnez la case Utiliser des types de données d'attribut source, sélectionnez un type de données et renseignez les champs associés au type sélectionné.
  7. (Facultatif) Si vous n'avez pas sélectionné l'option Autoriser le type de données d'expression, sous Type de données d'expression, vous pouvez sélectionner Inférer le type de données si vous voulez qu'il détecte le type de données de l'expression que vous saisissez. Vous pouvez sélectionner Prévisualiser les types de données et Valider pour prévisualiser et actualiser le type de données, et valider l'expression.

    Il est utile de laisser le générateur déduire le type de données lorsque vous travaillez avec des types de données complexes tels que Map, Array et Struct pouvant comporter des types imbriqués à des niveaux différents.

  8. Si vous n'avez pas sélectionné Autoriser la sélection en masse, pour Type de données, sélectionnez une valeur dans le menu, puis remplissez les champs associés au type sélectionné.
  9. (Facultatif) Sous Type de données d'expression, vous pouvez sélectionner Inférer le type de données si vous voulez Que le générateur d'expressions détecte le type de données de l'expression que vous saisissez. Vous pouvez sélectionner Prévisualiser les types de données et Valider pour prévisualiser et actualiser le type de données, et valider l'expression.

    Il est utile de laisser le générateur déduire le type de données lorsque vous travaillez avec des types de données complexes tels que Map, Array et Struct pouvant comporter des types imbriqués à des niveaux différents.

  10. Si vous n'avez pas sélectionné Autoriser la sélection en masse et Inférer le type de données, sélectionnez une valeur dans le menu Type de données, puis renseignez les champs correspondants.
  11. Dans la section Générateur d'expressions, construisez visuellement une expression en cliquant deux fois sur des attributs, paramètres ou fonctions entrants ou en les déplaçant vers ceux-ci pour les ajouter à l'éditeur afin de créer l'expression. Vous pouvez aussi écrire l'expression vous-même manuellement. Vous pouvez également valider l'expression.

    Si vous avez sélectionné autoriser la sélection en masse, utilisez %MACRO_INPUT% dans l'expression pour indiquer les attributs sur lesquels la fonction doit être appliquée. Par exemple, supposons que vous avez utilisé le modèle *NAME pour faire correspondre les attributs source FIRST_NAME, LAST_NAME et FULL_NAME. Vous pouvez maintenant spécifier la fonction UPPER(%MACRO_INPUT%) pour l'appliquer à tous les attributs qui correspondent au modèle.

    Pour exclure des attributs entrants de la sortie de cette expression, cochez la case Exclure des attributs entrants. Utilisez ensuite le menu pour ajouter les attributs entrants à exclure de la sortie. Une règle d'exclusion est appliquée à chaque attribut sélectionné pour exclusion. Vous pouvez uniquement exclure des attributs lorsque vous ajoutez l'expression pour la première fois. Lorsque vous modifiez l'expression, la case à cocher Exclure les attributs entrants n'est pas disponible.

    Remarque

    Pour remplacer un espace réservé dans une fonction par un autre élément, mettez en surbrillance l'espace réservé, puis cliquez deux fois sur l'élément dans la liste afin de l'ajouter à la fonction.
  12. Sélectionnez Ajouter.
    Vous pouvez répéter les étapes à partir de l'étape 4 pour ajouter d'autres expressions, si nécessaire.
  13. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  14. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs. Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.
  15. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Ajout d'une expression agrégée

Utilisez le générateur d'expressions pour sélectionner visuellement des éléments afin de créer une expression dans l'éditeur. Vous pouvez aussi écrire une expression vous-même manuellement.

Le panneau Ajouter une expression comporte deux sections : Informations sur l'expression et Générateur d'expressions. Les champs Informations sur l'expression permettent d'indiquer un nom et un type de données pour l'expression. Vous pouvez également créer l'expression à appliquer à plusieurs attributs. Lorsque vous travaillez avec des types de données complexes tels que Map, Array et Struct pouvant comporter des types imbriqués sur plusieurs niveaux, vous pouvez laisser le générateur détecter le type de données dans l'expression que vous saisissez. Lorsque vous laissez le générateur déduire le type de données, vous pouvez prévisualiser et actualiser le type de données, puis valider l'expression.

La section Générateur d'expressions répertorie les éléments permettant de créer une expression. Les éléments que vous pouvez utiliser dans une expression sont les fonctions, attributs et paramètres entrants. Cliquez deux fois sur un élément de la liste ou faites-le glisser pour l'ajouter à l'éditeur afin de créer l'expression, ou écrivez vous-même manuellement l'expression. Vous pouvez valider l'expression avant de la créer.

La zone En entrée affiche les attributs de l'opérateur en amont qui arrivent dans cet opérateur d'expression. Sous la liste des attributs se trouve une case à cocher qui vous permet d'appliquer des règles d'exclusion. Pour exclure des attributs entrants de la sortie de cette expression, cochez la case Exclure des attributs entrants. Utilisez ensuite le menu pour ajouter les attributs entrants à exclure de la sortie. Une règle d'exclusion est appliquée à chaque attribut sélectionné pour exclusion. Vous pouvez uniquement exclure des attributs lorsque vous ajoutez l'expression pour la première fois. Lorsque vous modifiez l'expression, la case à cocher Exclure les attributs entrants n'est pas disponible.

Les Paramètres sont les paramètres d'expression qui ont été ajoutés au flux de données à l'aide du générateur de condition (opérateurs de filtre, de jointure, de recherche et de fractionnement) ou du générateur d'expressions (opérateurs d'expression et d'agrégation. Un paramètre d'expression possède un nom, un type et une valeur par défaut. Reportez-vous à Ajout d'un paramètre d'expression.

Les fonctions sont des opérations effectuées sur les arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir des arguments. Voici la liste des fonctions disponibles pour créer les expressions :

Fonctions d'agrégation
FonctionDescriptionExemple
COUNT(value[, value]*)Renvoie le nombre de lignes pour lesquelles les expressions fournies ne sont pas NULL.COUNT(expr1)
COUNT(*)Renvoie le nombre total de lignes extraites, comprenant les lignes contenant la valeur NULL.COUNT(*)
MAX(value)Renvoie la valeur maximale de l'argument.MAX(expr)
MIN(value)Renvoie la valeur minimale de l'argument.MIN(expr)
SUM(numeric)Renvoie la somme calculée à partir des valeurs d'un groupe.SUM(expr1)
AVG(numeric)Renvoie la moyenne des valeurs numériques dans une expression.AVG(AGGREGATE_1.src1.attribute1)
LISTAGG(column[, delimiter]) WITHIN GROUP (order_by_clause)

Concatène les valeurs de la colonne d'entrée avec le délimiteur spécifié, pour chaque groupe en fonction de la clause order.

column contient les valeurs à concaténer dans le résultat.

delimiter sépare les valeurs de column dans le résultat. Si aucun délimiteur n'est fourni, un caractère vide est utilisé.

order_by_clause détermine l'ordre dans lequel les valeurs concaténées sont renvoyées.

Cette fonction peut uniquement être employée comme opérateur d'agrégation, et elle peut être utilisée avec ou sans regroupement. Sans regroupement, le résultat apparaît sur une seule ligne. Avec regroupement, la fonction renvoie une ligne pour chaque groupe.

Prenons une table comportant deux colonnes : id et name. La table contient trois lignes. Les valeurs de la colonne id sont 101, 102, 102. Les valeurs de la colonne name sont A, B, C.

+-----+--------+
| id  | name  |
+-----+--------+
| 101 | A     |
+-----+--------+
| 102 | B     |
+-----+--------+
| 102 | C     |
+-----+--------+

Exemple 1 : sans regroupement

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id) renvoie la colonne name avec la valeur A-B-C

+--------+
| name   |
+--------+
| A-B-C  |
+--------+

Exemple 2 : regroupement par id

LISTAGG(id, '-') WITHIN GROUP (ORDER BY id) renvoie la colonne name avec les valeurs A et B-C en deux groupes.

+--------+
| name   |
+--------+
| A      |
+--------+
| B-C    |
+--------+
Fonctions d'ordre supérieur

Les opérateurs de flux de données qui prennent en charge la création d'expressions et de types de données hiérarchiques peuvent utiliser des fonctions d'ordre supérieur.

Les opérateurs pris en charge sont les suivants :

  • Agréger

  • Expression

  • Filtre

  • Jointure

  • Code express

  • Fractionner

  • Faire pivoter

FonctionDescriptionExemple
TRANSFORM(column, lambda_function)Prend un tableau et une fonction anonyme, et configure un nouveau tableau en appliquant la fonction à chaque élément, et en affectant le résultat au tableau de sortie.Pour un tableau d'entrée d'entiers [1, 2, 3], TRANSFORM(array, x -> x + 1) renvoie un nouveau tableau de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les clés ont le type du résultat de la fonction lambda, et les valeurs ont le type des valeurs de la correspondance de colonne.Pour une correspondance d'entrée avec des clés entières et des valeurs de chaîne de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) renvoie une nouvelle correspondance de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les valeurs ont le type du résultat des fonctions lambda, et les clés ont le type des clés de correspondance de colonne. Pour une correspondance d'entrée avec des clés de chaîne et des valeurs de chaîne de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) renvoie une nouvelle correspondance de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Seul l'opérateur d'expression prend en charge ARRAY_SORT.

Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments.

La fonction doit renvoyer -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au second.

Si la fonction est omise, le tableau est trié par ordre croissant.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

Le tableau renvoyé est :

[1,5,6]

Opérateur de distinction

Utilisez l'opérateur de distinction pour renvoyer les lignes distinctes avec des valeurs uniques.

Ajout et configuration d'un opérateur de distinction
  1. Faites glisser un opérateur de division du panneau Opérateurs vers le canevas.
  2. Avec le focus sur l'opérateur de distinction, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.

    Les configurations de l'onglet Détails sont définies par défaut pour l'opérateur de distinction.

  3. Pour afficher la sortie de l'opérateur, cliquez sur l'onglet Données.
    Des lignes distinctes avec des valeurs uniques sont affichées. Vous pouvez également appliquer des transformations aux données ou sélectionner un attribut pour afficher un profil de données ou un profil d'attribut. En savoir plus sur les transformations de données.
  4. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. L'opérateur de distinction agit uniquement sur les attributs filtrés et renvoie les lignes distinctes avec des valeurs uniques.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, si vous appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numeric, varchar), les attributs sont filtrés par le modèle de nom *_CODE et par le type numeric ou varchar.
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  5. Dans l'onglet Données, affichez un échantillon des données en fonction des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  6. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.

Opérateur de tri

Utilisez l'opérateur de tri pour trier les données par ordre croissant ou décroissant.

Lorsque vous utilisez un opérateur de tri, nous vous recommandons de l'appliquer après les autres opérateurs. Cela garantit que l'opérateur de tri reste juste avant l'opérateur cible, ce qui permet d'insérer les données dans un ordre spécifique dans la cible.

Ajout et configuration d'un opérateur de tri

Lorsque vous utilisez un opérateur de tri, appliquez-le après les autres opérateurs de mise en forme et avant l'opérateur qui requiert le tri des données.

Par exemple, appliquez l'opérateur de tri avant un opérateur cible pour insérer les données dans la cible selon un ordre de tri spécifique.

  1. Dans le panneau Opérateurs, faites glisser un opérateur de tri vers le canevas.
  2. Avec le focus sur l'opérateur de tri, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. Dans la section Conditions de tri, sélectionnez Ajouter.

    Le panneau Ajouter une condition de tri affiche tous les champs d'attribut extraits de la table source.

  4. Dans le panneau Ajouter une condition de tri, sélectionnez l'attribut à utiliser pour le tri des données.
  5. Pour filtrer les attributs à l'aide de modèles de nom, saisissez un modèle de nom, par exemple, *CITY*.
  6. Pour l'ordre de tri, sélectionnez Ordre croissant ou Ordre décroissant, puis sélectionnez Ajouter.

    Chaque condition ajoutée apparaît dans la liste des conditions de tri.

    Remarque

    Vous pouvez ajouter plusieurs conditions de tri, une par une. Le tri agit en fonction de l'ordre des conditions de tri dans la liste. Par exemple, le tri commence selon la première condition de la liste. Les données triées sont ensuite triées à nouveau selon la deuxième condition, etc.

    Pour les données de type chaîne, l'opération de tri est basée sur l'ordre lexicographique.

  7. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  8. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  9. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Ajout de conditions de tri

Une fois que vous avez ajouté un opérateur de tri sur le canevas et que vous l'avez connecté à un autre opérateur, vous pouvez ajouter une condition de tri.

Dans le panneau Ajouter une condition de tri, vous pouvez sélectionner les attributs à trier à partir des champs répertoriés ou filtrer les noms d'attribut à l'aide de modèles. Pour les données de type chaîne, l'opération de tri est basée sur l'ordre lexicographique.

Pour ajouter des conditions de tri, procédez comme suit :

  1. Dans l'onglet Détails, accédez à la section Conditions du tri et sélectionnez Ajouter.

    Le panneau Ajouter une condition de tri affiche tous les champs d'attribut extraits de la table source.

  2. Dans le panneau Ajouter une condition de tri, sélectionnez l'attribut à utiliser pour le tri des données.
  3. Pour filtrer les attributs à l'aide de modèles de nom, saisissez un modèle de nom, par exemple, *CITY*.
  4. Pour l'ordre de tri, sélectionnez Ordre croissant ou Ordre décroissant, puis cliquez surAjouter.

    Chaque condition ajoutée apparaît dans la liste des conditions de tri.

    Remarque

    Vous pouvez ajouter plusieurs conditions de tri, une par une. Le tri agit en fonction de l'ordre des conditions de tri dans la liste. Par exemple, le tri est d'abord effectué en fonction de la première condition de la liste, puis les données triées sont à nouveau triées en fonction de la deuxième condition, etc.
Hiérarchisation des conditions de tri

Déplacez les conditions de tri vers le haut ou vers le bas de la liste pour hiérarchiser le tri.

Déplacer les conditions de tri vers le haut ou vers le bas vous permet de trier d'abord selon une condition de tri à priorité élevée, puis de re-trier les données triées selon la condition suivante dans la liste. Par exemple, pour trier les données d'abord par adresse, puis par code postal, déplacez la condition de tri associée à l'adresse au début.

Pour hiérarchiser les conditions de tri, procédez comme suit :

  1. Dans l'onglet Détails, accédez à la section Conditions de tri.
  2. Sélectionnez le menu Actions (Menu Actions) correspondant à la condition de tri à déplacer vers la haut ou le bas.
  3. Pour appliquer une condition de tri en premier, sélectionnez Déplacer vers le haut.
  4. Pour appliquer une condition de tri ultérieurement, sélectionnez Déplacer vers le bas.
    Le tri est d'abord appliqué à la condition déplacée vers le haut, puis à la condition déplacée vers le bas.
Modification des conditions de tri

Pour modifier les conditions de tri, procédez comme suit :

  1. Dans l'onglet Détails, accédez à la section Conditions de tri.
  2. Sélectionnez le menu Actions (Menu Actions) correspondant à la condition de tri à modifier, puis sélectionnez Modifier.
  3. Dans le panneau Modifier la condition de tri, sélectionnez le nouvel attribut ou filtrez les attributs en saisissant un modèle de nom.
    Les attributs ou modèles déjà sélectionnés, y compris leurs attributs associés, ne peuvent pas être sélectionnés.
Suppression de conditions de tri

Vous pouvez supprimer des conditions de tri une par une ou procéder à une suppression en masse.

Pour supprimer des conditions de tri, procédez comme suit :

  1. Dans l'onglet Détails, accédez à la section Conditions de tri.
  2. Pour supprimer une par une les conditions de tri, sélectionnez le menu Actions (Menu Actions) correspondant à la condition de tri à supprimer.
  3. Pour supprimer plusieurs conditions du tri, cochez les cases correspondantes, puis cliquez sur Supprimer en haut de la liste.

Opérateur d'union

Utilisez l'opérateur d'union pour effectuer une opération d'union entre plusieurs ensembles de données.

Présentation des types d'union

Vous pouvez effectuer une opération d'union sur dix opérateurs source au maximum. Vous devez configurer au moins deux entrées source. Vous pouvez choisir d'effectuer l'opération d'union en mettant en correspondance les noms d'attribut entre les attributs d'entrée source ou en fonction de la position des attributs.

Union selon le nom de l'attribut

Prenons les deux exemples d'entité de données suivants. L'entité de données 1 est définie en tant qu'entrée principale. L'entité de données résultante indique comment les données des deux entrées sont combinées lors d'une opération d'union par nom. L'entité de données résultante utilise le nom, l'ordre et le type de données de l'attribut de l'entité de données d'entrée principale.

Entité de données 1, entrée principale
Service LOCATION-ID Entrepôt
Informatique 1400 San Francisco
Expédition 1500 Southlake, Texas
Comptabilité 1700 New Jersey
Entité de données 2
Entrepôt LOCATION-ID Service
Denver 1600 Prestations
New York 1400 Construction
Entité de données résultante
Service LOCATION-ID Entrepôt
Informatique 1400 San Francisco
Expédition 1500 Southlake, Texas
Comptabilité 1700 New Jersey
Prestations 1600 Denver
Construction 1400 New York
Union selon la position de l'attribut

Prenons les deux exemples d'entité de données suivants. L'entité de données 2 est définie en tant qu'entrée principale. L'entité de données résultante indique comment les données des deux entrées sont combinées lors d'une opération d'union par position. L'entité de données résultante utilise le nom, l'ordre et le type de données de l'attribut de l'entité de données d'entrée principale.

Entité de données 1
Service LOCATION-ID Entrepôt
Informatique 1400 San Francisco
Expédition 1500 Southlake, Texas
Comptabilité 1700 New Jersey
Entité de données 2, entrée principale
Entrepôt LOCATION-ID Service
Denver 1600 Prestations
New York 1400 Construction
Entité de données résultante
Entrepôt LOCATION-ID Service
Denver 1600 Prestations
New York 1400 Construction
Informatique 1400 San Francisco
Expédition 1500 Southlake, Texas
Comptabilité 1700 New Jersey
Ajout et configuration d'un opérateur d'union
  1. Pour ajouter un opérateur d'union au flux de données, faites glisser l'opérateur d'union du panneau Opérateurs vers le canevas. Vous pouvez effectuer une opération d'union sur dix sources de données au maximum.
    L'onglet Détails de l'opérateur d'union apparaît dans le panneau des propriétés.
  2. Dans l'onglet Détails, entrez le nom de l'opération d'union dans le champ Identificateur ou laissez le nom en l'état.
  3. Indiquez comment effectuer l'opération d'union à l'aide du champ Mettre en correspondance les attributs d'entrée par. Les deux options suivantes sont disponibles :
    • Nom : les noms d'attribut dans les sources sont mis en correspondance pour effectuer l'opération d'union. Les noms et les types de données des attributs, ainsi que le nombre d'attributs entre les entrées doivent être identiques. La correspondance distingue les minuscules des majuscules. Consultez les exemples pour comprendre le fonctionnement de l'opération d'union par nom.
    • Position : les attributs dans les sources sont mis en correspondance en fonction de leur position. Le nombre d'attributs et les types de données des attributs entre les entrées doivent être identiques. Consultez les exemples pour comprendre le fonctionnement de l'opération d'union par position.
  4. Pour Union complète, cochez la case si vous voulez que l'opération renvoie toutes les lignes de toutes les entités de données connectées sans éliminer les doublons.
  5. Dans entrée principale, sélectionnez la source qui doit être considérée comme la source clé dans l'opération d'union. Cette entrée principale détermine les noms d'attribut, les types de données d'attribut et l'ordre des attributs résultant de l'opération d'union. Par défaut, la première source ajoutée au flux de données est définie en tant qu'entrée principale.
  6. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, si vous appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numeric, varchar), les attributs sont filtrés par le modèle de nom *_CODE et par le type numeric ou varchar.
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  7. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  8. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.

Opérateur de soustraction

Utilisez l'opérateur de soustraction pour comparer deux entités de données et renvoyer les lignes présentes dans l'une mais pas dans l'autre.

Vous pouvez choisir de conserver ou d'éliminer les lignes en double dans les données obtenues.

Présentation des types de soustraction

Vous pouvez effectuer une opération de soustraction sur deux opérateurs source uniquement. Vous pouvez choisir d'effectuer l'opération de soustraction en mettant en correspondance les noms d'attribut entre les attributs d'entrée source ou en fonction de la position des attributs.

Soustraction selon le nom de l'attribut

Prenons les deux exemples d'entité de données suivants. L'entité de données 1 est définie en tant qu'entrée principale. L'entité de données résultante indique comment les données des deux entrées sont soustraites lors d'une opération de soustraction par nom. L'entité de données résultante utilise le nom, l'ordre et le type de données de l'attribut de l'entité de données d'entrée principale.

Entité de données 1, entrée principale
ServiceLOCATION-IDEntrepôt
Informatique1400San Francisco
Expédition1500Austin
Comptabilité1700New Jersey
Entité de données 2
ServiceEntrepôtLOCATION-ID
PrestationsDenver1600
InformatiqueSan Francisco1400
Entité de données résultante
ServiceLOCATION-IDEntrepôt
Expédition1500Austin
Comptabilité1700New Jersey
Soustraction selon la position de l'attribut

Prenons les deux exemples d'entité de données suivants. L'entité de données 2 est définie en tant qu'entrée principale. L'entité de données résultante indique comment les données des deux entrées sont soustraites lors d'une opération de soustraction par position. L'entité de données résultante utilise le nom, l'ordre et le type de données de l'attribut de l'entité de données d'entrée principale.

Entité de données 1
ServiceLOCATION-IDEntrepôt
Informatique1400San Francisco
Expédition1500Austin
Comptabilité1700New Jersey
Entité de données 2, entrée principale
Nom du serviceEmplacementVille de l'entrepôt
Prestations1600Denver
Informatique1400San Francisco
Entité de données résultante
Nom du serviceEmplacementVille de l'entrepôt
Prestations1600Denver
Ajout et configuration d'un opérateur de soustraction
  1. Pour ajouter un opérateur de soustraction au flux de données, faites glisser l'opérateur de moins du panneau Opérateurs vers le canevas.
    L'onglet Détails de l'opérateur de réduction apparaît dans le panneau Propriétés.
  2. Dans l'onglet Détails, entrez le nom de l'opération de réduction dans le champ Identificateur ou laissez le nom tel quel.
  3. Indiquez comment effectuer l'opération de réduction à l'aide du champ Mettre en correspondance les attributs d'entrée par. Les deux options suivantes sont disponibles :
    • Nom : les noms d'attribut dans les sources sont mis en correspondance pour effectuer l'opération de moins. Les noms et les types de données des attributs, ainsi que le nombre d'attributs entre les entrées doivent être identiques. La correspondance distingue les minuscules des majuscules. Consultez les exemples pour comprendre le fonctionnement de l'opération de soustraction par nom.
    • Position : les attributs dans les sources sont mis en correspondance en fonction de leur position. Le nombre d'attributs et les types de données des attributs entre les entrées doivent être identiques. Consultez les exemples pour comprendre le fonctionnement de l'opération de soustraction par position.
  4. Pour Soustraire tout, cochez la case si vous voulez que l'opération renvoie toutes les lignes trouvées dans une entité de données qui ne sont pas présentes dans l'autre entité de données, sans éliminer les doublons.
  5. Dans entrée principale, sélectionnez la source à utiliser comme source principale dans l'opération de soustraction. L'entrée principale détermine les noms d'attribut, les types de données d'attribut et l'ordre des attributs dans la sortie obtenue. Par défaut, la première source connectée à l'opérateur de soustraction est définie en tant qu'entrée principale.
    Icône Entrée principale Description
    diagramme de venn de jointure externe gauche Soustraction à gauche Sélectionne toutes les lignes distinctes restantes dans la source entrante 1 après élimination des lignes avec une correspondance avec la source entrante 2.
    diagramme de venn de jointure externe droite Soustraction à droite Sélectionne toutes les lignes distinctes restantes dans la source entrante 2 après élimination des lignes avec une correspondance avec la source entrante 1.
  6. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, si vous appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numeric, varchar), les attributs sont filtrés par le modèle de nom *_CODE et par le type numeric ou varchar.
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  7. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  8. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.

Opérateur d'intersection

Utilisez l'opérateur d'intersection pour comparer plusieurs entités de données et renvoyer les lignes présentes dans les entités connectées.

Vous pouvez choisir de conserver ou d'éliminer les lignes en double dans les données obtenues.

Présentation des types d'intersection

Vous pouvez effectuer une opération d'intersection sur plusieurs opérateurs source. Vous pouvez choisir d'effectuer l'opération en mettant en correspondance les noms d'attribut entre les attributs d'entrée source ou en fonction de la position des attributs.

Intersection selon le nom de l'attribut

Prenons les deux exemples d'entité de données suivants. L'entité de données 1 est définie en tant qu'entrée principale. L'entité de données résultante indique comment les données des deux entrées se rejoignent selon le nom d'attribut. L'entité de données résultante utilise le nom, l'ordre et le type de données de l'attribut de l'entité de données d'entrée principale.

Entité de données 1, entrée principale
ServiceLOCATION-IDEntrepôt
Informatique1400San Francisco
Expédition1500Austin
Comptabilité1700New Jersey
Entité de données 2
ServiceEntrepôtLOCATION-ID
PrestationsDenver1600
InformatiqueSan Francisco1400
Entité de données résultante
ServiceLOCATION-IDEntrepôt
Informatique1400San Francisco
Intersection selon la position de l'attribut

Prenons les deux exemples d'entité de données suivants. L'entité de données 2 est définie en tant qu'entrée principale. L'entité de données résultante indique comment les données des deux entrées se rejoignent selon la position d'attribut. L'entité de données résultante utilise le nom, l'ordre et le type de données de l'attribut de l'entité de données d'entrée principale.

Entité de données 1
ServiceLOCATION-IDEntrepôt
Informatique1400San Francisco
Expédition1500Austin
Comptabilité1700New Jersey
Entité de données 2, entrée principale
Nom du serviceEmplacementVille de l'entrepôt
Prestations1600Denver
Informatique1400San Francisco
Entité de données résultante
Nom du serviceEmplacementVille de l'entrepôt
Informatique1400San Francisco
Ajout et configuration d'un opérateur d'intersection
  1. Pour ajouter un opérateur d'intersection au flux des données, glissez-déplacez l'opérateur d'intersection du panneau Opérateurs vers le canevas.
    L'onglet Détails de l'opérateur d'intersection apparaît dans le panneau Propriétés.
  2. Dans l'onglet Détails, entrez le nom de l'opération d'intersection dans le champ Identificateur ou laissez le nom en l'état.
  3. Indiquez comment effectuer l'opération d'intersection à l'aide du champ Mettre en correspondance les attributs d'entrée par. Les deux options suivantes sont disponibles :
    • Nom : les noms d'attribut dans les sources sont mis en correspondance pour effectuer l'opération d'intersection. Les noms et les types de données des attributs, ainsi que le nombre d'attributs entre les entrées doivent être identiques. La correspondance distingue les minuscules des majuscules. Consultez les exemples pour comprendre le fonctionnement de l'opération d'intersection par nom.
    • Position : les attributs dans les sources sont mis en correspondance en fonction de leur position. Le nombre d'attributs et les types de données des attributs entre les entrées doivent être identiques. Consultez les exemples pour comprendre le fonctionnement de l'opération d'intersection par position.
  4. Pour Intersection complète, cochez la case si vous voulez que l'opération renvoie toutes les lignes dans la sortie obtenue sans éliminer les doublons.
  5. Dans entrée principale, sélectionnez la source à utiliser comme source principale dans l'opération d'intersection. L'entrée principale détermine les noms d'attribut, les types de données d'attribut et l'ordre des attributs dans la sortie obtenue. Par défaut, la première source connectée à l'opérateur d'intersection est définie en tant qu'entrée principale.
  6. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, si vous appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numeric, varchar), les attributs sont filtrés par le modèle de nom *_CODE et par le type numeric ou varchar.
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  7. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  8. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.

Opérateur de fractionnement

Utilisez l'opérateur de fractionnement pour diviser une source de données d'entrée en deux ports de sortie ou plus selon les conditions de fractionnement évaluées dans une séquence.

Chaque condition de fractionnement possède un port de sortie. Les données qui remplissent une condition sont dirigées vers le port de sortie correspondant.

Par défaut, un opérateur de fractionnement est configuré avec la condition Sans correspondance, qui est toujours disponible dans la séquence en tant que dernière condition. Vous ne pouvez pas ajouter votre propre condition à la condition Sans correspondance. Vous ne pouvez pas non plus supprimer la condition Sans correspondance.

L'opérateur évalue les conditions une par une. Une fois que toutes les conditions de la séquence ont été évaluées, les données qui ne remplissent pas une condition sont dirigées vers le port de sortie Sans correspondance.

Exemple de fractionnement

Prenons l'entité de données BANK, avec les attributs BANK_ID et BANK_NAME.

Vous configurez deux conditions de fractionnement. La séquence complète, condition Sans correspondance incluse, est la suivante :

Port de sortie de la conditionCondition
CONDITION1SPLIT_1.BANK.BANK_ID<102
CONDITION2SPLIT_1.BANK.BANK_ID<104
UNMATCHEDLa condition UNMATCHED par défaut dirige toutes les données qui ne remplissent pas les autres conditions de la séquence vers le port de sortie UNMATCHED.
Entité de données BANK

L'entité de données comporte quatre lignes.

BANK_IDBANK_NAME
101A Bank 101
102B Bank 102
103C Bank 103
104D Bank 104
Sortie de Condition1, première condition de correspondance

CONDITION1 renvoie une ligne correspondante.

BANK_IDBANK_NAME
101A Bank 101
Sortie de Condition2, première condition de correspondance

CONDITION2 renvoie deux lignes correspondantes (provenant des lignes sans correspondance après CONDITION1).

BANK_IDBANK_NAME
102B Bank 102
103C Bank 103
Sortie de condition Sans correspondance, première condition de correspondance

La condition UNMATCHED renvoie la ligne restante.

BANK_IDBANK_NAME
104D Bank 104
Sortie de Condition1, toutes les conditions de correspondance

CONDITION1 renvoie une ligne correspondante.

BANK_IDBANK_NAME
101A Bank 101
Sortie de Condition2, toutes les conditions de correspondance

Toutes les données sont évaluées par CONDITION2, renvoyant trois lignes correspondantes.

BANK_IDBANK_NAME
101A Bank 101
102B Bank 102
103C Bank 103
Sortie de condition Sans correspondance, toutes les conditions de correspondance

La condition UNMATCHED renvoie les lignes qui ne remplissent pas les conditions CONDITION1 et CONDITION2.

BANK_IDBANK_NAME
104D Bank 104
Ajout et configuration d'un opérateur de fractionnement

Lorsque vous ajoutez un opérateur de fractionnement sur le canevas, par défaut, l'icône de l'opérateur apparaît sous forme développée et affiche la condition de fractionnement Sans correspondance. La condition Sans correspondance dirige toutes les données qui ne remplissent pas les autres conditions que vous ajoutez à la séquence.

  1. Dans le panneau Opérateurs, faites glisser un opérateur de fractionnement vers le canevas.
  2. Avec le focus sur l'opérateur de fractionnement, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom en l'état.
  3. Sous Mettre en correspondance, indiquez comment gérer les données entrantes qui répondent à une condition de fractionnement. Les deux options suivantes sont disponibles :
    • première condition de correspondance : les données correspondant à la première condition de la séquence sont enlevées du traitement ultérieur par les conditions suivantes.

      Par exemple, prenons une séquence avec quatre conditions, dont la dernière condition Sans correspondance : Condition1, Condition2, Condition3 et Sans correspondance.

      Pour Condition1, l'opération ne trouve aucune correspondance. Pour Condition2, des correspondances sont trouvées. L'opération achemine les données mises en correspondance vers le port de sortie spécifié pour Condition2, puis évalue les données sans correspondance pour Condition3. Si aucune correspondance n'est trouvée pour Condtion3, toutes les données sont acheminées vers le port de sortie spécifié pour la condition Sans correspondance. Toutefois, si des correspondances sont trouvées pour Condition3, l'opération achemine les données correspondantes vers le port de sortie de Condition3, puis achemine les données restantes vers le port de la condition Sans correspondance.

    • Toutes les conditions de correspondance : les données correspondant à une condition sont évaluées pour toutes les conditions de la séquence.

      Par exemple, prenons une séquence avec Condition1 et Condition2. Des correspondances sont trouvées après l'évaluation de Condition1. Les données mises en correspondance sont acheminées vers le port de sortie spécifié pour Condition1. Toutes les données (avec et sans correspondance) sont ensuite évaluées par Condition2. Les données correspondant à Condition2 sont acheminées vers le port de sortie associé. Les données qui ne correspondent pas à Condition1 et à Condition2 sont acheminées vers le port de sortie de la condition de fractionnement Sans correspondance.

  4. Sous Conditions de fractionnement, sélectionnez Ajouter une condition pour ajouter une condition de fractionnement.
    1. Dans le panneau pour ajouter une condition de fractionnement, modifiez la valeur Identificateur ou laissez-la telle quelle.
    2. Dans la section Générateur de condition, vous pouvez cliquer deux fois sur des attributs, des paramètres et des fonctions, ou les faire glisser pour les ajouter à l'éditeur afin de créer une condition. Vous pouvez également entrer une expression de condition manuellement dans l'éditeur et valider l'expression.
      Remarque

      Dans l'éditeur, un élément ajouté tel qu'une fonction peut comporter des espaces réservés. Pour remplacer un espace réservé par un autre élément, mettez en surbrillance l'espace réservé, puis cliquez deux fois sur un autre élément de la liste.
    3. Sélectionnez Ajouter.
      La première condition que vous ajoutez est insérée avant la condition Sans correspondance. Vous pouvez également afficher la séquence de conditions dans l'icône d'opérateur développée sur le canevas.
    4. Répétez les étapes pour ajouter d'autres conditions afin de former une séquence.
      La deuxième condition est insérée dans la séquence entre la première et Sans correspondance. Les conditions suivantes sont toujours insérées avant la condition Sans correspondance. La séquence de conditions de fractionnement est également reflétée dans l'icône d'opérateur de fractionnement développée sur le canevas.
  5. Pour connecter un port de sortie d'une condition de fractionnement à un autre opérateur sur le canevas, procédez comme suit :
    1. Développez l'icône de l'opérateur de fractionnement pour afficher la séquence de conditions.
      Si l'icône de l'opérateur de fractionnement n'est pas développée, vous pouvez toujours connecter l'opérateur à l'opérateur suivant, mais le lien est créé à partir du port de la condition Sans correspondance.
    2. Positionnez le curseur de la souris sur la fin d'une condition, puis faites glisser le petit cercle sur le côté droit de la condition vers l'opérateur de mise en forme suivant ou vers une cible.
    3. Connectez chaque condition à la cible ou à l'opérateur approprié.
    Chaque port de sortie de condition peut être lié à plusieurs opérateurs de mise en forme et opérateurs cible. Si l'icône de l'opérateur de fractionnement n'est pas développée sur le canevas, vous pouvez positionner le curseur de la souris sur une ligne de lien pour afficher le nom de la condition de ce lien.
  6. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  7. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le menu Port de sortie conditionnelle affiche le même nombre d'éléments que le nombre de conditions configurées sur l'opérateur, condition Sans correspondance incluse. Par défaut, la sortie du port de la première condition est affichée. Pour modifier la vue de sortie, sélectionnez le port de sortie de condition dans le menu.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  8. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Ajout d'une condition de fractionnement

Utilisez le générateur de condition pour sélectionner visuellement des éléments afin de créer et d'ajouter une condition de fractionnement. Vous pouvez également entrer une condition de fractionnement manuellement dans l'éditeur.

Vous pouvez ajouter des conditions de fractionnement à une séquence de conditions existante. Les conditions de fractionnement sont ajoutées à la fin de la séquence, avant la condition Sans correspondance. Vous ne pouvez pas ajouter votre propre condition à la condition Sans correspondance.

Les éléments que vous pouvez utiliser dans une condition de fractionnement sont les fonctions, attributs et paramètres entrants. Vous pouvez cliquer deux fois sur un élément de la liste ou le faire glisser pour l'ajouter à l'éditeur afin de créer une condition. Vous pouvez valider la condition avant de la créer.

La zone Entrant affiche les attributs du port amont. Par exemple :

SPLIT_1.BANK.BANK_NAME='ABC Bank'

Les Paramètres sont les paramètres d'expression qui ont été ajoutés au flux de données à l'aide du générateur de condition (opérateurs de filtre, de jointure, de recherche et de fractionnement) ou du générateur d'expressions (opérateurs d'expression et d'agrégation. Un paramètre d'expression possède un nom, un type et une valeur par défaut. Reportez-vous à Ajout d'un paramètre d'expression.

Supposons que vous créez un paramètre VARCHAR portant le nom P_VARCHAR_NAME et que vous définissez la valeur par défaut sur ABC BANK. Vous pouvez ensuite utiliser le paramètre dans une condition de fractionnement comme suit :

SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME

Les fonctions sont les fonctions disponibles dans Data Integration que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur les arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir des arguments.

Supposons que vous créez un paramètre VARCHAR portant le nom P_VARCHAR_LIKE et que vous définissez la valeur par défaut sur B%. Vous pouvez ensuite utiliser le paramètre dans une condition de fractionnement comme suit :

SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE

Voici la liste des fonctions que vous pouvez ajouter lorsque vous construisez des conditions :

Fonctions de hachage
FonctionDescriptionExemple
MD5(all data types)Calcule un checksum MD5 du type de données et renvoie une valeur de chaîne. MD5(column_name)
SHA1(all data types)Calcule une valeur de hachage SHA-1 du type de données et renvoie une valeur de chaîne. SHA1(column_name)
SHA2(all data types, bitLength)Calcule une valeur de hachage SHA-2 du type de données et renvoie une valeur de chaîne. bitLength est un entier. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcule une valeur de hachage pour expr et renvoie une valeur NUMBER.

expr peut être une expression, une colonne ou un littéral.

max_bucket est la valeur de bucket maximale renvoyée, comprise entre 0 et 4294967295 (valeur par défaut).

seed_value est une valeur comprise entre 0 (valeur par défaut) et 4294967295.

Oracle applique la fonction de hachage à la combinaison de expr et seed_value afin de produire de nombreux résultats différents pour le même ensemble de données.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Fonctions arithmétiques
FonctionDescriptionExemple
ABS(numeric)Renvoie la puissance absolue de la valeur numeric.ABS(-1)
CEIL(numeric)Renvoie l'entier le plus petit qui n'est pas supérieur à la valeur numericCEIL(-1,2)
FLOOR(numeric)Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numericFLOOR(-1,2)
MOD(numeric1, numeric2)Renvoie le reste après que numeric1 est divisé par numeric2.MOD(8,2)
POWER(numeric1, numeric2)Place numeric1 comme puissance de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Renvoie numeric1 arrondi à numeric2 décimales.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Renvoie numeric1 tronqué à numeric2 décimales.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Convertit une valeur expr en nombre, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format pris en charge :

  • 0 : chiffre
  • # : chiffre (zéro affiché comme absent)
  • . : espace réservé pour le séparateur décimal
  • , : espace réservé pour le séparateur de groupes
  • E : sépare la mantisse et l'exposant pour les formats exponentiels
  • - : préfixe négatif par défaut
  • ¤ : signe de devise ; remplacé par le symbole de devise ; s'il est double, remplacé par le symbole de devise internationale ; s'il est présent dans un modèle, le séparateur décimal monétaire est utilisé à la place du séparateur décimal

TO_NUMBER('5467.12') returns renvoie 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') renvoie -45677.7

Fonctions de date et d'heure
Fonction Description Exemple
CURRENT_DATE Renvoie la date actuelle. CURRENT_DATErenvoie la date du jour, par exemple 2023-05-26
CURRENT_TIMESTAMP Renvoie la date et l'heure en cours du fuseau horaire de la session. CURRENT_TIMESTAMP renvoie la date du jour et l'heure actuelle, par exemple 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Renvoie la date qui correspond au nombre (number) de jours indiqué après la valeur date spécifiée. DATE_ADD('2017-07-30', 1) renvoie 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formate une valeur expr de date, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format de date pris en charge :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') renvoie '2020-10-11'. Le premier argument est un objet Date représentant le 11 octobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') renvoie '2018/junio/17'

DAYOFMONTH(date) Renvoie le jour de la date dans le mois. DAYOFMONTH('2020-12-25') renvoie 25
DAYOFWEEK(date) Renvoie le jour de la date dans la semaine. DAYOFWEEK('2020-12-25') renvoie 6 pour vendredi. Aux États-Unis, dimanche est considéré comme 1, lundi est 2, et ainsi de suite.
DAYOFYEAR(date) Renvoie le jour de la date dans l'année. DAYOFYEAR('2020-12-25') renvoie 360
WEEKOFYEAR(date) Renvoie la semaine de la date dans l'année.

WEEKOFYEAR('2022-07-28') renvoie 30

WEEKOFYEAR('2022-07-28 13:24:30') renvoie 30

HOUR(datetime) Renvoie la valeur d'heure de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 15
LAST_DAY(date) Renvoie le dernier jour du mois de la date. LAST_DAY('2020-12-25') renvoie 31
MINUTE(datetime) Renvoie la valeur de minute de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 10
MONTH(date) Renvoie la valeur de mois de la date. MONTH('2020-06-25') renvoie 6
QUARTER(date) Renvoie le trimestre de l'année correspondant à la date. QUARTER('2020-12-25') renvoie 4
SECOND(datetime) Renvoie la valeur de seconde de la date et de l'heure. SECOND('2020-12-25 15:10:30') renvoie 30
TO_DATE(string, format_string[, localeStr]) Analyse l'expression de chaîne avec l'expression format_string pour générer une date. L'environnement local est facultatif. La valeur par défaut est en-US. Balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les chaînes de format distinguant les minuscules des majuscules prises en charge sont les suivantes :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') renvoie la valeur Date 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') renvoie la valeur Date 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Convertit une valeur expr VARCHAR en valeur TIMESTAMP, en fonction des éléments format_string et localeStr (facultatif) fournis.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') renvoie un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020
WEEK(date)

Renvoie la valeur de semaine de la date.

WEEK('2020-06-25') renvoie 4
YEAR(date) Renvoie la valeur d'année de la date. YEAR('2020-06-25') renvoie 2020
ADD_MONTHS(date_expr, number_months) Renvoie la date après ajout du nombre de mois spécifié à la date, à la chaîne ou à l'horodatage spécifié avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) renvoie 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) renvoie 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Renvoie le nombre de mois entre start_date_expr et end_date_expr. start_date_expr et end_date_expr peuvent être des dates, des horodatages ou des chaînes avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Un nombre entier est renvoyé si les deux dates sont le même jour du mois ou le dernier jour de leurs mois respectifs. Sinon, la différence est calculée sur la base de 31 jours par mois.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') renvoie 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') renvoie 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') renvoie 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interprète une date, un horodatage ou une chaîne en temps UTC, converti ensuite en horodatage dans le fuseau horaire spécifié.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Convertit une date, un horodatage ou une chaîne dans le fuseau horaire spécifié en horodatage UTC.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Convertit la période ou l'heure UNIX spécifiée en chaîne qui représente l'horodatage correspondant dans le fuseau horaire système en cours et dans le format spécifié.

Remarque : l'heure Unix est le nombre de secondes qui s'est écoulé depuis le 1er janvier 1970 à 00:0:00 UTC.

Si fmt est omis, le format par défaut est yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) renvoie '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) renvoie '2021-11-18 10:07:34'

Le fuseau horaire par défaut est PST dans les exemples

UNIX_TIMESTAMP([time_expr[, fmt]])

Convertit l'heure en cours ou spécifiée en horodatage Unix en secondes.

time_expr est une date, un horodatage ou une chaîne avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Si time_expr n'est pas fourni, l'heure en cours est convertie.

Si time_expr est une chaîne et que fmt est omis, la valeur par défaut est yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') renvoie 28800

Le fuseau horaire par défaut est PST dans cet exemple

INTERVAL 'year' YEAR[(year_precision)]

Renvoie une période en années.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '1' YEAR renvoie un intervalle de 1 an

INTERVAL '200' YEAR(3) renvoie un intervalle de 200 ans

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Renvoie une période en années et en mois. Permet de stocker une période à l'aide des champs year et month.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '100-5' YEAR(3) TO MONTH renvoie un intervalle de 100 ans et 5 mois. Vous devez indiquer une précision de 3 pour l'année de début.
INTERVAL 'month' MONTH[(month_precision)]

Renvoie une période en mois.

month_precision est le nombre de chiffres du champ mois ; il varie de 0 à 9. Si month_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '200' MONTH(3) renvoie un intervalle de 200 mois. Vous devez indiquer une précision de 3 pour le mois.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en jours, heures, minutes et secondes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) renvoie un intervalle de 11 jours, 10 heures, 9 minutes, 8 secondes et 555 millièmes de seconde
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en jours, heures et minutes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '11 10:09' DAY TO MINUTE renvoie un intervalle de 11 jours, 10 heures et 9 minutes
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Renvoie une période en jours et heures.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '100 10' DAY(3) TO HOUR renvoie un intervalle de 100 jours et 10 heures
INTERVAL 'day' DAY[(day_precision)]

Renvoie une période en jours.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

INTERVAL '999' DAY(3) renvoie un intervalle de 999 jours
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en heures, minutes et secondes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) renvoie un intervalle de 9 heures, 8 minutes et 7,6666666 secondes
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en heures et minutes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '09:30' HOUR TO MINUTE renvoie un intervalle de 9 heures et 30 minutes
INTERVAL 'hour' HOUR[(hour_precision)]

Renvoie une période en heures.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '40' HOUR renvoie un intervalle de 40 heures
INTERVAL 'minute' MINUTE[(minute_precision)]

Renvoie une période en minutes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '15' MINUTE renvoie un intervalle de 15 minutes
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en minutes et secondes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '15:30' MINUTE TO SECOND renvoie un intervalle de 15 minutes et 30 secondes
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Renvoie une période en secondes.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire du champ second ; il est compris entre 0 et 9. La valeur par défaut est 3.

INTERVAL '15.678' SECOND renvoie un intervalle de 15,678 secondes
Fonctions analytiques
Fonction Description Exemple
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Renvoie la valeur évaluée à la ligne qui est la première ligne du cadre de la fenêtre. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la première valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné avant la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) renvoie la valeur BANK_ID de la deuxième ligne avant la ligne en cours, partitionnée par BANK_ID et dans l'ordre décroissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Renvoie la valeur évaluée à la ligne qui est la dernière ligne du cadre de la fenêtre. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la dernière valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné après la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie la valeur BANK_ID de la deuxième ligne après la ligne en cours, partitionnée par BANK_ID et dans l'ordre croissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
RANK() OVER([ partition_clause ] order_by_clause) Renvoie le rang de la ligne en cours avec les intervalles, à partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le rang de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Renvoie le numéro unique de la ligne en cours dans sa partition, à partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le numéro unique de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
Fonctions de chaîne
FonctionsDescriptionExemple
CAST(value AS type)Renvoie la valeur indiquée dans le type spécifié.CAST("10" AS INT) renvoie 10
CONCAT(string, string)Renvoie les valeurs combinées des chaînes ou des colonnes.CONCAT('Oracle','SQL') renvoie OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Renvoie les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur indiqué entre les chaînes ou les colonnes.

Un séparateur est requis et doit être une chaîne.

Au moins une expression doit être fournie après le séparateur. Par exemple : CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') renvoie Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) renvoie 123 MyCity 987654

Si un enfant de la fonction est un tableau, ce dernier est mis à plat :

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) renvoie 1,2,3,4,5,6,7,8,9

INITCAP(string)Renvoie la chaîne avec la première lettre de chaque mot en majuscule, tandis que toutes les autres sont en minuscules et chaque mot est délimité par un caractère non imprimable.INITCAP('oRACLE sql') renvoie Oracle Sql
INSTR(string, substring[start_position])Renvoie l'index (base 1) de la première occurrence de substring dans string.INSTR('OracleSQL', 'SQL') renvoie 7
LOWER(string)Renvoie la chaîne avec toutes les lettres passées en minuscules.LOWER('ORACLE') renvoie oracle
LENGTH(string)Renvoie la longueur (en caractères) de la chaîne ou le nombre d'octets des données binaires. La longueur de la chaîne inclut les espaces de fin.LENGTH('Oracle') renvoie 6
LTRIM(string)Renvoie la chaîne avec les espaces de début enlevés à gauche.LTRIM(' Oracle')
NVL(expr1, epxr2)Renvoie l'argument qui n'est pas NULL.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Recherche et extrait la chaîne qui correspond à un modèle d'expression régulière dans la chaîne d'entrée. Si l'index de groupe de capture (facultatif) est fourni, la fonction extrait le groupe spécifique.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') renvoie https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) renvoie 22
REPLACE(string, search, replacement)Remplace toutes les occurrences de search par replacement.

Si search est introuvable dans la chaîne, la chaîne est renvoyée sans modification.

Si replacement n'est pas spécifié ou est une chaîne vide, rien ne remplace l'élément search, qui est enlevé de string.

REPLACE('ABCabc', 'abc', 'DEF') renvoie ABCDEF
RTRIM(string)Renvoie la chaîne avec les espaces de fin enlevés à droite.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Renvoie la sous-chaîne commençant à la position indiquée. SUBSTRING('Oracle SQL' FROM 2 FOR 3) renvoie rac
Pour les nombres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale])Convertit des nombres et des dates en chaînes. Pour les nombres, aucun format n'est requis. Pour les dates, utilisez le même format que DATE_FORMAT décrit dans Fonctions de date et d'heure. L'environnement local par défaut est en-US. Reportez-vous aux balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format de date pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

Exemple de nombre : TO_CHAR(123) renvoie 123

Exemple de date : TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') renvoie la chaîne 2020.10.30. Le premier argument est un objet Date représentant le 30 octobre 2020

UPPER(string)Renvoie la chaîne avec toutes les lettres passées en majuscules.UPPER('oracle') renvoie ORACLE
LPAD(str, len[, pad])Renvoie une chaîne complétée à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.LPAD('ABC', 5, '*') renvoie '**ABC'
RPAD(str, len[, pad])Renvoie une chaîne complétée à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Fonctions d'opérateur (comparaison)
FonctionDescriptionExemple
CASE WHEN condition1 THEN result1 ELSE result2 ENDRenvoie la valeur pour laquelle une condition est remplie.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END renvoie ABC si 1> 0, sinon, renvoie XYZ
ANDOpérateur AND logique. Renvoie true si les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 AND y = 20) renvoie "true" si x est égal à 10 et y est égal à 20. Si l'une des conditions n'est pas remplie, la fonction renvoie "false".
OROpérateur OR logique. Renvoie true si l'une des opérandes ou les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 OR y = 20) renvoie "false" si x n'est pas égal à 10 et que y n'est pas égal à 20. Si l'une des conditions est remplie, la fonction renvoie "true".
NOTOpérateur NOT logique.
LIKEExécute la correspondance de modèle de chaîne, si string1 correspond au modèle dans string2.
=Recherche l'égalité. Renvoie true si la valeur expr1 est égale à expr2. Sinon, renvoie false.x = 10 renvoie "true" lorsque la valeur de x est 10, sinon, renvoie "false"
!=Recherche l'inégalité. Renvoie true si la valeur expr1 est différente de expr2. Sinon, renvoie false.x != 10 renvoie "false" lorsque la valeur de x est 10, sinon, renvoie "true"
>Recherche une expression supérieure. Renvoie true si la valeur expr1 est supérieure à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure à 10, sinon, renvoie "false"
>=Recherche une expression supérieure ou égale. Renvoie true si la valeur expr1 est supérieure ou égale à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure ou égale à 10, sinon, renvoie "false"
<Recherche une expression inférieure. Renvoie true si la valeur expr1 est inférieure à expr2.x < 10 renvoie "true" lorsque la valeur de x est inférieure à 10, sinon, renvoie "false"
<=Recherche une expression inférieure ou égale. Renvoie true si la valeur expr1 est inférieure ou égale à expr2.x <= 10 renvoie "true" lorsque la valeur de x est inférieure ou égale à 10, sinon, renvoie "false"
||Concatène deux chaînes.'XYZ' || 'hello' renvoie 'XYZhello'
BETWEENEvalue une plage.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVérifie si une expression correspond à une liste de valeurs.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Fonctions d'ID unique
FonctionDescriptionExemple
NUMERIC_ID()Génère un identificateur universel unique qui est un numéro 64 bits pour chaque ligne.NUMERIC_ID() renvoie, par exemple, 3458761969522180096 et 3458762008176885761
ROWID()Génère une augmentation monotone des numéros 64 bits.ROWID() renvoie, par exemple, 0, 1, 2, etc.
UUID()Génère un identificateur universel unique qui est une chaîne 128 bits pour chaque ligne.UUID() renvoie, par exemple, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Génère des entiers 64 bits uniques croissants de manière monotone qui ne sont pas des nombres consécutifs. MONOTONICALLY_INCREASING_ID() renvoie, par exemple, 8589934592 et 25769803776
Fonctions conditionnelles
FonctionDescriptionExemple
COALESCE(value, value [, value]*)Renvoie le premier argument non NULL, le cas échéant, sinon, renvoie la valeur NULL.COALESCE(NULL, 1, NULL) renvoie 1
NULLIF(value, value)Renvoie la valeur NULL si les deux valeurs sont égales, sinon, renvoie la première valeur.NULLIF('ABC','XYZ') renvoie ABC
Fonctions hiérarchiques
FonctionDescriptionExemple
SCHEMA_OF_JSON(string)Analyse une chaîne JSON et déduit le schéma au format DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') renvoie 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') renvoie 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.

  • Map, avec le type de clé String
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') renvoie une colonne de type Struct avec le schéma indiqué : {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') renvoie une colonne de type Struct avec le schéma indiqué : {1, 0.8}

TO_JSON(column)Convertit une colonne contenant le type Struct, Array of Structs, Map ou Array of Maps en chaîne JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) renvoie une chaîne JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Crée une colonne de type Map. Les colonnes d'entrée doivent être regroupées en paires clé-valeur. Les colonnes de clé d'entrée ne peuvent pas être NULL et doivent toutes comporter le même type de données. Les colonnes de valeur d'entrée doivent toutes comporter le même type de données.

TO_MAP('Ename',Expression_1.attribute1) renvoie une colonne de type Map : {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) renvoie une colonne de type Map : {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Crée une colonne de type Struct. Les colonnes d'entrée doivent être regroupées en paires clé-valeur.

TO_STRUCT('Ename',Expression_1.attribute1) renvoie {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) renvoie {100, "John"}

TO_ARRAY(column[,column]*)Crée une colonne de type Array. Les colonnes d'entrée doivent toutes comporter le même type de données.

TO_Array(Expression_1.attribute1) renvoie [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) renvoie ["John","Friend"]

Fonctions d'ordre supérieur

Les opérateurs de flux de données qui prennent en charge la création d'expressions et de types de données hiérarchiques peuvent utiliser des fonctions d'ordre supérieur.

Les opérateurs pris en charge sont les suivants :

  • Agréger

  • Expression

  • Filtre

  • Jointure

  • Code express

  • Fractionner

  • Faire pivoter

FonctionDescriptionExemple
TRANSFORM(column, lambda_function)Prend un tableau et une fonction anonyme, et configure un nouveau tableau en appliquant la fonction à chaque élément, et en affectant le résultat au tableau de sortie.Pour un tableau d'entrée d'entiers [1, 2, 3], TRANSFORM(array, x -> x + 1) renvoie un nouveau tableau de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les clés ont le type du résultat de la fonction lambda, et les valeurs ont le type des valeurs de la correspondance de colonne.Pour une correspondance d'entrée avec des clés entières et des valeurs de chaîne de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) renvoie une nouvelle correspondance de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les valeurs ont le type du résultat des fonctions lambda, et les clés ont le type des clés de correspondance de colonne. Pour une correspondance d'entrée avec des clés de chaîne et des valeurs de chaîne de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) renvoie une nouvelle correspondance de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Seul l'opérateur d'expression prend en charge ARRAY_SORT.

Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments.

La fonction doit renvoyer -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au second.

Si la fonction est omise, le tableau est trié par ordre croissant.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

Le tableau renvoyé est :

[1,5,6]
Modification des conditions de fractionnement

Vous pouvez modifier n'importe quelle condition de fractionnement, à l'exception de la condition Sans correspondance.

  1. Sur le toile du concepteur, sélectionnez l'opérateur de fractionnement de la condition à modifier.
    L'onglet Détails de l'opérateur de fractionnement apparaît dans le panneau Propriétés. Sur le canevas, vous pouvez développer et réduire l'icône de l'opérateur pour afficher et masquer les conditions de fractionnement existantes.
  2. Dans l'onglet Détails, sous Conditions de fractionnement, sélectionnez Modifier dans le menu Actions (menu Actions) en regard de la condition de fractionnement à modifier.
  3. Dans le panneau Modifier la condition de fractionnement, modifiez la valeur Identificateur ou laissez-la telle quelle.
  4. Dans la section Générateur de condition, vous pouvez double-cliquer pour sélectionner ou faire glisser des attributs ou des fonctions entrants vers l'éditeur pour créer la condition. Vous pouvez également modifier l'expression de condition manuellement dans l'éditeur et valider la condition avant de l'enregistrer.
  5. Sélectionnez Enregistrer les modifications.
Modification de la séquence de conditions de fractionnement

Vous pouvez déplacer une condition de fractionnement vers le haut ou vers le bas dans la séquence. Seule la condition Sans correspondance ne peut pas être déplacée.

  1. Sur le canevas du concepteur, sélectionnez l'opérateur de fractionnement présentant la séquence de conditions à modifier.
    L'onglet Détails de l'opérateur de fractionnement apparaît dans le panneau Propriétés. Sur le canevas, vous pouvez développer et réduire l'icône de l'opérateur pour afficher et masquer les conditions de fractionnement existantes.
  2. Dans l'onglet Détails, sous Conditions de fractionnement, vérifiez la séquence de conditions de fractionnement.
  3. En regard d'une ligne de condition, dans le menu Actions (menu Actions), sélectionnez l'action permettant de déplacer cette condition vers le haut ou vers le bas dans la séquence.
    La position de la condition dans l'icône d'opérateur de fractionnement développée sur le canevas change en conséquence lorsque vous déplacez une condition.
Suppression de conditions de fractionnement

Vous pouvez supprimer n'importe quelle condition de fractionnement, à l'exception de la condition Sans correspondance.

  1. Sur le canevas du concepteur, sélectionnez l'opérateur de fractionnement de la condition à supprimer.
    L'onglet Détails de l'opérateur de fractionnement apparaît dans le panneau Propriétés. Sur le canevas, vous pouvez développer et réduire l'icône de l'opérateur pour afficher et masquer les conditions de fractionnement.
  2. Dans l'onglet Détails, sous Conditions de fractionnement, sélectionnez Supprimer dans le menu Actions (menu Actions) en regard de la condition à supprimer.
  3. Pour supprimer plusieurs conditions, utilisez la colonne en regard de la colonne Séquence pour sélectionner les conditions, puis sélectionnez Supprimer.
  4. Si le port de sortie d'une condition supprimée était connecté à un autre opérateur ou à une autre cible, vérifiez le flux de données et apportez les modifications nécessaires après avoir supprimé les conditions.

Opérateur de pivot

L'opérateur de pivot permet de prendre les valeurs de ligne uniques d'un attribut dans une source d'entrée et de les faire pivoter vers plusieurs attributs dans la sortie.

A l'aide de l'entrée de plusieurs lignes, l'opération de pivot effectue une transformation basée sur des expressions de fonction d'agrégation et sur les valeurs d'un attribut spécifié comme clé de pivot. Le résultat d'une opération de pivot est une sortie pivotée ou réorganisée de lignes et d'attributs.

Le nombre de lignes dans la sortie dépend de la sélection des attributs pour le regroupement.

  • Si vous spécifiez des attributs pour le regroupement, les lignes entrantes avec la même valeur d'attribut de regroupement sont réunies sur une même ligne. Par exemple, si vous indiquez un attribut de regroupement comportant quatre valeurs uniques, les données entrantes sont transformées et regroupées sur quatre lignes dans la sortie.
  • Si vous n'indiquez aucun attribut de regroupement, toutes les données entrantes sont transformées en une seule ligne de sortie.

Le nombre d'attributs dans la sortie est :

  • basé sur le nombre d'attributs sélectionnés pour le regroupement,
  • un multiple du nombre de valeurs que vous sélectionnez dans la clé de pivot,
  • le résultat du nombre d'attributs transformés par les expressions de fonction d'agrégation.

Par exemple, si vous sélectionnez un attribut de regroupement et trois valeurs de clé de pivot, et que vous ajoutez une expression qui transforme deux attributs, le nombre d'attributs dans la sortie est le suivant :

1 + (3 * 2)

Le nombre total d'attributs dans la sortie pivotée obtenue est calculé comme suit :

Number of group by attributes + (Number of pivot key values * Number of attributes that are transformed from expressions)

Les noms des nouveaux attributs dans la sortie sont dérivés d'un modèle que vous ajoutez pour les attributs cible lorsque vous créez les expressions.

Les fonctions d'agrégation que vous utilisez avec un opérateur de pivot déterminent les valeurs pivotées dans la sortie. Si aucune donnée n'est trouvée, la valeur NULL est insérée là où une valeur pivotée est attendue.

Exemple de pivot

Prenons l'entité de données PRODUCT_SALES, qui présente les attributs STORE, PRODUCT et SALES. L'entité de données comporte cinq lignes. Vous voulez créer un pivot sur l'attribut PRODUCT avec une fonction d'agrégation SUM sur SALES.

Vous spécifiez le regroupement des lignes pivotées selon l'attribut STORE. Chaque valeur STORE unique devient une ligne dans la sortie obtenue. Les lignes d'entrée avec la même valeur de regroupement sont réunies sur la même ligne dans la sortie pivotée. Si vous n'indiquez pas d'attribut de regroupement, toutes les lignes d'entrée sont transformées en une seule ligne dans la sortie obtenue.

Vous définissez PRODUCT comme clé de pivot et sélectionnez les trois valeurs à faire pivoter vers de nouveaux attributs dans la sortie obtenue.

L'expression de fonction d'agrégation SUM sur SALES est la suivante :

SUM(PIVOT_1_1.PRODUCT_SALES.SALES)

Le modèle pour les attributs cible est le suivant :

%PIVOT_KEY_VALUE%
Entité de données PRODUCT_SALES
STOREPRODUCTSALES
AB StoreTelevision2
AB StoreTelevision4
Country-StoreTelevision6
Country-StoreRefrigerator8
E-StoreCoffee maker10
Sortie de pivot : Regrouper par STORE, Clé de pivot PRODUCT
STORETELEVISIONREFRIGERATORCOFFEE MAKER
AB-Store6--
Country-Store68-
E-Store--10
Sortie de pivot : Sans Regrouper par, Clé de pivot PRODUCT
TELEVISIONREFRIGERATORCOFFEE MAKER
12810
Ajout et configuration d'un opérateur de pivot

L'opérateur de pivot effectue une transformation à l'aide d'expressions de fonction d'agrégation sur des valeurs d'un attribut spécifié en tant que clé de pivot.

Vous pouvez choisir de regrouper les lignes pivotées en une seule ligne, ou de sélectionner des attributs pour créer plusieurs lignes de sortie en fonction de la même valeur de regroupement.

  1. Dans le panneau Opérateurs, faites glisser un opérateur Pivot vers le canevas.
  2. Avec le focus sur l'opérateur de pivot, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. (Facultatif) Pour Grouper par, indiquez les attributs dont les valeurs distinctes sont à utiliser pour organiser les données pivotées dans des lignes regroupées. Par défaut, toutes les lignes entrantes sont agrégées et regroupées sur une ligne, sauf si vous spécifiez des attributs selon lesquels regrouper les lignes.
    • Sélectionnez des attributs, puis des attributs pour regrouper les lignes pivotées selon la même valeur. Par exemple, si vous sélectionnez un attribut possédant deux valeurs uniques, la sortie obtenue comporte deux lignes de données agrégées.
    • Sélectionnez Modèle pour utiliser un modèle d'expression régulière afin de sélectionner les attributs de regroupement. Seuls les attributs correspondant au modèle sont utilisés pour regrouper les lignes pivotées selon la même valeur.
  4. Pour Clé de tableau croisé dynamique, sélectionnez l'attribut dont les valeurs peuvent être utilisées comme nouveaux attributs dans la sortie pivotée. Seuls les attributs de type VARCHAR, INTEGER, FLOAT ou BOOLEAN peuvent être utilisés comme clé de pivot.
  5. Sous Valeurs de clé de pivot, sélectionnez Ajouter des valeurs de clé pour sélectionner une ou plusieurs valeurs à partir de la clé de pivot sélectionnée afin qu'elles deviennent des attributs pivotés dans la sortie. Vous pouvez sélectionner jusqu'à 50 valeurs.

    Vous pouvez utiliser un alias pour une valeur de clé de pivot sélectionnée. Un alias ne peut pas commencer par un nombre. Seul le caractère spécial _ est autorisé.

    Afin d'utiliser un alias pour une valeur de clé de pivot sélectionnée, cliquez sur Modifier dans le menu Actions (menu Actions) de cette valeur de clé. Dans le panneau Edit Pivot Key Alias, entrez l'alias de la valeur de clé.

    Pour supprimer une valeur de clé de pivot de la liste sélectionnée, cochez la case en regard de celle-ci et sélectionnez Supprimer. Vous pouvez également sélectionner Supprimer dans le menu Actions (Menu Actions).

  6. Sous Expressions, sélectionnez Ajouter une expression pour ajouter les expressions de fonction d'agrégation. Reportez-vous à Ajout d'une expression de pivot.
  7. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  8. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  9. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Ajout d'une expression de pivot

Des expressions de fonction d'agrégation sont requises pour un opérateur de pivot.

  1. Avec l'opérateur de pivot sélectionné sur le canevas de flux de données, sous Expressions dans le panneau des propriétés, sélectionnez Ajouter un expression.

  2. Dans le panneau Ajouter une expression, entrez le nom de l'expression dans le champ Identificateur ou laissez le nom en l'état.

  3. (Facultatif) Pour utiliser un modèle afin d'appliquer une expression à plusieurs attributs source, sélectionnez autoriser la sélection en masse.

    Par exemple, supposons que vous disposiez de deux attributs DISCOUNT_ dans l'ensemble de données (DISCOUNT_VALUE et DISCOUNT_RATE), et que vous voulez leur appliquer la fonction MAX.

    1. Sous Attributs source, sélectionnez Modèle, puis Ajouter un modèle.

    2. Dans le panneau Ajouter un modèle de source, ajoutez un modèle pour sélectionner un groupe d'attributs source dont le nom commence par DISCOUNT_. Par exemple, entrez DISCOUNT* et sélectionnez Ajouter. Sélectionnez ensuite le type de données.

    3. Sous attributs cible, utilisez un modèle pour les noms d'attribut de sortie obtenus.

      Par défaut, le modèle %MACRO_INPUT%_%PIVOT_KEY_VALUE% est déjà inséré pour vous. %MACRO_INPUT% correspond aux noms des attributs de source sélectionnés par le modèle que vous avez ajouté. %PIVOT_KEY_VALUE% correspond aux valeurs sélectionnées dans la clé de pivot.

      Par exemple, si %PIVOT_KEY_VALUE% indique Télévision et que %MACRO_INPUT% indique DISCOUNT_VALUE et DISCOUNT_RATE, les attributs pivotés sont <pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION et <pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISION dans la sortie.

    4. Vous pouvez conserver l'option Utiliser des types de données d'attribut source sélectionnée. Sinon, sous Type de données d'expression, sélectionnez le type de données et remplissez les champs correspondant au type sélectionné.
  4. Si vous n'avez pas sélectionné Autoriser la sélection en masse, sous Attributs cible, utilisez un modèle pour les noms d'attribut de sortie obtenus.

    Par défaut, le modèle %PIVOT_KEY_VALUE% est déjà inséré pour vous. %PIVOT_KEY_VALUE% correspond aux valeurs sélectionnées dans la clé de pivot.

    Par exemple, si %PIVOT_KEY_VALUE% indique TV et TV, les attributs pivotés sont <pivot_name>.<expression_name>.TELEVISION et <pivot_name>.<expression_name>.TELEPHONE dans la sortie.

    Sous Type de données d'expression, sélectionnez le type de données et renseignez les champs correspondant au type sélectionné.

  5. Dans la section Générateur d'expression, cliquez deux fois sur les attributs, paramètres et fonctions d'agrégation entrants ou faites-les glisser pour les ajouter à l'éditeur afin de créer l'expression. Vous pouvez également écrire manuellement l'expression vous-même et la valider.

    Le tableau suivant présente la liste des fonctions d'agrégation disponibles pour construire des expressions de pivot.

    FonctionDescriptionExemple
    COUNT(value[, value]*)Renvoie le nombre de lignes pour lesquelles les expressions fournies ne sont pas NULL.COUNT(expr1)
    COUNT(*)Renvoie le nombre total de lignes extraites, comprenant les lignes contenant la valeur NULL.COUNT(*)
    MAX(value)Renvoie la valeur maximale de l'argument.MAX(expr)
    MIN(value)Renvoie la valeur minimale de l'argument.MIN(expr)
    SUM(numeric)Renvoie la somme calculée à partir des valeurs d'un groupe.SUM(expr1)

    Vous pouvez également utiliser des fonctions d'ordre supérieur (transformation) dans une expression de pivot.

  6. Pour construire une expression de pivot, spécifiez les attributs et la fonction d'agrégation.

    • Si vous avez sélectionné autoriser la sélection en masse, utilisez %MACRO_INPUT% dans l'expression pour indiquer les attributs sur lesquels la fonction doit être appliquée.

      Par exemple, si vous avez utilisé le modèle DISCOUNT* pour mettre en correspondance les attributs source DISCOUNT_RATE et DISCOUNT_VALUE, vous pouvez indiquer une fonction d'agrégation telle que SUM(numeric) pour appliquer la fonction à tous les attributs qui correspondent au modèle. %MACRO_INPUT% remplace l'espace réservé numeric dans la fonction :

      SUM(%MACRO_INPUT%)
    • Si vous n'avez pas sélectionné Autoriser la sélection en masse, spécifiez l'attribut dans la fonction.

      Par exemple, l'entité de données est PRODUCT_SALES et vous voulez utiliser une fonction d'agrégation SUM sur l'attribut SALES. Vous pouvez indiquer la fonction, telle que SUM(numeric), en remplaçant l'espace réservé numeric dans la fonction par le nom d'attribut :

      SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
    • Vous pouvez utiliser un paramètre d'expression pour le nom de la fonction d'agrégation dans l'expression de pivot. Un paramètre d'expression possède un nom, un type et une valeur par défaut.

      Par exemple, le paramètre d'expression P_VARCHAR présente le type VARCHAR, et MIN comme valeur par défaut. Vous pouvez indiquer la fonction d'agrégation comme suit :

      $P_VARCHAR(%MACRO_INPUT%)
      $P_VARCHAR(PIVOT_1_1.PRODUCT_SALES.SALES)
  7. Dans le panneau Ajouter une expression, sélectionnez Ajouter.

Opérateur de recherche

L'opérateur de recherche exécute une requête et une transformation à l'aide d'une condition de recherche et de l'entrée de deux sources : une source d'entrée principale et une source d'entrée de recherche.

L'opération de requête utilise la condition et une valeur dans l'entrée principale pour trouver des lignes dans la source de recherche. La transformation ajoute des attributs de la source de recherche à la source principale.

Vous pouvez spécifier l'action à effectuer lors du renvoi de plusieurs lignes et d'aucune ligne par la requête de recherche. Par exemple, vous pouvez indiquer que l'action consiste à ignorer les lignes sans correspondance et à renvoyer n'importe quelle ligne correspondante lorsqu'il en existe plusieurs.

La sortie obtenue est une combinaison des deux sources d'entrée en fonction de la condition de recherche, d'une valeur dans l'entrée principale et des actions préférées à effectuer. L'entrée principale détermine l'ordre des attributs et des lignes dans la sortie, les attributs de l'entrée principale étant placés avant les attributs de l'entrée de recherche.

Exemple de recherche

Prenons deux entités de données source dans un flux de données. L'entité de données 1 (PAYMENTS) est définie comme entrée principale. L'entité de données 2 (CUSTOMERS) est définie comme entrée de recherche. La condition de recherche est définie comme suit :

LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID

La sortie de recherche obtenue indique comment les données des deux entrées sont combinées et transformées. Les attributs de la source de recherche sont ajoutés aux attributs source principaux, avec les comportements suivants :

  • Si l'opération ne trouve aucun enregistrement correspondant pour une valeur dans la source de recherche, l'enregistrement est renvoyé avec la valeur NULL insérée pour les attributs de recherche. Par exemple, aucun enregistrement correspondant n'est trouvé pour les valeurs CUSTOMER_ID 103, 104 et 105. Par conséquent, dans la sortie obtenue, la valeur NULL est spécifiée dans les attributs ajoutés CUSTOMER_ID et NAME.
  • Si l'opération trouve plusieurs enregistrements correspondants pour une valeur dans la source de recherche, tout enregistrement correspondant est renvoyé.
Entité de données 1, source d'entrée principale
PAYMENT_IDCUSTOMER_IDAMOUNT
11012500
21021110
3103500
4104400
5105150
6102450
Entité de données 2, source d'entrée de recherche
CUSTOMER_IDNAME
101Peter
102Paul
106Mary
102Pauline
Sortie de recherche
PAYMENT_IDCUSTOMER_IDAMOUNTCUSTOMER_IDNAME
11012500101Peter
21021110102Paul
3103500nullnull
4104400nullnull
5105150nullnull
6102450102Paul
Ajout et configuration d'un opérateur de recherche

Un opérateur de recherche utilise deux sources d'entrée sur un flux de données.

La procédure suivante suppose que vous avez ajouté et configuré deux opérateurs source.

  1. Dans le panneau Opérateurs, faites glisser un opérateur de recherche vers le canevas.
  2. Avec le focus sur l'opérateur de recherche, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. Pour entrée principale, sélectionnez la source contenant une valeur permettant de mettre en correspondance des lignes dans la source de recherche. La correspondance est basée sur une condition de recherche, que vous créez à l'étape 5.
    L'entrée principale détermine également l'ordre des attributs et des lignes dans la sortie de recherche obtenue.
  4. Pour entrée de recherche, sélectionnez la source référencée par la source principale pour mettre en correspondance des lignes.
    Les attributs de l'entrée de recherche sont ajoutés aux attributs de l'entrée principale dans la sortie obtenue.
  5. Pour Correspondance multiple, sélectionnez l'action à effectuer lorsque plusieurs lignes correspondantes sont trouvées entre la source principale et la source de recherche. L'action que vous sélectionnez détermine les lignes à utiliser dans la sortie obtenue.
    • Renvoyer toute ligne correspondante : action par défaut. Sélectionne n'importe quelle ligne correspondante.
    • Renvoyer la première ligne correspondante : sélectionne la première ligne parmi les lignes correspondantes.
    • Renvoyer la dernière ligne correspondante : sélectionne la dernière ligne parmi les lignes correspondantes.
    • Renvoyer une erreur : affiche une erreur. Ne termine pas l'opération.
    • Renvoyer l'ensemble des lignes correspondantes : sélectionne toutes les lignes correspondantes.
  6. Pour Aucune correspondance, sélectionnez l'action à effectuer lorsqu'aucune ligne correspondante n'est trouvée entre la source principale et la source de recherche. L'action que vous sélectionnez détermine comment gérer une ligne de la source principale sans ligne correspondante dans la source de recherche.
    • Ignorer les lignes sans correspondance : n'inclut pas les lignes sans correspondance dans la sortie obtenue.
    • Renvoyer les lignes non correspondantes : action par défaut. Inclut les lignes sans correspondance dans la sortie obtenue avec des valeurs NULL.
  7. En regard de Condition de recherche, sélectionnez Créer.
    1. Dans le panneau Créer une condition de recherche, dans la section Générateur de condition, vous pouvez cliquer deux fois sur des attributs, des paramètres et des fonctions, ou les faire glisser pour les ajouter à l'éditeur afin de créer une condition. Vous pouvez également entrer l'expression de condition manuellement dans l'éditeur et valider l'expression.
      Remarque

      Dans l'éditeur, un élément ajouté tel qu'une fonction peut comporter des espaces réservés. Pour remplacer un espace réservé par un autre élément, mettez en surbrillance l'espace réservé, puis cliquez deux fois sur un autre élément de la liste.
    2. Sélectionnez Create (Créer).
  8. (Facultatif) Sélectionnez Affecter le paramètre pour utiliser des paramètres afin que la condition de recherche ne soit pas liée au code compilé lorsque vous publiez le flux de données. Reportez-vous à Affectation d'un paramètre.
  9. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  10. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  11. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Création d'une condition de recherche

Utilisez le générateur de condition pour sélectionner visuellement des éléments afin de créer une condition de recherche. Vous pouvez également entrer une condition manuellement dans l'éditeur.

Une condition de recherche permet d'utiliser une valeur dans une source d'entrée principale pour rechercher des enregistrements dans une source d'entrée de recherche et renvoyer toutes les lignes correspondantes. Les lignes sans correspondance sont renvoyées avec des valeurs NULL.

Les éléments que vous pouvez utiliser dans une condition de recherche sont les fonctions, attributs et paramètres entrants. Vous pouvez cliquer deux fois sur un élément de la liste ou le faire glisser pour l'ajouter à l'éditeur afin de créer une condition. Vous pouvez valider la condition avant de la créer.

La zone Entrant affiche les attributs des ports d'entrée en amont dans deux dossiers LOOKUP distincts. Affichez les attributs de chaque port en développant ou en réduisant le dossier LOOKUP approprié. Par exemple, LOOKUP_1_1 est l'entrée principale et LOOKUP_1_2 est l'entrée de recherche. Les conditions de recherche basées sur une valeur de l'attribut d'entrée principale ADDRESS_ID peuvent être les suivantes :

LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = '2001'
LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID

Les Paramètres sont les paramètres d'expression qui ont été ajoutés au flux de données à l'aide du générateur de condition (opérateurs de filtre, de jointure, de recherche et de fractionnement) ou du générateur d'expressions (opérateurs d'expression et d'agrégation. Un paramètre d'expression possède un nom, un type et une valeur par défaut. Reportez-vous à Ajout d'un paramètre d'expression.

Supposons que vous voulez rechercher les clients d'une banque spécifique. Vous pouvez créer un paramètre VARCHAR portant le nom P_LOOK_UP et définir la valeur par défaut sur 2001, qui est la valeur de la banque spécifique. Vous pouvez ensuite créer la condition de recherche comme suit :

LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = LOOKUP_1_2.BANK_CUSTOMER.ADDRESS_ID AND LOOKUP_1_1.BANK_ADDRESS.ADDRESS_ID = $P_LOOK_UP

Les fonctions sont les fonctions disponibles dans Data Integration que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur les arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir des arguments.

Voici la liste des fonctions que vous pouvez ajouter lorsque vous construisez des conditions :

Fonctions de hachage
FonctionDescriptionExemple
MD5(all data types)Calcule un checksum MD5 du type de données et renvoie une valeur de chaîne. MD5(column_name)
SHA1(all data types)Calcule une valeur de hachage SHA-1 du type de données et renvoie une valeur de chaîne. SHA1(column_name)
SHA2(all data types, bitLength)Calcule une valeur de hachage SHA-2 du type de données et renvoie une valeur de chaîne. bitLength est un entier. SHA2 (column_name, bitLength can be set to 0 (equivalent to 256), 256, 384, or 512).
ORA_HASH(expr, [max_bucket], [seed_value])

Calcule une valeur de hachage pour expr et renvoie une valeur NUMBER.

expr peut être une expression, une colonne ou un littéral.

max_bucket est la valeur de bucket maximale renvoyée, comprise entre 0 et 4294967295 (valeur par défaut).

seed_value est une valeur comprise entre 0 (valeur par défaut) et 4294967295.

Oracle applique la fonction de hachage à la combinaison de expr et seed_value afin de produire de nombreux résultats différents pour le même ensemble de données.

ORA_HASH('1')

ORA_HASH('b', 2)

ORA_HASH(100, 10, 10)

ORA_HASH(EXPRESSION_1.CUSTOMERS.SSN, 2)

Fonctions arithmétiques
FonctionDescriptionExemple
ABS(numeric)Renvoie la puissance absolue de la valeur numeric.ABS(-1)
CEIL(numeric)Renvoie l'entier le plus petit qui n'est pas supérieur à la valeur numericCEIL(-1,2)
FLOOR(numeric)Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numericFLOOR(-1,2)
MOD(numeric1, numeric2)Renvoie le reste après que numeric1 est divisé par numeric2.MOD(8,2)
POWER(numeric1, numeric2)Place numeric1 comme puissance de numeric2.POWER(2,3)
ROUND(numeric1, numeric2)Renvoie numeric1 arrondi à numeric2 décimales.ROUND(2.5,0)
TRUNC(numeric1, numeric2)Renvoie numeric1 tronqué à numeric2 décimales.TRUNC(2.5,0)
TO_NUMBER(expr[, format, locale])Convertit une valeur expr en nombre, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format pris en charge :

  • 0 : chiffre
  • # : chiffre (zéro affiché comme absent)
  • . : espace réservé pour le séparateur décimal
  • , : espace réservé pour le séparateur de groupes
  • E : sépare la mantisse et l'exposant pour les formats exponentiels
  • - : préfixe négatif par défaut
  • ¤ : signe de devise ; remplacé par le symbole de devise ; s'il est double, remplacé par le symbole de devise internationale ; s'il est présent dans un modèle, le séparateur décimal monétaire est utilisé à la place du séparateur décimal

TO_NUMBER('5467.12') returns renvoie 5467.12

TO_NUMBER('-USD45,677.7', '¤¤##,###.#', 'en-US') renvoie -45677.7

Fonctions de date et d'heure
Fonction Description Exemple
CURRENT_DATE Renvoie la date actuelle. CURRENT_DATErenvoie la date du jour, par exemple 2023-05-26
CURRENT_TIMESTAMP Renvoie la date et l'heure en cours du fuseau horaire de la session. CURRENT_TIMESTAMP renvoie la date du jour et l'heure actuelle, par exemple 2023-05-26 12:34:56
DATE_ADD(date, number_of_days) Renvoie la date qui correspond au nombre (number) de jours indiqué après la valeur date spécifiée. DATE_ADD('2017-07-30', 1) renvoie 2017-07-31
DATE_FORMAT(expr, format[, locale])

Formate une valeur expr de date, en fonction des éléments format et locale (facultatif) fournis. L'environnement local par défaut est en-US. Balises de langue prises en charge.

Modèles de format de date pris en charge :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

DATE_FORMAT(Date '2020-10-11', 'yyyy-MM-dd') renvoie '2020-10-11'. Le premier argument est un objet Date représentant le 11 octobre 2020.

DATE_FORMAT(Date '2018-junio-17', 'yyyy/MMMM/dd', 'es-ES') renvoie '2018/junio/17'

DAYOFMONTH(date) Renvoie le jour de la date dans le mois. DAYOFMONTH('2020-12-25') renvoie 25
DAYOFWEEK(date) Renvoie le jour de la date dans la semaine. DAYOFWEEK('2020-12-25') renvoie 6 pour vendredi. Aux États-Unis, dimanche est considéré comme 1, lundi est 2, et ainsi de suite.
DAYOFYEAR(date) Renvoie le jour de la date dans l'année. DAYOFYEAR('2020-12-25') renvoie 360
WEEKOFYEAR(date) Renvoie la semaine de la date dans l'année.

WEEKOFYEAR('2022-07-28') renvoie 30

WEEKOFYEAR('2022-07-28 13:24:30') renvoie 30

HOUR(datetime) Renvoie la valeur d'heure de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 15
LAST_DAY(date) Renvoie le dernier jour du mois de la date. LAST_DAY('2020-12-25') renvoie 31
MINUTE(datetime) Renvoie la valeur de minute de la date et de l'heure. HOUR('2020-12-25 15:10:30') renvoie 10
MONTH(date) Renvoie la valeur de mois de la date. MONTH('2020-06-25') renvoie 6
QUARTER(date) Renvoie le trimestre de l'année correspondant à la date. QUARTER('2020-12-25') renvoie 4
SECOND(datetime) Renvoie la valeur de seconde de la date et de l'heure. SECOND('2020-12-25 15:10:30') renvoie 30
TO_DATE(string, format_string[, localeStr]) Analyse l'expression de chaîne avec l'expression format_string pour générer une date. L'environnement local est facultatif. La valeur par défaut est en-US. Balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les chaînes de format distinguant les minuscules des majuscules prises en charge sont les suivantes :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

TO_DATE('31 December 2016', 'dd MMMM yyyy') renvoie la valeur Date 2016-12-31

TO_DATE('2018/junio/17', 'yyyy/MMMM/dd', 'es-ES') renvoie la valeur Date 2018-06-17

TO_TIMESTAMP(expr, format_string[, localeStr]) Convertit une valeur expr VARCHAR en valeur TIMESTAMP, en fonction des éléments format_string et localeStr (facultatif) fournis.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') renvoie un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020
WEEK(date)

Renvoie la valeur de semaine de la date.

WEEK('2020-06-25') renvoie 4
YEAR(date) Renvoie la valeur d'année de la date. YEAR('2020-06-25') renvoie 2020
ADD_MONTHS(date_expr, number_months) Renvoie la date après ajout du nombre de mois spécifié à la date, à la chaîne ou à l'horodatage spécifié avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS.

ADD_MONTHS('2017-07-30', 1) renvoie 2017-08-30

ADD_MONTHS('2017-07-30 09:07:21', 1) renvoie 2017-08-30

MONTHS_BETWEEN(start_date_expr, end_date_expr)

Renvoie le nombre de mois entre start_date_expr et end_date_expr. start_date_expr et end_date_expr peuvent être des dates, des horodatages ou des chaînes avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Un nombre entier est renvoyé si les deux dates sont le même jour du mois ou le dernier jour de leurs mois respectifs. Sinon, la différence est calculée sur la base de 31 jours par mois.

MONTHS_BETWEEN('2022-01-01', '2022-01-31') renvoie 1

MONTHS_BETWEEN('2022-07-28', '2020-07-25') renvoie 24

MONTHS_BETWEEN('2022-07-28 13:24:30', '2020-07-25 13:24:30') renvoie 24

FROM_UTC_TIMESTAMP(time_stamp, time_zone)

Interprète une date, un horodatage ou une chaîne en temps UTC, converti ensuite en horodatage dans le fuseau horaire spécifié.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 03:40:00.0
TO_UTC_TIMESTAMP(time_stamp, time_zone)

Convertit une date, un horodatage ou une chaîne dans le fuseau horaire spécifié en horodatage UTC.

Pour la chaîne, utilisez un format tel que : yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Le format de fuseau horaire est un ID de zone basé sur la région (par exemple, "zone/ville" comme "Asie/Séoul") ou un décalage de fuseau horaire (par exemple, UTC+02).

TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') renvoie 2017-07-14 01:40:00.0
FROM_UNIXTIME(unix_time[, fmt])

Convertit la période ou l'heure UNIX spécifiée en chaîne qui représente l'horodatage correspondant dans le fuseau horaire système en cours et dans le format spécifié.

Remarque : l'heure Unix est le nombre de secondes qui s'est écoulé depuis le 1er janvier 1970 à 00:0:00 UTC.

Si fmt est omis, le format par défaut est yyyy-MM-dd HH:mm:ss

FROM_UNIXTIME(1255033470) renvoie '2009-10-08 13:24:30'

FROM_UNIXTIME(1637258854) renvoie '2021-11-18 10:07:34'

Le fuseau horaire par défaut est PST dans les exemples

UNIX_TIMESTAMP([time_expr[, fmt]])

Convertit l'heure en cours ou spécifiée en horodatage Unix en secondes.

time_expr est une date, un horodatage ou une chaîne avec un format tel que yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS

Si time_expr n'est pas fourni, l'heure en cours est convertie.

Si time_expr est une chaîne et que fmt est omis, la valeur par défaut est yyyy-MM-dd HH:mm:ss

UNIX_TIMESTAMP('1970-01-01 00:00:00', 'yyyy-MM-dd HH:mm:ss') renvoie 28800

Le fuseau horaire par défaut est PST dans cet exemple

INTERVAL 'year' YEAR[(year_precision)]

Renvoie une période en années.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '1' YEAR renvoie un intervalle de 1 an

INTERVAL '200' YEAR(3) renvoie un intervalle de 200 ans

INTERVAL 'year month' YEAR[(year_precision)] TO MONTH

Renvoie une période en années et en mois. Permet de stocker une période à l'aide des champs year et month.

year_precision est le nombre de chiffres du champ year ; il varie de 0 à 9. Si year_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '100-5' YEAR(3) TO MONTH renvoie un intervalle de 100 ans et 5 mois. Vous devez indiquer une précision de 3 pour l'année de début.
INTERVAL 'month' MONTH[(month_precision)]

Renvoie une période en mois.

month_precision est le nombre de chiffres du champ mois ; il varie de 0 à 9. Si month_precision est omis, la valeur par défaut est 2 (doit être inférieure à 100 ans).

INTERVAL '200' MONTH(3) renvoie un intervalle de 200 mois. Vous devez indiquer une précision de 3 pour le mois.
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en jours, heures, minutes et secondes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '11 10:09:08.555' DAY TO SECOND(3) renvoie un intervalle de 11 jours, 10 heures, 9 minutes, 8 secondes et 555 millièmes de seconde
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en jours, heures et minutes.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '11 10:09' DAY TO MINUTE renvoie un intervalle de 11 jours, 10 heures et 9 minutes
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)]

Renvoie une période en jours et heures.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '100 10' DAY(3) TO HOUR renvoie un intervalle de 100 jours et 10 heures
INTERVAL 'day' DAY[(day_precision)]

Renvoie une période en jours.

day_precision est le nombre de chiffres du champ day ; il varie de 0 à 9. Valeur par défaut : 2.

INTERVAL '999' DAY(3) renvoie un intervalle de 999 jours
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en heures, minutes et secondes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '09:08:07.6666666' HOUR TO SECOND(7) renvoie un intervalle de 9 heures, 8 minutes et 7,6666666 secondes
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)]

Renvoie une période en heures et minutes.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '09:30' HOUR TO MINUTE renvoie un intervalle de 9 heures et 30 minutes
INTERVAL 'hour' HOUR[(hour_precision)]

Renvoie une période en heures.

hour_precision est le nombre de chiffres du champ heure ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '40' HOUR renvoie un intervalle de 40 heures
INTERVAL 'minute' MINUTE[(minute_precision)]

Renvoie une période en minutes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

INTERVAL '15' MINUTE renvoie un intervalle de 15 minutes
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)]

Renvoie une période en minutes et secondes.

minute_precision est le nombre de chiffres du champ minute ; il varie de 0 à 2. Valeur par défaut : 2.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire de la deuxième valeur du champ time ; il est compris entre 0 et 9.

INTERVAL '15:30' MINUTE TO SECOND renvoie un intervalle de 15 minutes et 30 secondes
INTERVAL 'second' SECOND[(fractional_seconds_precision)]

Renvoie une période en secondes.

fractional_seconds_precision est le nombre de chiffres de la partie fractionnaire du champ second ; il est compris entre 0 et 9. La valeur par défaut est 3.

INTERVAL '15.678' SECOND renvoie un intervalle de 15,678 secondes
Fonctions analytiques
Fonction Description Exemple
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) Renvoie la valeur évaluée à la ligne qui est la première ligne du cadre de la fenêtre. FIRST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la première valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné avant la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) renvoie la valeur BANK_ID de la deuxième ligne avant la ligne en cours, partitionnée par BANK_ID et dans l'ordre décroissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) Renvoie la valeur évaluée à la ligne qui est la dernière ligne du cadre de la fenêtre. LAST_VALUE(BANK_ID) OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME ROWS BETWEEN CURRENT ROW AND 1 FOLLOWING) renvoie la dernière valeur de BANK_ID dans une fenêtre sur laquelle les lignes sont calculées selon la ligne en cours et une ligne après cette ligne, partitionnées par BANK_ID et dans l'ordre croissant selon BANK_NAME.
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) Renvoie la valeur évaluée à la ligne à un décalage donné après la ligne en cours dans la partition. En l'absence de ligne de ce type, la valeur par défaut est renvoyée. Les valeurs de décalage et par défaut sont évaluées par rapport à la ligne en cours. S'il est omis, le décalage est défini par défaut sur 1 et sur NULL. LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie la valeur BANK_ID de la deuxième ligne après la ligne en cours, partitionnée par BANK_ID et dans l'ordre croissant selon BANK_NAME. Si cette valeur n'existe pas, la valeur hello est renvoyé.
RANK() OVER([ partition_clause ] order_by_clause) Renvoie le rang de la ligne en cours avec les intervalles, à partir de 1. RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le rang de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) Renvoie le numéro unique de la ligne en cours dans sa partition, à partir de 1. ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) renvoie le numéro unique de chaque ligne dans le groupe de partitions de BANK_ID, dans l'ordre croissant selon BANK_NAME.
Fonctions de chaîne
FonctionsDescriptionExemple
CAST(value AS type)Renvoie la valeur indiquée dans le type spécifié.CAST("10" AS INT) renvoie 10
CONCAT(string, string)Renvoie les valeurs combinées des chaînes ou des colonnes.CONCAT('Oracle','SQL') renvoie OracleSQL
CONCAT_WS(separator, expression1, expression2, expression3,...) Renvoie les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur indiqué entre les chaînes ou les colonnes.

Un séparateur est requis et doit être une chaîne.

Au moins une expression doit être fournie après le séparateur. Par exemple : CONCAT_WS(',' col1)

CONCAT_WS('-', 'Hello', 'Oracle') renvoie Hello-Oracle

CONCAT_WS(' ', address, city, postal_code) renvoie 123 MyCity 987654

Si un enfant de la fonction est un tableau, ce dernier est mis à plat :

CONCAT_WS(',', 1,2,3, to_array(4,5,6), to_array(7,8), 9) renvoie 1,2,3,4,5,6,7,8,9

INITCAP(string)Renvoie la chaîne avec la première lettre de chaque mot en majuscule, tandis que toutes les autres sont en minuscules et chaque mot est délimité par un caractère non imprimable.INITCAP('oRACLE sql') renvoie Oracle Sql
INSTR(string, substring[start_position])Renvoie l'index (base 1) de la première occurrence de substring dans string.INSTR('OracleSQL', 'SQL') renvoie 7
LOWER(string)Renvoie la chaîne avec toutes les lettres passées en minuscules.LOWER('ORACLE') renvoie oracle
LENGTH(string)Renvoie la longueur (en caractères) de la chaîne ou le nombre d'octets des données binaires. La longueur de la chaîne inclut les espaces de fin.LENGTH('Oracle') renvoie 6
LTRIM(string)Renvoie la chaîne avec les espaces de début enlevés à gauche.LTRIM(' Oracle')
NVL(expr1, epxr2)Renvoie l'argument qui n'est pas NULL.NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID())
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx])Recherche et extrait la chaîne qui correspond à un modèle d'expression régulière dans la chaîne d'entrée. Si l'index de groupe de capture (facultatif) est fourni, la fonction extrait le groupe spécifique.

REGEXP_SUBSTR('https://www.oracle.com/products', 'https://([[:alnum:]]+\.?){3,4}/?') renvoie https://www.oracle.com

REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) renvoie 22
REPLACE(string, search, replacement)Remplace toutes les occurrences de search par replacement.

Si search est introuvable dans la chaîne, la chaîne est renvoyée sans modification.

Si replacement n'est pas spécifié ou est une chaîne vide, rien ne remplace l'élément search, qui est enlevé de string.

REPLACE('ABCabc', 'abc', 'DEF') renvoie ABCDEF
RTRIM(string)Renvoie la chaîne avec les espaces de fin enlevés à droite.RTRIM('Oracle ')
SUBSTRING(string, position[, substring_length])Renvoie la sous-chaîne commençant à la position indiquée. SUBSTRING('Oracle SQL' FROM 2 FOR 3) renvoie rac
Pour les nombres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale])Convertit des nombres et des dates en chaînes. Pour les nombres, aucun format n'est requis. Pour les dates, utilisez le même format que DATE_FORMAT décrit dans Fonctions de date et d'heure. L'environnement local par défaut est en-US. Reportez-vous aux balises de langue prises en charge.

Dans les expressions de pipeline, format_string doit utiliser les codes de format strftime. Sinon, les modèles de format de date pris en charge sont les suivants :

  • yy : année à deux chiffres
  • yyyy : année à quatre chiffres
  • M : mois numérique, par exemple 1 pour janvier
  • MM : mois numérique, tel que 01 pour janvier
  • MMM : mois abrégé, par exemple Jan
  • MMMM : mois entier, par exemple janvier
  • d : jour numérique du mois, par exemple 1 pour le 1er juin
  • dd : jour numérique du mois, par exemple 01 pour le 1er juin
  • DDD : jour numérique de l'année compris entre 001 et 366, par exemple 002 pour le 2 janvier
  • F : jour numérique de la semaine dans un mois, par exemple 3 pour le 3e lundi de juin.
  • EEE ou E : jour nommé abrégé de la semaine, par exemple dim pour le dimanche
  • EEE : jour nommé de la semaine, par exemple dimanche
  • HH : format 24 heures allant de 00 à 23
  • H : format 24 heures allant de 0 à 23
  • hh : format 12 heures allant de 01 à 12
  • h : format 12 heures allant de 1 à 12
  • mm : minutes allant de 00 à 59
  • ss : secondes allant de 00 à 59
  • SSS : millisecondes de 000 à 999
  • a : AM ou PM
  • z : fuseau horaire tel que PDT

Exemple de nombre : TO_CHAR(123) renvoie 123

Exemple de date : TO_CHAR(Date '2020-10-30', 'yyyy.MM.dd', 'en-US') renvoie la chaîne 2020.10.30. Le premier argument est un objet Date représentant le 30 octobre 2020

UPPER(string)Renvoie la chaîne avec toutes les lettres passées en majuscules.UPPER('oracle') renvoie ORACLE
LPAD(str, len[, pad])Renvoie une chaîne complétée à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.LPAD('ABC', 5, '*') renvoie '**ABC'
RPAD(str, len[, pad])Renvoie une chaîne complétée à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est supprimé, la valeur par défaut est un espace.RPAD('XYZ', 6, '+' ) returns 'XYZ+++'
Fonctions d'opérateur (comparaison)
FonctionDescriptionExemple
CASE WHEN condition1 THEN result1 ELSE result2 ENDRenvoie la valeur pour laquelle une condition est remplie.CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END renvoie ABC si 1> 0, sinon, renvoie XYZ
ANDOpérateur AND logique. Renvoie true si les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 AND y = 20) renvoie "true" si x est égal à 10 et y est égal à 20. Si l'une des conditions n'est pas remplie, la fonction renvoie "false".
OROpérateur OR logique. Renvoie true si l'une des opérandes ou les deux opérandes ont la valeur True, sinon, renvoie false.(x = 10 OR y = 20) renvoie "false" si x n'est pas égal à 10 et que y n'est pas égal à 20. Si l'une des conditions est remplie, la fonction renvoie "true".
NOTOpérateur NOT logique.
LIKEExécute la correspondance de modèle de chaîne, si string1 correspond au modèle dans string2.
=Recherche l'égalité. Renvoie true si la valeur expr1 est égale à expr2. Sinon, renvoie false.x = 10 renvoie "true" lorsque la valeur de x est 10, sinon, renvoie "false"
!=Recherche l'inégalité. Renvoie true si la valeur expr1 est différente de expr2. Sinon, renvoie false.x != 10 renvoie "false" lorsque la valeur de x est 10, sinon, renvoie "true"
>Recherche une expression supérieure. Renvoie true si la valeur expr1 est supérieure à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure à 10, sinon, renvoie "false"
>=Recherche une expression supérieure ou égale. Renvoie true si la valeur expr1 est supérieure ou égale à expr2.x > 10 renvoie "true" lorsque la valeur de x est supérieure ou égale à 10, sinon, renvoie "false"
<Recherche une expression inférieure. Renvoie true si la valeur expr1 est inférieure à expr2.x < 10 renvoie "true" lorsque la valeur de x est inférieure à 10, sinon, renvoie "false"
<=Recherche une expression inférieure ou égale. Renvoie true si la valeur expr1 est inférieure ou égale à expr2.x <= 10 renvoie "true" lorsque la valeur de x est inférieure ou égale à 10, sinon, renvoie "false"
||Concatène deux chaînes.'XYZ' || 'hello' renvoie 'XYZhello'
BETWEENEvalue une plage.FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007
INVérifie si une expression correspond à une liste de valeurs.FILTER_2.ORDERS.ORDER_ID IN (1003, 1007)
Fonctions d'ID unique
FonctionDescriptionExemple
NUMERIC_ID()Génère un identificateur universel unique qui est un numéro 64 bits pour chaque ligne.NUMERIC_ID() renvoie, par exemple, 3458761969522180096 et 3458762008176885761
ROWID()Génère une augmentation monotone des numéros 64 bits.ROWID() renvoie, par exemple, 0, 1, 2, etc.
UUID()Génère un identificateur universel unique qui est une chaîne 128 bits pour chaque ligne.UUID() renvoie, par exemple, 20d45c2f-0d56-4356-8910-162f4f40fb6d
MONOTONICALLY_INCREASING_ID() Génère des entiers 64 bits uniques croissants de manière monotone qui ne sont pas des nombres consécutifs. MONOTONICALLY_INCREASING_ID() renvoie, par exemple, 8589934592 et 25769803776
Fonctions conditionnelles
FonctionDescriptionExemple
COALESCE(value, value [, value]*)Renvoie le premier argument non NULL, le cas échéant, sinon, renvoie la valeur NULL.COALESCE(NULL, 1, NULL) renvoie 1
NULLIF(value, value)Renvoie la valeur NULL si les deux valeurs sont égales, sinon, renvoie la première valeur.NULLIF('ABC','XYZ') renvoie ABC
Fonctions hiérarchiques
FonctionDescriptionExemple
SCHEMA_OF_JSON(string)Analyse une chaîne JSON et déduit le schéma au format DDL.

SCHEMA_OF_JSON('[{\"Zipcode\":704,\"ZipCodeType\":\"STANDARD\",\"City\":\"ORACLECITY\",\"State\":\"OC\"}]') renvoie 'ARRAY<STRUCT<City:string,State:string,ZipCodeType:string,Zipcode:bigint>>'

SCHEMA_OF_JSON('[{\"col\":0}]') renvoie 'ARRAY<STRUCT<col: BIGINT>>'

FROM_JSON(column, string)

Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.

  • Map, avec le type de clé String
  • Struct
  • Array

FROM_JSON('{\"Zipcode\":704,\"City\":\"ORACLE CITY\"}', 'STRUCT<Zipcode: BIGINT, City: STRING>') renvoie une colonne de type Struct avec le schéma indiqué : {704, ORACLE CITY}

FROM_JSON('{\"a\":1, \"b\":0.8}', 'STRUCT<a: BIGINT, b: DOUBLE>') renvoie une colonne de type Struct avec le schéma indiqué : {1, 0.8}

TO_JSON(column)Convertit une colonne contenant le type Struct, Array of Structs, Map ou Array of Maps en chaîne JSON.TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) renvoie une chaîne JSON {"s1":[1,2,3],"s2":{"key":"value"}}
TO_MAP(string,column[,string,column]*)Crée une colonne de type Map. Les colonnes d'entrée doivent être regroupées en paires clé-valeur. Les colonnes de clé d'entrée ne peuvent pas être NULL et doivent toutes comporter le même type de données. Les colonnes de valeur d'entrée doivent toutes comporter le même type de données.

TO_MAP('Ename',Expression_1.attribute1) renvoie une colonne de type Map : {"ENAME" -> 100}

TO_MAP('block', EXPRESSION_1.MYSOURCE.address.block, 'unit', EXPRESSION_1.MYSOURCE.address.unit) renvoie une colonne de type Map : {"block" -> 1,"unit" -> 1}

TO_STRUCT(string,column[,string,column]*)Crée une colonne de type Struct. Les colonnes d'entrée doivent être regroupées en paires clé-valeur.

TO_STRUCT('Ename',Expression_1.attribute1) renvoie {100}

TO_STRUCT('Id',Expression_1.attribute1, 'Name', Expression_1.attribute2) renvoie {100, "John"}

TO_ARRAY(column[,column]*)Crée une colonne de type Array. Les colonnes d'entrée doivent toutes comporter le même type de données.

TO_Array(Expression_1.attribute1) renvoie [100]

TO_ARRAY(EXPRESSION_1.attribute2,EXPRESSION_1.attribute3) renvoie ["John","Friend"]

Fonctions d'ordre supérieur

Les opérateurs de flux de données qui prennent en charge la création d'expressions et de types de données hiérarchiques peuvent utiliser des fonctions d'ordre supérieur.

Les opérateurs pris en charge sont les suivants :

  • Agréger

  • Expression

  • Filtre

  • Jointure

  • Code express

  • Fractionner

  • Faire pivoter

FonctionDescriptionExemple
TRANSFORM(column, lambda_function)Prend un tableau et une fonction anonyme, et configure un nouveau tableau en appliquant la fonction à chaque élément, et en affectant le résultat au tableau de sortie.Pour un tableau d'entrée d'entiers [1, 2, 3], TRANSFORM(array, x -> x + 1) renvoie un nouveau tableau de [2, 3, 4].
TRANSFORM_KEYS(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les clés ont le type du résultat de la fonction lambda, et les valeurs ont le type des valeurs de la correspondance de colonne.Pour une correspondance d'entrée avec des clés entières et des valeurs de chaîne de {1 -> 'value1', 2 -> 'value2', 3 -> 'value3'}, TRANSFORM_KEYS(map, (k, v) -> k * 2 + 1) renvoie une nouvelle correspondance de {3 -> 'value1', 5 -> 'value2', 7 -> 'value3'}.
TRANSFORM_VALUES(column, lambda_function)Prend une carte et une fonction avec 2 arguments (clé et valeur), et renvoie une carte dans laquelle les valeurs ont le type du résultat des fonctions lambda, et les clés ont le type des clés de correspondance de colonne. Pour une correspondance d'entrée avec des clés de chaîne et des valeurs de chaîne de {'a' -> 'value1', 'b' -> 'value2', 'c' -> 'value3'}, TRANSFORM_VALUES(map, (k, v) -> k || __ '' || v) renvoie une nouvelle correspondance de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'}.
ARRAY_SORT(array(...), lambda_function)

Seul l'opérateur d'expression prend en charge ARRAY_SORT.

Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments.

La fonction doit renvoyer -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au second.

Si la fonction est omise, le tableau est trié par ordre croissant.

array_sort(to_array(5, 6, 1),
                   (left, right) -> CASE WHEN left < right THEN -1
                                         WHEN left > right THEN 1 ELSE 0 END)

Le tableau renvoyé est :

[1,5,6]

Opérateur de fonction

Utilisez l'opérateur de fonction pour appeler Oracle Cloud Infrastructure Functions à partir de Data Integration.

Remarque

Pour les structures de données complexes telles que Map, Array et Composite (Struct), seul le format de série JSON est pris en charge actuellement.

Avant d'utiliser OCI Functions à partir d'un flux de données dans Data Integration, veillez à bien comprendre les dépendances et à effectuer les tâches requises.

Avant de commencer

La fonction à appeler doit être déployée dans OCI Functions. La fonction peut être écrite dans n'importe quel langage.

Utilisez la liste de contrôle de tâches suivante afin de vous assurer que vous disposez de la configuration et des informations requises pour utiliser l'opérateur de fonction avec OCI Functions.

TâcheExigence
Configuration pour utiliser OCI Functions et y accéder

Cette rubrique suppose que la location et l'environnement de développement sont déjà configurés pour le déploiement de fonctions vers OCI Functions.

Reportez-vous à Préparation des fonctions.

Seules les fonctions déployées vers OCI Functions peuvent être utilisées avec l'opérateur de fonction dans Data Integration.

Créer des stratégies pour contrôler l'appel et la gestion des fonctions

Cette rubrique suppose que vous ou l'administrateur de location avez déjà créé les stratégies Oracle Cloud Infrastructure nécessaires. Reportez-vous à Création de stratégies de contrôle d'accès aux ressources liées aux fonctions et au réseau.

Dans un environnement de production, vous voudrez peut-être limiter les utilisateurs à l'appel de fonctions dans une application spécifique ou à l'appel d'une fonction particulière uniquement.

Par exemple, pour limiter les utilisateurs à l'appel de fonctions dans un espace de travail spécifique, entrez les instructions de stratégie au format suivant :

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>'}

Pour limiter les utilisateurs à l'appel d'une fonction spécifique dans un espace de travail :

allow any-user to use fn-invocation in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

allow any-user to read fn-function in compartment <compartment-name> where ALL {request.principal.type='disworkspace', request.principal.id='<workspace-ocid>', target.function.id='<function-ocid>'}

Reportez-vous à Contrôle de l'accès à l'appel et à la gestion de fonctions.

Créez une application dans OCI Functions.

Une application est un regroupement logique de fonctions.

Dans une application, vous indiquez un à trois sous-réseaux dans lesquels exécuter les fonctions. Les fonctions exécutées dans une application sont isolées des fonctions exécutées dans une autre application.

Reportez-vous à Création d'applications (dans Functions).

Déployez une fonction dans OCI Functions.

Pour que la fonction dans OCI Functions fonctionne avec l'opérateur de fonction Data Integration dans un flux de données, la fonction ne doit pas lire ni écrire d'identificateur avec un espace.

Lorsque vous déployez une fonction vers OCI Functions à l'aide de l'interface de ligne de commande du projet Fn, elle est créée en tant qu'image Docker et propagée vers le registre Docker indiqué.

Reportez-vous à Création et déploiement de fonctions.

Collecter les informations nécessaires à l'utilisation de la fonction déployée avec l'opérateur de fonction.

Lorsque vous ajoutez et configurez un opérateur de fonction dans un flux de données Data Integration, vous devez connaître les éléments suivants :

  • Compartiment contenant l'application OCI Functions dans lequel la fonction à utiliser est déployée
  • Application dans OCI Functions comportant la fonction déployée
  • Nom de la fonction déployée
  • Champs définis dans la fonction
Ajout et configuration d'un opérateur de fonction

Un opérateur de fonction permet d'utiliser une fonction déployée dans OCI Functions pour traiter les données d'une source d'entrée. Les types de données primitifs et complexes sont pris en charge.

Indiquez la forme d'entrée de la fonction, ainsi que les attributs d'entrée et de sortie de l'opérateur de fonction pour lecture et écriture. Ensuite, mettez manuellement en correspondance les attributs source avec les attributs d'entrée.

Actuellement, seul le format de sérialisation JSON est pris en charge pour les structures de données complexes telles que Map, Array et Composite (Struct).

La procédure suivante suppose que vous avez ajouté et configuré un opérateur source avec l'entité de données à utiliser avec la fonction.

  1. Dans le panneau Opérateurs, faites glisser un opérateur Fonction vers le canevas.
  2. Avec le focus sur l'opérateur de fonction, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. Sélectionnez la fonction OCI à utiliser pour cet opérateur. Reportez-vous à Sélection d'une fonction.
  4. Sélectionnez le format de série, et définissez les données d'entrée et de sortie de la fonction.
  5. Indiquez les attributs d'entrée et les attributs de sortie pour l'opérateur, ainsi que les valeurs de Configuration de la fonction. Reportez-vous à Ajout d'une propriété d'opérateur de fonction.

    Les attributs d'entrée définissent la forme d'entrée pour l'opérateur de fonction, soit les attributs entrants sur lesquels la fonction va travailler. Les attributs d'entrée sont mis en correspondance avec les attributs entrants de la source d'entité de données.

    Les valeurs de configuration de la fonction définissent la forme d'entrée de la fonction, soit les champs définis dans la fonction. Définissez un champ de fonction avec un nom et une valeur. La valeur d'un champ correspond à un attribut d'entrée. Vous pouvez paramétrer une valeur de configuration de fonction.

    Les attributs de sortie définissent la forme de sortie pour l'opérateur de fonction, c'est-à-dire les attributs sur lesquels la fonction va écrire la sortie. Ajoutez un attribut de sortie pour chaque champ de fonction souhaité dans la sortie. Les opérateurs en aval suivants peuvent utiliser les attributs de sortie.

    Remarque

    N'utilisez pas d'espace dans le nom d'identificateur pour un attribut d'entrée, un attribut de sortie ou un champ de fonction. En outre, les noms tels que "Elément", "Clé" et "Valeur" ne sont pas autorisés.
  6. (Facultatif) Sous Propriétés de la fonction, développez Configuration de fonction pour vérifier les valeurs de configuration de la fonction. Vous pouvez modifier ou paramétrer une valeur.

    BATCH_SIZE est une configuration de fonction prédéfinie qui représente le nombre de lignes traitées à la fois par une fonction. La valeur par défaut est 10,000.

    Pour une valeur de configuration de fonction, vous pouvez effectuer les opérations suivantes :

    • Sélectionnez Modifier dans le menu Actions (menu Actions) pour modifier la valeur.
    • Sélectionnez Affecter le paramètre afin d'utiliser un paramètre pour la valeur. Reportez-vous à Affectation d'un paramètre.
  7. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  8. Dans l'onglet Mettre en correspondance, faites glisser un attribut de la source d'entité de données vers l'attribut d'entrée correspondant sur la fonction pour créer une correspondance manuelle.
  9. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Les attributs de sortie de la fonction sont ajoutés à l'ensemble de données.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  10. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Sélection d'une fonction

La fonction à utiliser avec un opérateur de fonction doit être déployée dans une application dans Oracle Cloud Infrastructure Functions.

  1. Sur le canevas, sélectionnez l'opérateur de fonction.
  2. Dans l'onglet Détails du panneau Propriétés, pour Fonction OCI, cliquez sur Sélectionner.
  3. Dans le panneau, sélectionnez le compartiment contenant l'application OCI Functions dans laquelle la fonction à utiliser a été déployée.
  4. Sélectionnez l'application dans OCI Functions disposant de la fonction déployée.
  5. Dans la section Fonction OCI, sélectionnez la fonction.
  6. Sélectionnez OK.
Ajout d'une propriété d'opérateur de fonction

Après avoir sélectionné une fonction déployée, spécifiez les propriétés qui définissent les données d'entrée de la fonction à traiter, les champs de la configuration de la fonction et les données de sortie renvoyées par la fonction.

Remarque

N'utilisez pas d'espace dans le nom d'identificateur pour un attribut d'entrée, un attribut de sortie ou un champ de fonction. En outre, les noms tels que "Elément", "Clé" et "Valeur" ne sont pas autorisés.
  1. Sous Propriétés de fonction, sélectionnez Ajouter une propriété.
  2. Dans le panneau, sélectionnez le type de propriété à spécifier.
    • attributs d'entrée : forme d'entrée de l'opérateur. Indiquez des attributs pour représenter les attributs entrants de la fonction à traiter. Les attributs d'entrée sont mis en correspondance avec les attributs entrants de la source d'entité de données.
    • Configuration de fonction : indiquez des champs de fonction qui définissent la forme d'entrée de la fonction. Un champ possède un nom et une valeur. La valeur d'un champ spécifie un attribut d'entrée.
    • attributs de sortie : forme de sortie de l'opérateur. Indiquez zéro, un ou plusieurs attributs pour représenter la sortie de la fonction après le traitement des données. Ajoutez un attribut de sortie pour chaque champ de fonction souhaité dans la sortie. Les opérateurs en aval suivants peuvent utiliser les attributs de sortie.
  3. Entrez le nom de la propriété dans le champ Identificateur. N'utilisez pas d'espace dans le nom pour un attribut d'entrée, un attribut de sortie ou un champ de fonction.
  4. Sélectionnez le type de données de la propriété.
  5. Pour un type de données primitif, en fonction du type et du type de données de la propriété que vous définissez, spécifiez les champs suivants et les autres champs applicables.

    • longueur : pour un attribut d'entrée ou de sortie, entrez une longueur. Par exemple, indiquez une longueur pour le type de données Numérique ou Varchar.
    • Valeur : pour un champ de fonction, entrez une valeur qui correspond à un attribut d'entrée.
  6. Pour le type de données complexe Map, spécifiez la paire clé-valeur d'un élément de correspondance. Sélectionnez Ajouter le type des données pour sélectionner le type des données de clé et de valeur.

    • clé : sélectionnez un type de données primitif uniquement.
    • Valeur : sélectionnez un type de données primitif et complexe.
  7. Pour le type d'élément de données complexe Array, sélectionnez Ajouter un type d'élément pour indiquer le type d'élément. Vous avez le choix entre les types de données primitifs et complexes.

  8. Pour le type de données Composite (Struct), indiquez les enfants du schéma. Pour ajouter un enfant de schéma, sélectionnez le symbole + en regard du nom de schéma parent.

    Dans le panneau Ajouter champ pour un enfant du schéma, entrez l'identificateur et sélectionnez un type de données. Vous avez le choix entre les types de données primitifs et complexes. Sélectionnez Ajouter pour ajouter l'enfant de schéma.

    Sélectionnez à nouveau le symbole + si vous voulez ajouter plusieurs enfants de schéma au schéma parent.

    Pour modifier ou supprimer un enfant de schéma, utilisez le menu Actions (menu Actions) à la fin de la ligne.

    Vous ne pouvez pas supprimer l'élément de schéma parent.

  9. Dans le panneau Ajouter une propriété, sélectionnez Ajouter.
  10. Répétez ces étapes pour ajouter les propriétés dont vous avez besoin afin de définir l'entrée de fonction, les champs de fonction et la sortie de fonction.

Opérateur de mise à plat

Utilisez l'opérateur de mise à plat pour transformer des données hiérarchiques dans un format simplifié à utiliser avec d'autres données relationnelles. Le processus d'aplatissement est également connu sous le nom de dénormalisation ou de désimbrication.

Les formats de fichier hiérarchiques que vous pouvez dénormaliser sont les suivants :

  • JSON et JSON multiligne
  • Avro
  • Parquet

Actuellement, le type de données hiérarchique pris en charge que vous pouvez extraire est Tableau. Vous ne pouvez sélectionner qu'un seul noeud de tableau dans un jeu de données hiérarchique à mettre à plat. La structure de données est mise à plat de la racine vers le noeud de tableau sélectionné, et présentée dans un format simplifié. Si le jeu de données comporte d'autres noeuds de tableau, vous avez la possibilité de les convertir en chaînes.

Vous pouvez configurer les attributs ou les champs à inclure dans la sortie mise à plat en définissant les préférences de projection.

Comprendre les préférences de projection

Les préférences de projection sont les paramètres du format, du nombre et du type des attributs projetés à inclure dans la sortie après mise à plat des données entrantes.

Data Integration fournit quatre paramètres de préférences de projet sélectionnés par défaut, ce qui génère une sortie projetée comportant les éléments suivants :

  • Tableaux d'index
  • Tous les attributs jusqu'à l'attribut sélectionné pour mise à plat
  • Valeurs NULL pour les attributs manquants des tableaux suivants
  • Lignage de nom de parent dans les noms d'attribut

Pour comprendre les préférences de projection que vous pouvez configurer, utilisez les rubriques suivantes avec l'exemple de structure de données JSON.

Exemple de structure de données JSON
id
vehicle[]
    make
    model
    insurance{}
        company
        policy_number
    maintenance[]
        date
        description[]
        dealerdetails[]
            servicestation1[]
                dealeraddress[]
                    city
                    state
                    contact
                dealername
            servicestation2[]
                dealeraddress[]
                    city
                    state
                    contact
                dealername
Créer et projeter des index de tableau

Le paramètre de préférence de projection Créer et projeter des index de tableau vous permet de contrôler si les attributs d'index des tableaux doivent être inclus dans la sortie mise à plat.

L'attribut index représente l'index d'un tableau. Supposons que le tableau soit ["a","b","c"], que l'index de "a" soit 0, que l'index de "b" soit 1 et que l'index de "c" soit 2.

Par défaut, Data Integration crée un attribut avec le suffixe _INDEX pour le noeud de tableau vers lequel mettre à plat les données. Le type de données d'un attribut d'index de tableau est Nombre entier.

Les attributs d'index sont également créés pour les noeuds de tableau parent du noeud de tableau sélectionné. L'opération de mise à plat a un impact sur tous les noeuds de tableau parent de la structure hiérarchique, de la racine au noeud sélectionné. Si un noeud de tableau parent affecté a des tableaux semblables, les attributs d'index ne sont pas créés pour ces noeuds de tableau semblables.

Dans l'exemple de structure de données JSON, si vous sélectionnez le tableau dealeraddress sous servicestation2 pour la mise à plat, Data Integration crée cinq attributs d'index de tableau : un pour le noeud de tableau sélectionné et quatre pour les noeuds parent impactés par l'opération de mise à plat.

Après aplatissement, les attributs de la structure simplifiée sont les suivants :

id
vehicle_INDEX
vehicle_make
vehicle_model
vehicle_insurance
    company
    policy_number
vehicle_maintenance_INDEX
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation1
    dealeraddress
        city
        state
        contact
    dealername
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername

Aucun attribut d'index de tableau n'est créé pour servicestation1 car le noeud de tableau est un semblable du noeud parent impacté servicestation2. De même, aucun attribut d'index n'est créé pour description car le noeud de tableau est un semblable du noeud parent affecté dealerdetails.

Si vous ne sélectionnez pas la préférence de projection Créer et projeter des index de tableau, les attributs de la structure simplifiée sont les suivants :

id
vehicle_make
vehicle_model
vehicle_insurance
    company
    policy_number
vehicle_maintenance_date
vehicle_maintenance_description
vehicle_maintenance_servicestation1
    dealeraddress
        city
        state
        contact
    dealername
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
vehicle_maintenance_servicestation2_dealeraddress_dealername
Conservez tous les attributs jusqu'au tableau mis à plat

Le paramètre de préférence de projection Conserver tous les attributs jusqu'au tableau mis à plat vous permet de contrôler s'il faut inclure dans la sortie mise à plat les attributs qui ne font pas partie des tableaux mis à plat.

Par défaut, Data Integration affiche tous les attributs de la racine vers le tableau sélectionné, y compris les tableaux semblables non affectés par la mise à plat.

Dans l'exemple de structure de données JSON, si vous ne sélectionnez pas la préférence de projection Conserver tous les attributs jusqu'au tableau mis à plat, les attributs de la structure simplifiée sont les suivants :

id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact
Générer une seule ligne avec des valeurs NULL pour le tableau parent manquant

Le paramètre de préférence de projection Produire une seule ligne avec des valeurs NULL pour un tableau parent manquant vous permet de contrôler s'il faut ignorer les lignes qui n'ont pas d'impact sur les attributs lors de la mise à plat.

L'effet du paramètre Produire une seule ligne avec des valeurs NULL pour un tableau parent manquant est visible uniquement dans l'onglet Données. Par défaut, Data Integration affiche des valeurs NULL pour les attributs manquants des tableaux suivants.

Par exemple, voici une sortie projetée avec des valeurs NULL :

|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
|Company3|Bellevue|null |true |[...]|0 |4 |123.34 |null |null |null |
|Company4|Kirkland|null |null |null |null |null |null |null |null |null |

Si vous ne sélectionnez pas cette option, les lignes sont ignorées et la sortie projetée est la suivante :

|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |0 |Laptop |20 |
|Company1|Redmond |[...]|true |[...]|0 |1 |123.34 |1 |Charger |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |0 |Mouse |2 |
|Company1|Redmond |[...]|true |[...]|1 |2 |323.34 |1 |Keyboard |1 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |0 |Laptop |20 |
|Company2|Seattle |[...]|false |[...]|0 |4 |123.34 |1 |Charger |3 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |0 |Chair |4 |
|Company2|Seattle |[...]|false |[...]|1 |5 |343.24 |1 |Lamp |2 |
Conserver le lignage de nom de parent dans les noms d'attribut

Le paramètre de préférence de projection Conserver le lignage du nom parent dans les noms d'attribut vous permet de contrôler si les noms parent doivent être inclus dans les noms d'attribut enfant.

Par défaut, Data Integration crée des noms de noeud enfant avec leurs noms de noeud parent.

Dans l'exemple de structure de données JSON, les attributs avec des noms parent dans la structure simplifiée sont les suivants (en supposant que les tableaux semblables non affectés par la mise à plat soient exclus dans la sortie) :

id
vehicle_INDEX
vehicle_maintenance_INDEX
vehicle_maintenance_dealerdetails_INDEX
vehicle_maintenance_servicestation2_INDEX
vehicle_maintenance_servicestation2_dealeraddress_INDEX
vehicle_maintenance_servicestation2_dealeraddress_city
vehicle_maintenance_servicestation2_dealeraddress_state
vehicle_maintenance_servicestation2_dealeraddress_contact

Si vous ne sélectionnez pas la préférence de projection Conserver le lignage de nom parent dans les noms d'attribut, les attributs sont les suivants :

id
vehicle_INDEX
maintenance_INDEX
dealerdetails_INDEX
servicestation2_INDEX
dealeraddress_INDEX
city
state
contact
Ajouter et configurer un opérateur de mise à plat

La procédure suivante suppose que vous avez ajouté un opérateur source et configuré l'opérateur vers une source Object Storage avec des types de données complexes, tels qu'un fichier JSON.

  1. Dans le panneau Opérateurs, faites glisser l'opérateur Mettre à plat sur le canevas et connectez-le à l'opérateur source.

    L'onglet Détails de l'opérateur de mise à plat apparaît dans le panneau Propriétés.

    Le tableau des attributs présente la structure des données d'arborescence des données entrantes. Tous les noeuds sont développés par défaut. Chaque noeud a un type de données et un chemin tels que VARCHAR et parent1.parent2.node1. Par exemple : vehicle.insurance.company

    Dans le champ de recherche, vous pouvez rechercher des noeuds de niveau supérieur uniquement.

  2. Lorsque l'opérateur de mise à plat est sélectionné, utilisez l'onglet Détails pour effectuer les opérations suivantes :
    1. Entrez le nom de l'opérateur dans le champ Identificateur ou laissez le nom tel quel.
    2. Sous Préférences de projection, vérifiez les paramètres. Par défaut, tous les paramètres sont sélectionnés. Désélectionnez les paramètres que vous ne souhaitez pas configurer pour cette opération.
    3. Dans les tables d'attributs, cochez la case en regard du noeud de tableau sur lequel vous souhaitez mettre à plat la structure de données. Sélectionnez ensuite Mettre les données à plat jusqu'à l'attribut sélectionné.

      Vous ne pouvez cocher qu'une seule case.

      Après la mise à plat, le chemin de l'attribut complexe que vous avez sélectionné et mis à plat s'affiche au-dessus du tableau, en regard de Mettre à plat par. Par exemple : FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    4. (Facultatif) S'il y a lieu dans la structure mise à plat, sélectionnez l'icône Actions en regard d'un noeud de tableau dans la table, puis sélectionnez Convertir le tableau en chaîne. Reportez-vous également à Conversions de tableau.
    5. (Facultatif) Pour rétablir la mise à plat sélectionnée à l'étape c, sélectionnez Effacer en regard du chemin Mettre à plat par. Reportez-vous à Suppression d'un chemin de mise à plat.
  3. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, si vous appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numeric, varchar), les attributs sont filtrés par le modèle de nom *_CODE et par le type numeric ou varchar.
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  4. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  5. Dans l'onglet Validation, recherchez les avertissements ou les erreurs pouvant entraîner l'échec du flux de données.
Convertir d'autres tableaux en chaînes

Une fois que vous avez sélectionné un attribut complexe pour la mise à plat, il peut y avoir d'autres noeuds de tableau dans la structure mise à plat.

Avec les autres noeuds d'un tableau dans une structure aplatie, vous pouvez convertir un tableau de types de données primitifs ou un tableau de structures en chaîne. Actuellement, le format pris en charge d'une chaîne de conversion est JSON.

Selon les données, le type de données d'une chaîne de conversion est VARCHAR ou BLOB. Vous pouvez modifier une chaîne de conversion de VARCHAR en CLOB, et inversement de CLOB en VARCHAR.

La procédure suivante suppose que vous avez ajouté un opérateur de mise à plat et sélectionné un attribut complexe pour créer une structure de données mise à plat.

  1. Lorsque l'opérateur de mise à plat est sélectionné sur le canevas de flux de données, accédez à l'onglet Détails dans le panneau Propriétés.
  2. Dans la table des attributs, vérifiez que la structure de données est mise à plat.

    En regard de Mettre à plat par, se trouve le chemin de l'attribut complexe que vous avez sélectionné pour la mise à plat. Par exemple : FLATTEN_1.MYFILE_JSON.vehicle.maintenance.dealerdetails.servicestation2.dealeraddress

    L'icône Actions (trois points) s'affiche pour les noeuds de tableau disponibles dans la structure mise à plat pour la conversion.

  3. Le cas échéant, sélectionnez l'icône d'actions en regard d'un noeud de tableau, puis sélectionnez Convertir le tableau en chaîne.

    Exemples d'attributs convertis :

    Type de tableau Attribut converti

    Tableau de chaînes

    "goods": [
        "laptop",
        "charger",
        "chair"
      ]

    ["laptop","charger","chair"]

    Tableau de nombres

    "numbers": [
        234,
        455,
        98
      ]

    [234,455,98] 
Afficher, modifier et supprimer des conversions de tableau

La procédure suivante suppose que vous avez sélectionné un noeud de tableau à convertir en chaîne, le cas échéant.

  1. Lorsque l'opérateur de mise à plat est sélectionné sur le canevas de flux de données, accédez à l'onglet Détails dans le panneau Propriétés.
  2. Sélectionnez Visualiser les conversions de tableau.
  3. Dans le panneau Conversions de tableau qui s'affiche, vérifiez les attributs complexes qui ont été convertis en chaîne.
  4. Pour modifier le type de données d'une chaîne de conversion, sélectionnez une action de mise à jour à partir de l'icône Actions. Selon le type de données, sélectionnez Mettre à jour le type de données sur CLOB ou Mettre à jour le type de données sur VARCHAR.
  5. Pour supprimer des conversions, procédez de l'une des manières suivantes :
    • Pour enlever une seule conversion, cochez la case en regard d'une conversion, puis sélectionnez Enlever. Vous pouvez également sélectionner Enlever à partir de l'icône Actions pour une conversion.
    • Pour supprimer toutes les conversions, cochez la case en haut de la liste (en regard de l'en-tête Conversions de tableau), puis sélectionnez Enlever.

    Une conversion sélectionnée est supprimée et l'attribut précédemment converti retrouve sa structure hiérarchique et son type de données d'origine.

Suppression d'un chemin d'aplatissement

Lors de la configuration d'un opérateur de mise à plat sur un flux de données, vous pouvez rétablir une mise à plat en effaçant le chemin Mettre à plat par.

  1. Lorsque l'opérateur de mise à plat est sélectionné sur le canevas de flux de données, accédez à l'onglet Détails dans le panneau Propriétés.
  2. Au-dessus de la table des attributs, en regard du chemin Mettre à plat par, sélectionnez Effacer.
  3. Dans la boîte de dialogue Effacer la mise à plat qui apparaît, confirmez le nom de l'attribut complexe à annuler, puis sélectionnez Effacer pour continuer.

    En supprimant l'aplatissement, la structure de données d'origine avant l'aplatissement est restaurée :

    • S'ils sont créés, tous les attributs avec le suffixe _INDEX sont supprimés.
    • Si les noms parent ont été supprimés des noms de noeud enfant, la hiérarchie de lignage de nom parent-enfant est restaurée.
    • Si certains tableaux ont été convertis en chaînes, les conversions de tableau sont supprimées et les attributs précédemment convertis sont rétablis dans leur structure hiérarchique et leur type de données d'origine.

Opérateur de fonction de table

Utilisez l'opérateur de fonction de table pour ajouter des fonctions de table qui renvoient des données sous forme de tables.

Actuellement, seules les fonctions de table intégrées peuvent être sélectionnées dans une liste. Les fonctions de table fournies par l'opérateur de fonction de table incluent le cube, l'analyse de tabulation croisée, les éléments fréquents, la consolidation et Spark SQL. Chaque fonction de table intégrée comporte des champs prédéfinis que vous configurez pour renvoyer la collection de données souhaitée. La logique complexe peut être consolidée en une seule fonction qui renvoie des ensembles de données spécifiques. Le paramétrage des champs permet d'ajuster la logique avec souplesse.

Un opérateur de fonction de table peut être connecté à tout autre opérateur d'un flux de données. Ainsi, un opérateur de fonction de table peut être utilisé en tant que source de données, opérateur de milieu de flux et cible.

Ajouter un opérateur de fonction de table
  1. Faites glisser un opérateur Fonction de tableau du panneau Opérateurs vers le canevas.
  2. Avec le focus sur l'opérateur, dans l'onglet Détails du panneau Propriétés, entrez un nom dans le champ Identificateur ou laissez le nom tel quel.
  3. Pour Type de transformation, sélectionnez la fonction de table à utiliser pour cet opérateur.
  4. Sous Configurer les paramètres, procédez comme suit :
    1. Configurez la logique principale de la fonction de table en indiquant les détails de la fonction. Seules les clés d'entrée de fonction spécifiques et leurs valeurs peuvent être configurées, comme indiqué dans l'onglet Détails de la fonction de table sélectionnée.
    2. (Facultatif) Pour paramétrer une paire clé-valeur d'entrée, sélectionnez Affecter un paramètre pour utiliser des paramètres. Reportez-vous à Affectation d'un paramètre.
    3. Une fois les champs d'entrée renseignés, sélectionnez Calculer la forme de sortie.

      Data Integration génère les champs de sortie à l'aide des détails de la logique principale et matérialise les formes d'entrée/sortie. Utilisez l'onglet Attributs pour visualiser les formes d'entrée/sortie.

  5. Dans l'onglet Attributs, sélectionnez l'affichage des attributs entrants ou des attributs de sortie. Les attributs entrants sont liés à l'opérateur sur le côté gauche. Les attributs de sortie sont liés à l'opérateur sur le côté droit et mènent à l'opérateur suivant.

    Vous pouvez sélectionner des attributs individuels ou utiliser les icônes de filtre pour filtrer la liste des attributs. Appliquez ensuite des règles d'exclusion en masse aux attributs sélectionnés ou filtrés.

    • Sélectionnez l'icône de filtre dans la colonne Nom pour filtrer les attributs par modèle de nom. Dans le champ de filtre, entrez une expression régulière simple. Vous pouvez utiliser les caractères génériques ? et * dans le modèle d'expression régulière.
    • Sélectionnez l'icône de filtre dans la colonne Type pour filtrer les attributs par type de données. Utilisez le menu pour sélectionner le type à utiliser comme filtre.
      Remarque

      Vous pouvez appliquer un seul filtre de modèle de nom, mais plusieurs filtres de type à la fois. Par exemple, pour filtrer la liste sur le modèle de nom *_CODE et sur les types numérique et varchar, appliquez un filtre de modèle de nom (*_CODE) et deux filtres de type (numérique, varchar).
    • Utilisez le menu Actions pour appliquer des règles d'exclusion en masse aux attributs sélectionnés ou filtrés. Sélectionnez Exclure par sélection ou Exclure par filtre appliqué.
    • Sélectionnez Visualiser les règles pour ouvrir le panneau Règles. Vous pouvez afficher et gérer les règles appliquées à l'entité de données. Par défaut, la première règle du panneau Règles inclut tout.

    Les types complexes sont présentés sous la forme ARRAY (data type), COMPOSITE ou MAP (key type, value type). Reportez-vous à Types de données hiérarchiques pour comprendre ce qui est pris en charge pour les types complexes.

  6. Dans l'onglet Données, affichez un échantillon des données en fonction de la configuration de l'opérateur et des règles que vous avez appliquées dans l'onglet Attributs.

    Le profil de données n'apparaît pas pour les attributs de données complexes. Pour les attributs de données complexes, afin de visualiser la hiérarchie de la structure de données dans une structure simplifiée, sélectionnez les données complexes affichées. Par exemple : [...] ou {…}.

    Vous pouvez appliquer des transformations à des attributs individuels ou effectuez une transformation en masse sur un groupe d'attributs.

    Pour les entités avec des types de données hiérarchiques, reportez-vous à Types de données hiérarchiques afin de comprendre ce qui est pris en charge.

  7. Dans l'onglet Validation, recherchez les avertissements ou les erreurs susceptibles d'entraîner l'échec du flux de données.
Comprendre les fonctions des tables

Voici la liste des fonctions de table intégrées prises en charge par l'opérateur de fonction de table.

Cache

Conserve et met en cache un ensemble de données en fonction du stockage de mémoire level indiqué.

Renvoie un nouveau jeu de données dans le jeu de données distribué résilient (RDD) mis en cache.

Paramètre Description
level

Stockage mémoire à utiliser :

MEMORY_ONLY : stocker en tant qu'objets Java désérialisés dans la JVM. Si la mémoire est insuffisante, certaines partitions RDD ne sont pas mises en cache, mais sont recalculées en fonction des besoins.

MEMORY_AND_DISK : stocker en tant qu'objets Java désérialisés dans la JVM. Si la mémoire est insuffisante, certaines partitions RDD sont stockées sur le disque et lues à partir du disque au fur et à mesure des besoins.

MEMORY_ONLY_SER : stocke en tant qu'objets Java désérialisés.

MEMORY_AND_DISK_SER : stocke en tant qu'objets Java désérialisés. Les partitions qui ne tiennent pas sont stockées sur le disque.

DISK_ONLY : stocke les partitions RDD uniquement sur le disque.

MEMORY_ONLY_2, MEMORY_AND_DISK_2, etc : semblable aux autres niveaux, mais chaque partition est répliquée sur deux noeuds de cluster.

Analyse de tabulation croisée

Calcule une table de fréquence par paire ou une table de réserve à partir de valeurs distinctes des deux colonnes indiquées.

Le nombre de valeurs distinctes pour chaque colonne doit être inférieur à 1e4.

Renvoie une trame de données contenant la table de réserve. Dans la table des réserves pour imprévus :

  • Le nom de la première colonne est col1_col2, où col1 est la première colonne et col2 la deuxième colonne avant la transformation. La première colonne de chaque ligne correspond aux valeurs distinctes de col1.
  • Les autres noms de colonne sont les valeurs distinctes de col2.
  • Les décomptes sont renvoyés en tant que type long.
  • Le nombre de paires sans occurrence est égal à zéro.
  • Le nombre maximal de paires différentes de zéro est 1e6.
  • Les éléments NULL sont remplacés par null.
Paramètre Description
col1

Nom de la première colonne. Reportez-vous à la note après ce tableau pour connaître les limites.

Les éléments distincts de col1 constituent le premier élément de chaque ligne de la trame de données renvoyée.

col2

Nom de la deuxième colonne. Reportez-vous à la note après ce tableau pour connaître les limites.

Les éléments distincts de co2 définissent les noms de colonne dans la trame de données renvoyée.

Remarque

Seuls les caractères suivants sont autorisés dans un nom de colonne :

  • lettres minuscules et majuscules a-z A-Z
  • chiffres 0-9
  • trait de soulignement _
Exemple

Supposons que col1 soit age et que col2 soit salary.

Avant la transformation :

+---+------+
|age|salary|
+---+------+
|1  |100   |
|1  |200   |
|2  |100   |
|2  |100   |
|2  |300   |
|3  |200   |
|3  |300   |
+---+------+

Après la transformation :

+----------+---+---+---+
|age_salary|100|200|300|
+----------+---+---+---+
|2         |2  |0  |1  |
|1         |1  |1  |0  |
|3         |0  |1  |1  |
+----------+---+---+---+
Cube

Génère un cube multidimensionnel de toutes les combinaisons possibles à l'aide de la liste de colonnes donnée et des calculs dans les expressions de fonction d'agrégation données.

Les fonctions d'agrégation suivantes sont prises en charge dans les expressions :

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

Renvoie une image de données après la transformation du cube.

Paramètre Description
cubeColumns

Liste des colonnes, séparées par des virgules, par lesquelles générer le cube multidimensionnel.

aggExpressions

Expressions de fonction d'agrégation à exécuter sur les colonnes.

Par exemple : salary -> avg, age -> max

Exemple

Avant la transformation :

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

Si cubeColumns a la valeur department, region et aggExpressions a la valeur salary -> avg, age -> max (calcul du salaire moyen et de l'âge maximal), le cube après transformation est :

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|null      |local  |1125.0           |32      |
|Art       |foreign|2500.0           |30      |
|null      |foreign|1700.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Génération de données

Génère des données synthétiques à l'aide du format de fichier et du contenu indiqués. Les formats de fichier pris en charge sont les suivants :

  • CSV
  • JSON

Renvoie une entité de données. La source de données synthétique peut être utilisée dans des tests unitaires de pipeline où les données réelles ne sont pas utilisées ou déplacées.

Paramètre Description
format

Type de fichier. Les valeurs admises sont les suivantes :

  • CSV
  • JSON
content

Contenu du fichier pour le format donné.

Exemple

Exemple de contenu CSV :

co1,co2,co3
1,B,3
A,2,C

Résultat de la génération de données :

+---+---+---+
|co1|co2|co3|
+---+---+---+
|1  |B  |3  |
+---+---+---+
|A  |2  |C  |
+---+---+---+
Suppression des doublons

Recherche les doublons dans la ou les colonnes indiquées et renvoie un nouvel ensemble de données avec les lignes en double supprimées.

Paramètre Description
columns

Nom de colonne ou liste de noms de colonne séparés par des virgules.

Exemple

Avant la transformation :

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|1  |3  |
|2  |4  |
+---+---+

Si columns a la valeur a, l'ensemble de données après la transformation est :

+---+---+
|a  |b  |
+---+---+
|1  |2  |
|3  |4  |
|2  |4  |
+---+---+
Articles fréquents

Recherche les éléments fréquents dans la ou les colonnes indiquées en utilisant la fréquence minimale indiquée.

L'algorithme de comptage d'éléments fréquents proposé par Karl et al. est utilisé pour trouver des éléments fréquents. Les faux positifs sont possibles.

Renvoie une image de données avec un tableau d'éléments fréquents pour chaque colonne.

Paramètre Description
freqItems

Nom de colonne ou liste de noms de colonne séparés par des virgules pour lesquels vous voulez rechercher des éléments fréquents.

support

Fréquence minimale pour qu'un élément soit considéré comme fréquent.

La valeur doit être supérieure à 1e-4 (valeur décimale de 0.0001).

Par exemple, 0.6 représente 60 %. Autrement dit, un élément qui apparaît dans au moins 60 % des lignes est un élément fréquent.

Exemple

Avant la transformation :

+-------+--------------+
|user_id|favorite_fruit|
+-------+--------------+
|      1|         apple|
|      2|        banana|
|      3|         apple|
|      4|        orange|
|      5|        banana|
|      6|        banana|
|      7|         apple|
+-------+--------------+

Si freqItems a la valeur favorite_fruit et que support a la valeur 0.6, la trame de données renvoyée après la transformation est la suivante :

+------------------------+
|favorite_fruit_freqItems|
+------------------------+
|                [banana]|
+------------------------+
Na Drop

Enlève les lignes contenant des valeurs NULL ou NaN dans la ou les listes de colonnes indiquées.

Renvoie une image de données qui exclut les lignes.

Paramètre Description
how

Déterminer si une ligne doit être supprimée. Les valeurs admises sont les suivantes :

  • any : supprime la ligne contenant des valeurs NULL ou NaN dans le fichier cols indiqué.
  • all : supprimez la ligne uniquement si toutes les valeurs cols indiquées sont NULL ou NaN pour cette ligne.

Le paramètre how est ignoré si le paramètre minNonNulls est spécifié.

cols

Nom de colonne ou liste de noms de colonne séparés par des virgules.

minNonNulls

Nombre minimum de valeurs non NULL et non NaN qu'une ligne peut contenir.

Supprime les lignes contenant moins que le minimum indiqué.

Le paramètre minNonNulls remplace le paramètre how.

Exemple

Avant la transformation :

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Si how a la valeur any et que cols a la valeur name, la trame de données renvoyée après la transformation est la suivante :

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Lorsque vous utilisez le paramètre how avec la valeur all, une ligne est supprimée uniquement si toutes ses valeurs sont NULL. Par exemple, avant la transformation :

+----+--------+----+
|  id|    name| age|
+----+--------+----+
|   1|John Doe|  30|
|   2|    null|null|
|   3|Jane Doe|  25|
|   4|Jake Doe|null|
|null|    null|null|
+----+--------+----+

Après la transformation :

+---+--------+----+
| id|    name| age|
+---+--------+----+
|  1|John Doe|  30|
|  2|    null|null|
|  3|Jane Doe|  25|
|  4|Jake Doe|null|
+---+--------+----+
Na Fill

Remplace les valeurs NULL et renvoie une image de données à l'aide des valeurs remplacées.

Paramètre Description
replacement

Correspondance clé-valeur à utiliser pour remplacer les valeurs NULL. La clé est un nom de colonne. La valeur est une valeur de remplacement.

La clé pointe vers la valeur de remplacement. Par exemple : name -> Tom signifie remplacer les valeurs NULL dans la colonne name par Tom.

Une valeur de remplacement est convertie au type de données de la colonne. Une valeur de remplacement doit être du type suivant :

  • Int
  • Long
  • Float
  • Double
  • Chaîne (String)
  • Boolean
Exemple

Avant la transformation :

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Si la mappe clé-valeur est la suivante :

id -> 3

name -> unknown

age -> 10

Après la transformation :

+---+-------+---+
|id |name   |age|
+---+-------+---+
|1  |Alice  |25 |
|2  |unknown|28 |
|3  |Bob    |10 |
|4  |Charlie|30 |
+---+-------+---+
Remplacer Na

Remplace une valeur par une autre valeur dans la ou les colonnes données en mettant en correspondance les clés dans la correspondance de clé et de valeur de remplacement donnée.

Renvoie une nouvelle image de données qui contient la transformation remplacée.

Paramètre Description
cols

Nom de colonne ou liste de noms de colonne séparés par des virgules sur lesquels appliquer des valeurs de remplacement.

Si cols a la valeur *, le remplacement est appliqué à toutes les colonnes de type chaîne, numérique ou booléen.

replacement

Correspondance clé-valeur de remplacement à utiliser. La clé est une valeur à remplacer. La valeur est la valeur de remplacement. La valeur de mapping peut avoir des valeurs NULL.

La clé pointe vers la valeur de remplacement. Par exemple : Alice -> Tom signifie remplacer Alice par Tom.

La paire clé/valeur de remplacement doit avoir le même type. Seuls les types suivants sont pris en charge :

  • Boolean
  • Double
  • Chaîne (String)
Exemple

Avant la transformation :

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Alice  |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+

Si cols est name et que replacement est Alice -> Tom, la trame de données après la transformation est :

+----+-------+----+
|id  |name   |age |
+----+-------+----+
|1   |Tom    |25  |
|2   |null   |28  |
|null|Bob    |null|
|4   |Charlie|30  |
+----+-------+----+
Répartition

Divise un ensemble de données en fonction des colonnes données en fonction du nombre de partitions spécifié.

Renvoie un nouvel ensemble de données partitionné par hachage. Le nombre exact de partitions indiqué est renvoyé.

Paramètre Description
partitionColumns

Nom de colonne ou liste de noms de colonne séparés par des virgules par lesquels l'ensemble de données est partitionné.

numberOfPartitions

Nombre de partitions à créer.

Cumul

Génère une consolidation multidimensionnelle des combinaisons possibles à l'aide de la liste de colonnes donnée et des calculs dans les expressions de fonction d'agrégation données.

Les fonctions d'agrégation suivantes sont prises en charge dans les expressions :

  • AVG
  • COUNT
  • MEAN
  • MAX
  • MIN
  • SUM

Renvoie une image de données après la transformation de consolidation.

Paramètre Description
rollupColumns

Liste de colonnes, séparées par des virgules, par lesquelles générer la consolidation multidimensionnelle.

aggExpressions

Expressions de fonction d'agrégation à exécuter sur les colonnes.

Par exemple : salary -> avg, age -> max

Exemple

Avant la transformation :

+----------+-----+-------+------+---+
|department|group|region |salary|age|
+----------+-----+-------+------+---+
|Eng       |A    |local  |1000  |10 |
|Art       |B    |foreign|2000  |11 |
|Sport     |C    |local  |1500  |13 |
|Eng       |A    |foreign|800   |19 |
|Art       |A    |foreign|3000  |30 |
|Eng       |E    |foreign|1000  |21 |
|Art       |D    |local  |1000  |32 |
|Sport     |C    |local  |1000  |28 |
+----------+-----+-------+------+---+

Si rollupColumns a la valeur department, region et que aggExpressions a la valeur salary -> avg, age -> max (calcul du salaire moyen et de l'âge maximal), la consolidation après transformation est la suivante :

+----------+-------+-----------------+--------+
|department|region |avg(salary)      |max(age)|
+----------+-------+-----------------+--------+
|Eng       |foreign|900.0            |21      |
|Sport     |null   |1250.0           |28      |
|Art       |null   |2000.0           |32      |
|Eng       |null   |933.3333333333334|21      |
|Art       |foreign|2500.0           |30      |
|Eng       |local  |1000.0           |10      |
|null      |null   |1412.5           |32      |
|Sport     |local  |1250.0           |28      |
|Art       |local  |1000.0           |32      |
+----------+-------+-----------------+--------+
Spark SQL

Exécute des requêtes SQL Spark sur les données entrantes, en créant d'abord des vues temporaires à l'aide des noms de table indiqués.

Paramètre Description
SQL

Instruction SQL ou script à exécuter.

Exemple : select * from table1

tableName

Nom de table ou liste de noms de table séparés par des virgules par laquelle Spark crée des tables temporaires.

Exemple : table1, table2

Prélèvement stratifié

Génère un échantillon stratifié sans remplacement en fonction de la fraction d'échantillonnage donnée pour chaque strate.

Renvoie une nouvelle image de données qui représente l'échantillon stratifié.

Paramètre Description
strata_col

Colonne définissant les strates.

fractions

Fraction d'échantillonnage pour chaque strate, de 0.0 à 1.0.

Par exemple, 0.1 renvoie 10 % des lignes, et 1.0 renvoie 100 % des lignes.

Si aucune fraction n'est spécifiée, zéro est supposé.

sample_size

Si fractions n'est pas spécifié, indiquez une partie de l'ensemble de données à échantillonner, de 0.0 à 1.0.

seed

Utilisez n'importe quel nombre aléatoire dans seed pour renvoyer le même échantillon à chaque fois, tout en conservant la cohérence du résultat.

Exemple

Avant la transformation :

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  2|    1|
|  2|    1|
|  2|    3|
|  3|    2|
|  3|    3|
+---+-----+

Si strata_col est key et que fractions est le suivant :

1 -> 1.0, 3 -> 0.5

Après la transformation :

+---+-----+
|key|value|
+---+-----+
|  1|    1|
|  1|    2|
|  3|    2|
+---+-----+
Récapitulatif

Calcule les statistiques données pour les colonnes numériques et de chaîne.

Si aucune statistique n'est fournie, tous les éléments suivants sont calculés :

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • quartiles approximatifs (percentiles à 25 %, 50 % et 75 %)
  • MAX
Paramètre Description
statistics

Liste de statistiques séparées par des virgules.

Les valeurs admises sont les suivantes :

  • COUNT
  • MEAN
  • STDDEV
  • MIN
  • un ou plusieurs centiles approximatifs arbitraires indiqués sous forme de pourcentage (par exemple, 75%)
  • MAX

Exemple : count, mean, stddev, min, 27%, 41%, 95%, max

Exemple

Avant la transformation :

+----------+------+-----------------+--------+
|department|gender|avg(salary)      |max(age)|
+----------+------+-----------------+--------+
|Eng       |female|900.0            |21      |
|Sport     |null  |1250.0           |28      |
|Art       |null  |2000.0           |32      |
|Eng       |null  |933.3333333333334|21      |
|Art       |female|2500.0           |30      |
|Eng       |male  |1000.0           |10      |
|null      |null  |1412.5           |32      |
|Sport     |male  |1250.0           |28      |
|Art       |male  |1000.0           |32      |
+----------+------+-----------------+--------+

Supposons que statistics soit count, mean, stddev, min, 27%, 41%, 95%, max.

Après la transformation :

+-------+----------+-----+------+----------------+----------------+
|summary|department|group|gender|salary          |age             |
+-------+----------+-----+------+----------------+----------------+
|count  |8         |8    |8     |8               |8               |
|mean   |null      |null |null  |1412.5          |20.5            |
|stddev |null      |null |null  |749.166203188585|8.76682056718072|
|min    |Art       |A    |female|800             |10              |
|27%    |null      |null |null  |1000            |13              |
|41%    |null      |null |null  |1000            |19              |
|95%    |null      |null |null  |3000            |32              |
|max    |Sport     |E    |male  |3000            |32              |
+-------+----------+-----+------+----------------+----------------+