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.
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.
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".
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
etBANK_EU
, entrezBANK
, 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.
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.
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.
Vous pouvez ajouter plusieurs opérateurs source à un flux de données.
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.
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
*.html | Correspond à 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?*.java | Correspond à 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]*json | Correspond à 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/**.csv | Correspond à tous les fichiers avec l'extension csv figurant dans le dossier directory3 et ses sous-dossiers |
directory3/*.csv | Correspond à tous les fichiers avec l'extension csv figurant dans le dossier principal directory3 . Les fichiers des sous-dossiers ne sont pas inclus. |
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.
-
Dans le panneau Sélectionner une entité des données, sélectionnez Parcourir par modèle.
-
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.
-
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épertoiredepartment1/2020
. Vous pouvez utiliser la syntaxe de paramètre${}
dans le champ Modèle de recherche. -
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
-
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.
-
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.
-
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.
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 :
- 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).
- Créez et publiez une tâche d'intégration pour le flux de données paramétré.
- 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.
- 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.
Vous pouvez ajouter plusieurs opérateurs cible à un flux de données. Chaque cible ne peut comporter qu'un seul port entrant.
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.
L'onglet Données affiche les données transformées en fonction des opérateurs appliqués au flux de données.
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.
L'onglet Mettre en correspondance est disponible uniquement pour un opérateur cible.
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 :
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.
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.
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.
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.
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 () d'une règle pour effacer cette règle.
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
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.
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 :
Fonction | Description | Exemple |
---|---|---|
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
Oracle applique la fonction de hachage à la combinaison de |
|
Fonction | Description | Exemple |
---|---|---|
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 numeric | CEIL(-1,2) |
FLOOR(numeric) | Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numeric | FLOOR(-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 :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Renvoie la date actuelle. | CURRENT_DATE renvoie 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 Modèles de format de date pris en charge :
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Renvoie le nombre de mois entre 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. |
|
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 : 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 : 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 |
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.
Si Si |
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 '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 |
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 | Description | Exemple |
---|---|---|
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('-', 'Hello', 'Oracle') renvoie Hello-Oracle
Si un enfant de la fonction est un tableau, ce dernier est mis à plat :
|
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('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 Si | 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,
| Exemple de nombre : Exemple de date : |
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+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Renvoie 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 |
AND | Opé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". |
OR | Opé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". |
NOT | Opérateur NOT logique. | |
LIKE | Exé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' |
BETWEEN | Evalue une plage. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Vérifie si une expression correspond à une liste de valeurs. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et déduit le schéma au format DDL. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.
|
|
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_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_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. |
|
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
Fonction | Description | Exemple |
---|---|---|
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 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. |
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.
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 :
Fonction | Description | Exemple |
---|---|---|
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
Oracle applique la fonction de hachage à la combinaison de |
|
Fonction | Description | Exemple |
---|---|---|
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 numeric | CEIL(-1,2) |
FLOOR(numeric) | Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numeric | FLOOR(-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 :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Renvoie la date actuelle. | CURRENT_DATE renvoie 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 Modèles de format de date pris en charge :
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Renvoie le nombre de mois entre 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. |
|
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 : 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 : 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 |
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.
Si Si |
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 '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 |
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 | Description | Exemple |
---|---|---|
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('-', 'Hello', 'Oracle') renvoie Hello-Oracle
Si un enfant de la fonction est un tableau, ce dernier est mis à plat :
|
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('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 Si | 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,
| Exemple de nombre : Exemple de date : |
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+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Renvoie 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 |
AND | Opé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". |
OR | Opé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". |
NOT | Opérateur NOT logique. | |
LIKE | Exé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' |
BETWEEN | Evalue une plage. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Vérifie si une expression correspond à une liste de valeurs. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et déduit le schéma au format DDL. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.
|
|
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_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_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. |
|
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
Fonction | Description | Exemple |
---|---|---|
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 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. |
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.
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.
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')
ouUPPER('oracle')
.Placez les noms d'attribut entre guillemets. Par exemple :
UPPER("Sales")
ouCONCAT(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 :
Fonction | Description | Exemple |
---|---|---|
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
Oracle applique la fonction de hachage à la combinaison de |
|
Fonction | Description | Exemple |
---|---|---|
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 numeric | CEIL(-1,2) |
FLOOR(numeric) | Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numeric | FLOOR(-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 :
|
|
Seul l'opérateur Expression prend en charge les fonctions de tableau.
Fonction | Description | Exemple |
---|---|---|
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 |
ELEMENT_AT(array(1, 2, 3), 2) renvoie 2 |
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Renvoie la date actuelle. | CURRENT_DATE renvoie 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 Modèles de format de date pris en charge :
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Renvoie le nombre de mois entre 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. |
|
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 : 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 : 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 |
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.
Si Si |
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 '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 |
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 | Description | Exemple |
---|---|---|
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('-', 'Hello', 'Oracle') renvoie Hello-Oracle
Si un enfant de la fonction est un tableau, ce dernier est mis à plat :
|
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('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 Si | 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,
| Exemple de nombre : Exemple de date : |
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+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Renvoie 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 |
AND | Opé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". |
OR | Opé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". |
NOT | Opérateur NOT logique. | |
LIKE | Exé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' |
BETWEEN | Evalue une plage. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Vérifie si une expression correspond à une liste de valeurs. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et déduit le schéma au format DDL. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.
|
|
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_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_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. |
|
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
Fonction | Description | Exemple |
---|---|---|
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 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. |
Le tableau renvoyé est : [1,5,6] |
Vous pouvez dupliquer des expressions qui ont été ajoutées à un opérateur d'expression.
Vous pouvez modifier l'ordre des expressions qui ont été ajoutées à un opérateur d'expression.
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.
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 :
Fonction | Description | Exemple |
---|---|---|
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 :
Exemple 1 : sans regroupement
Exemple 2 : regroupement par
|
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
Fonction | Description | Exemple |
---|---|---|
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 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. |
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.
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.
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.
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 :
- 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.
- Dans le panneau Ajouter une condition de tri, sélectionnez l'attribut à utiliser pour le tri des données.
- Pour filtrer les attributs à l'aide de modèles de nom, saisissez un modèle de nom, par exemple, *CITY*.
- 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.
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 :
Pour modifier les conditions de tri, procédez comme suit :
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 :
- Dans l'onglet Détails, accédez à la section Conditions de tri.
-
Pour supprimer une par une les conditions de tri, sélectionnez le menu Actions (
) correspondant à la condition de tri à supprimer.
- 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.
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.
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 |
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 |
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.
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.
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
Service | LOCATION-ID | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Entité de données 2
Service | Entrepôt | LOCATION-ID |
---|---|---|
Prestations | Denver | 1600 |
Informatique | San Francisco | 1400 |
Entité de données résultante
Service | LOCATION-ID | Entrepôt |
---|---|---|
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
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
Service | LOCATION-ID | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Entité de données 2, entrée principale
Nom du service | Emplacement | Ville de l'entrepôt |
---|---|---|
Prestations | 1600 | Denver |
Informatique | 1400 | San Francisco |
Entité de données résultante
Nom du service | Emplacement | Ville de l'entrepôt |
---|---|---|
Prestations | 1600 | Denver |
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.
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.
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
Service | LOCATION-ID | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Entité de données 2
Service | Entrepôt | LOCATION-ID |
---|---|---|
Prestations | Denver | 1600 |
Informatique | San Francisco | 1400 |
Entité de données résultante
Service | LOCATION-ID | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
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
Service | LOCATION-ID | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Entité de données 2, entrée principale
Nom du service | Emplacement | Ville de l'entrepôt |
---|---|---|
Prestations | 1600 | Denver |
Informatique | 1400 | San Francisco |
Entité de données résultante
Nom du service | Emplacement | Ville de l'entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
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.
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 condition | Condition |
---|---|
CONDITION1 | SPLIT_1.BANK.BANK_ID<102 |
CONDITION2 | SPLIT_1.BANK.BANK_ID<104 |
UNMATCHED | La 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_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C Bank 103 |
104 | D Bank 104 |
Sortie de Condition1, première condition de correspondance
CONDITION1 renvoie une ligne correspondante.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
Sortie de Condition2, première condition de correspondance
CONDITION2 renvoie deux lignes correspondantes (provenant des lignes sans correspondance après CONDITION1).
BANK_ID | BANK_NAME |
---|---|
102 | B Bank 102 |
103 | C Bank 103 |
Sortie de condition Sans correspondance, première condition de correspondance
La condition UNMATCHED renvoie la ligne restante.
BANK_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
Sortie de Condition1, toutes les conditions de correspondance
CONDITION1 renvoie une ligne correspondante.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
Sortie de Condition2, toutes les conditions de correspondance
Toutes les données sont évaluées par CONDITION2, renvoyant trois lignes correspondantes.
BANK_ID | BANK_NAME |
---|---|
101 | A Bank 101 |
102 | B Bank 102 |
103 | C 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_ID | BANK_NAME |
---|---|
104 | D Bank 104 |
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.
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 :
Fonction | Description | Exemple |
---|---|---|
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
Oracle applique la fonction de hachage à la combinaison de |
|
Fonction | Description | Exemple |
---|---|---|
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 numeric | CEIL(-1,2) |
FLOOR(numeric) | Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numeric | FLOOR(-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 :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Renvoie la date actuelle. | CURRENT_DATE renvoie 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 Modèles de format de date pris en charge :
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Renvoie le nombre de mois entre 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. |
|
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 : 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 : 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 |
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.
Si Si |
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 '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 |
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 | Description | Exemple |
---|---|---|
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('-', 'Hello', 'Oracle') renvoie Hello-Oracle
Si un enfant de la fonction est un tableau, ce dernier est mis à plat :
|
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('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 Si | 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,
| Exemple de nombre : Exemple de date : |
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+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Renvoie 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 |
AND | Opé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". |
OR | Opé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". |
NOT | Opérateur NOT logique. | |
LIKE | Exé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' |
BETWEEN | Evalue une plage. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Vérifie si une expression correspond à une liste de valeurs. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et déduit le schéma au format DDL. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.
|
|
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_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_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. |
|
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
Fonction | Description | Exemple |
---|---|---|
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 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. |
Le tableau renvoyé est : [1,5,6] |
Vous pouvez modifier n'importe quelle condition de fractionnement, à l'exception de la condition Sans correspondance.
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.
Vous pouvez supprimer n'importe quelle condition de fractionnement, à l'exception de la condition Sans correspondance.
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.
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
STORE | PRODUCT | SALES |
---|---|---|
AB Store | Television | 2 |
AB Store | Television | 4 |
Country-Store | Television | 6 |
Country-Store | Refrigerator | 8 |
E-Store | Coffee maker | 10 |
Sortie de pivot : Regrouper par STORE, Clé de pivot PRODUCT
STORE | TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|---|
AB-Store | 6 | - | - |
Country-Store | 6 | 8 | - |
E-Store | - | - | 10 |
Sortie de pivot : Sans Regrouper par, Clé de pivot PRODUCT
TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|
12 | 8 | 10 |
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.
Des expressions de fonction d'agrégation sont requises pour un opérateur de pivot.
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.
Dans le panneau Ajouter une expression, entrez le nom de l'expression dans le champ Identificateur ou laissez le nom en l'état.
(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
.Sous Attributs source, sélectionnez Modèle, puis Ajouter un modèle.
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.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.- 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é.
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é.
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.
Fonction Description Exemple 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.
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 sourceDISCOUNT_RATE
etDISCOUNT_VALUE
, vous pouvez indiquer une fonction d'agrégation telle queSUM(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 typeVARCHAR
, etMIN
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)
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.
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_ID | CUSTOMER_ID | AMOUNT |
---|---|---|
1 | 101 | 2500 |
2 | 102 | 1110 |
3 | 103 | 500 |
4 | 104 | 400 |
5 | 105 | 150 |
6 | 102 | 450 |
Entité de données 2, source d'entrée de recherche
CUSTOMER_ID | NAME |
---|---|
101 | Peter |
102 | Paul |
106 | Mary |
102 | Pauline |
Sortie de recherche
PAYMENT_ID | CUSTOMER_ID | AMOUNT | CUSTOMER_ID | NAME |
---|---|---|---|---|
1 | 101 | 2500 | 101 | Peter |
2 | 102 | 1110 | 102 | Paul |
3 | 103 | 500 | null | null |
4 | 104 | 400 | null | null |
5 | 105 | 150 | null | null |
6 | 102 | 450 | 102 | Paul |
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.
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 :
Fonction | Description | Exemple |
---|---|---|
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
Oracle applique la fonction de hachage à la combinaison de |
|
Fonction | Description | Exemple |
---|---|---|
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 numeric | CEIL(-1,2) |
FLOOR(numeric) | Renvoie l'entier le plus grand qui n'est pas supérieur à la valeur numeric | FLOOR(-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 :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Renvoie la date actuelle. | CURRENT_DATE renvoie 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 Modèles de format de date pris en charge :
|
|
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. |
|
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,
|
|
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,
|
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 . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Renvoie le nombre de mois entre 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. |
|
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 : 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 : 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 |
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.
Si Si |
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 '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 |
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 | Description | Exemple |
---|---|---|
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('-', 'Hello', 'Oracle') renvoie Hello-Oracle
Si un enfant de la fonction est un tableau, ce dernier est mis à plat :
|
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('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 Si | 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,
| Exemple de nombre : Exemple de date : |
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+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Renvoie 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 |
AND | Opé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". |
OR | Opé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". |
NOT | Opérateur NOT logique. | |
LIKE | Exé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' |
BETWEEN | Evalue une plage. | FILTER_1.BANK.BANK_ID BETWEEN 1003 AND 1007 |
IN | Vérifie si une expression correspond à une liste de valeurs. | FILTER_2.ORDERS.ORDER_ID IN (1003, 1007) |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
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 |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et déduit le schéma au format DDL. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON vers l'un des types suivants, avec le schéma indiqué.
|
|
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_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_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. |
|
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
Fonction | Description | Exemple |
---|---|---|
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 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. |
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.
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.
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âche | Exigence |
---|---|
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 :
Pour limiter les utilisateurs à l'appel d'une fonction spécifique dans un espace de travail :
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 :
|
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.
La fonction à utiliser avec un opérateur de fonction doit être déployée dans une application dans Oracle Cloud Infrastructure Functions.
- Sur le canevas, sélectionnez l'opérateur de fonction.
- Dans l'onglet Détails du panneau Propriétés, pour Fonction OCI, cliquez sur Sélectionner.
- Dans le panneau, sélectionnez le compartiment contenant l'application OCI Functions dans laquelle la fonction à utiliser a été déployée.
- Sélectionnez l'application dans OCI Functions disposant de la fonction déployée.
- Dans la section Fonction OCI, sélectionnez la fonction.
- Sélectionnez OK.
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.
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.
- Sous Propriétés de fonction, sélectionnez Ajouter une propriété.
- 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.
- 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.
- Sélectionnez le type de données de la propriété.
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.
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.
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.
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 (
) à la fin de la ligne.
Vous ne pouvez pas supprimer l'élément de schéma parent.
- Dans le panneau Ajouter une propriété, sélectionnez Ajouter.
- 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.
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
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
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
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 |
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
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.
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.
La procédure suivante suppose que vous avez sélectionné un noeud de tableau à convertir en chaîne, le cas échéant.
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.
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.
Voici la liste des fonctions de table intégrées prises en charge par l'opérateur de fonction de table.
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 :
|
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 etcol2
la deuxième colonne avant la transformation. La première colonne de chaque ligne correspond aux valeurs distinctes decol1
. - 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 |
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 |
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 |
+----------+---+---+---+
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 : |
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è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 :
|
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 |
+---+---+---+
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 |
+---+---+
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 Par exemple, |
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]|
+------------------------+
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 :
Le paramètre |
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 |
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|
+---+--------+----+
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 : Une valeur de remplacement est convertie au type de données de la colonne. Une valeur de remplacement doit être du type suivant :
|
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 |
+---+-------+---+
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 |
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 : La paire clé/valeur de remplacement doit avoir le même type. Seuls les types suivants sont pris en charge :
|
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 |
+----+-------+----+
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. |
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 : |
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 |
+----------+-------+-----------------+--------+
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 : |
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 : |
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 Par exemple, Si aucune fraction n'est spécifiée, zéro est supposé. |
sample_size |
Si |
seed |
Utilisez n'importe quel nombre aléatoire dans |
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|
+---+-----+
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 :
Exemple : |
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 |
+-------+----------+-----+------+----------------+----------------+