Utilisation des opérateurs de flux de données
Dans le service d'intégration de données, les opérateurs de flux de données représentent les sources d'entrée, les cibles de sortie et les transformations qui peuvent être utilisées dans un flux de données.
À partir du panneau Opérateurs, faites glisser des opérateurs sur 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 de 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 avoir un ou plusieurs ports entrants et un ou plusieurs ports sortants pour que les données puissent circuler. Par exemple, vous pouvez connecter le même port sortant source à des ports entrants sur un opérateur Filtrer, Jointure et 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. Alors que le service d'intégration de données prend en charge plusieurs opérateurs Cible dans un flux de données, un opérateur Cible ne peut avoir qu'un seul port entrant.
Pour connecter des opérateurs, survolez le premier avec le pointeur de la souris jusqu'à ce que le symbole de connexion (petit cercle) apparaisse sur son côté droit. Puis faites glisser le connecteur vers l'opérateur suivant auquel vous souhaitez le connecter. La connexion est valide lorsqu'une ligne relie les deux opérateurs.
Une ligne de connexion symbolise la façon dont les données circulent d'un noeud à l'autre. Bien que vous puissiez faire glisser un connecteur visible d'un objet à un autre, vous ne pouvez pas avoir plus d'une ligne de connexion entrante vers un opérateur Filtrer, Expression, agréger, distinct, trier et cible.
Pour les types de données complexes, voir Types de données hiérarchiques pour plus d'informations sur les éléments pris en charge. Il se peut que vous ne puissiez pas effectuer certaines configurations dans les onglets Attributs et Données du panneau Propriétés.
Opérateurs de données
Le service d'intégration de données fournit l'opérateur source et l'opérateur cible pour l'ajout d'entités de données d'entrée et de sortie pour servir d'entrée aux flux de données, et de sortie pour les données transformées.
Pour configurer l'entité de données d'entrée ou de sortie d'un opérateur de données dans un flux de données, vous commencez par sélectionner une ressource de données, une connexion et un schéma (ou un seau).
Les sélections ne sont effectuées que dans l'ordre affiché dans l'onglet Détails du panneau Propriétés, en cliquant sur l'option Sélectionner lorsque l'option est activée à côté 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 la sélection. L'option de sélection du type de ressource suivant, Connexion, n'est activée qu'après que vous avez effectué une sélection pour l'objet précédent.
Lorsque vous cliquez sur Sélectionner à côté d'une ressource, un panneau s'affiche pour vous permettre de sélectionner l'objet souhaité. Vous pouvez utiliser le menu de ressources pour sélectionner l'objet, ou sélectionner Tout voir pour utiliser un autre panneau pour rechercher l'objet, puis le sélectionner.
Lors de la sélection d'un objet de ressource, chaque sélection suivante 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 montre la hiérarchie de sélection. Supposons, par exemple, que vous avez sélectionné la ressource de données "Oracle Database data asset 1" et la connexion "Default connection". Lorsque vous sélectionnez le schéma, le chemin de navigation affiche "À 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 seau), 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é par son nom.
-
Filtrez la liste disponible à rechercher, puis sélectionnez. Dans le champ de recherche, entrez un nom d'entité partiel ou complet et appuyez sur Entrée pour lancer la recherche. La recherche est sensible à la casse. 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é pour sélectionner la ressource d'entrée ou de sortie, voir Utilisation des paramètres dans les noms d'entité de données.
Selon le type de ressource de données d'une ressource, après avoir sélectionné 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 éviter qu'un objet de ressource tel qu'une ressource de données ou une connexion d'un flux de données soit lié en permanence à une ressource particulière, vous affectez un paramètre à cet objet.
Vous pouvez affecter le paramètre après avoir sélectionné l'objet de ressource, ou avant.
-
Dans le flux de données, ajoutez l'opérateur Source ou Cible. Après avoir sélectionné un type de ressource, sélectionnez Affecter un paramètre à côté du nom de la ressource pour utiliser un autre panneau pour sélectionner un paramètre et l'affecter à l'objet sélectionné. Si un type de paramètre approprié n'est pas disponible, vous pouvez ajouter un paramètre, puis l'affecter.
Note
Affecter un paramètre non disponible pour une entité 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. -
Sinon, vous pouvez ajouter l'opérateur Source ou Cible, puis sélectionner Affecter un paramètre afin d'utiliser un panneau pour affecter un paramètre et, en même temps, sélectionner la ressource pour l'objet. Dans le panneau Ajouter un paramètre, sélectionnez une ressource basée sur 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.
Voir aussi Utilisation des paramètres de flux de données.
Vous pouvez inclure un ou plusieurs paramètres de flux de données dans le nom de la ressource d'entité de données que vous spécifiez 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 retourner la table de base de données CUSTOMERS_USA
et BANK_${COUNTRY}/*
peut retourner les fichiers du service de stockage d'objets 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
- Ajouter 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 Voir 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 entrant le nom du paramètre dans le panneau Parcourir les entités de données. Dans le champ de recherche, commencez à entrer ${
suivi de n'importe quel caractère. Si la première partie du nom du paramètre correspond à des paramètres existants dans le flux de données, une liste des noms suggérés s'affiche. Sélectionnez un paramètre dans la liste, remplissez la syntaxe en ajoutant }
, puis appuyez sur Entrée.
Comment ajouter un paramètre lors de la configuration de l'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. Spécifiez le type de données, la valeur par défaut et d'autres propriétés pour le paramètre à ajouter et à utiliser.
-
Dans le champ de recherche, commencez à entrer
${
suivi de n'importe quel caractère. Si la première partie du nom du paramètre correspond à des paramètres existants dans le flux de données, une liste des noms suggérés s'affiche. Sélectionnez un paramètre dans la liste, remplissez 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, le service d'intégration de données affiche le panneau Ajouter un paramètre de flux de données. Sinon, après avoir entré le nom du paramètre, sélectionnez 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, spécifiez le type de données, la valeur par défaut et d'autres propriétés pour le 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ée au flux de données.
Vous pouvez ajouter plusieurs opérateurs Source dans un flux de données.
Si vous utilisez une entité de données hiérarchique pour un opérateur Source, voir Types de données hiérarchiques pour plus d'informations sur les éléments pris en charge. Il se peut que vous ne puissiez pas effectuer certaines configurations dans l'onglet Attributs ou Données du panneau Propriétés.
Lors de la configuration du service de stockage d'objets pour OCI en tant que source de données, vous pouvez utiliser une expression rationnelle pour spécifier un modèle de fichier afin de sélectionner une ou plusieurs entités de données.
Un modèle de fichier est une règle permettant de rechercher les fichiers qui correspondent à un répertoire et à un nom de fichier et de déterminer comment gérer les fichiers trouvés.
Syntaxe à utiliser
Le service d'intégration de données prend en charge la syntaxe de modèle Glob pour spécifier un modèle de fichier.
- Un astérisque,
*
, correspond à un nombre quelconque de caractères (y compris aucun). - Deux astérisques,
**
, fonctionnent de la même manière que*
, mais traversent les limites du répertoire pour correspondre aux chemins complets. - Un point d'interrogation,
?
, correspond exactement à un caractère. - Les accolades indiquent 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 indiquent un jeu de caractères uniques ou, lorsque le trait d'union (
-
) est utilisé, une plage de caractères. Par exemple :[aeiou]
correspond à n'importe quelle voyelle minuscule.[0-9]
correspond à n'importe quel chiffre.[A-Z]
correspond à n'importe quelle lettre majuscule.[a-z,A-Z]
correspond à une lettre majuscule ou minuscule quelconque.
Lorsqu'ils sont à l'intérieur de crochets, les caractères
*
,?
et\
correspondent à eux-mêmes. - Tous les autres caractères correspondent à eux-mêmes.
- Pour mettre en correspondance
*
,?
ou les autres caractères spéciaux, vous pouvez effectuer un échappement à l'aide de la barre oblique inverse,\
. 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 contenant exactement trois lettres ou chiffres |
*[0-9]* | Correspond à toutes les chaînes contenant une valeur numérique |
*.{htm,html,pdf} | Correspond à toute chaîne se terminant par .htm , .html ou .pdf |
a?*.java | Correspond à toute chaîne commençant par la lettre a , suivie d'au moins une lettre ou un chiffre, et se terminant par .java |
{foo*,*[0-9]*} | Correspond à toute chaîne commençant par foo ou à toute chaîne contenant une valeur numérique |
directory1/20200209/part-*[0-9]*json | Correspond à tous les fichiers du dossier dont le nom commence par part- , comporte un nombre quelconque de chiffres 0-9 et se termine par json |
directory3/**.csv | Correspond à tous les fichiers avec une extension de csv qui se trouvent dans le dossier directory3 et ses sous-dossiers |
directory3/*.csv | Correspond à tous les fichiers ayant une extension csv qui ne se trouvent que dans le dossier principal directory3 . Les fichiers dans les sous-dossiers ne sont pas inclus. |
Vous pouvez tester l'expression pour vérifier que le modèle à utiliser extrait les fichiers de stockage d'objets pour une ou plusieurs entités de données.
-
Dans le panneau Select data entity (Sélectionner une entité de données), sélectionnez Browse by pattern (Parcourir par modèle).
-
Dans le panneau Rechercher des 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 Modèle de recherche, entrez une expression de modèle à tester avant de l'utiliser.
Par exemple, entrez
department1/2020/*.json
pour rechercher tous les fichiers ayant l'extension.json
dans le 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 Tester les noms de fichier, fournissez un nom de fichier ou plusieurs noms de fichier délimité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 retournés dans le bloc Nom du fichier obtenu.
-
Sélectionnez Utiliser le modèle pour ajouter l'expression de modèle au panneau Parcourir les entités de données par modèle.
Vous retournez au panneau Parcourir les entités de données par modèle. Les fichiers correspondant à l'expression de modèle sont affichés dans le tableau.
-
Cliquez sur Sélectionner un modèle.
Vous retournez au panneau Sélectionner une entité de données. L'expression de modèle s'affiche à côté de Data entity.
Lorsque vous utilisez une expression de modèle, tous les fichiers existants qui correspondent au modèle sont censés avoir la même structure. Les fichiers correspondants sont traités comme une seule entité dans le flux de données. Tous les futurs nouveaux fichiers correspondant au modèle seront également traités.
Le chargement incrémentiel charge uniquement les données nouvelles ou mises à jour d'une source dans une cible. Dans le service d'intégration de données, lorsque vous configurez BICC Oracle Fusion Applications en tant que données sources, 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. Le service d'intégration de données offre deux options de date de dernière extraction :
-
Personnalisé : Vous indiquez une date de dernière extraction pour chaque exécution de tâche.
-
Géré : Le service d'intégration de données gère la date pour vous en suivant l'horodatage de l'exécution de la tâche et en stockant la date du dernier chargement réussi en tant que filigrane pour les exécutions consécutives.
Avec l'option de date de dernière extraction gérée par le service d'intégration de données, vous n'avez pas besoin de spécifier explicitement une date pour une exécution de tâche. Vous pouvez toutefois remplacer la date au moment de l'exécution.
Exécutions de tâche lancées par un programme de tâche
Le service d'intégration de données effectue le suivi d'une exécution de tâche indépendamment d'une exécution de tâche lancée par un programme de tâche. Ainsi, si vous utilisez l'option Géré pour la dernière date d'extraction et que vous configurez également un programme de tâche, le service d'intégration de données conserve automatiquement l'horodatage de la dernière exécution de tâche réussie des exécutions programmé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 un programme de tâche. Cela signifie que la dernière date gérée dans un programme 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 pour différentes entités de données dans un flux de données
Supposons que vous souhaitiez configurer le chargement incrémentiel pour différentes entités de données dans un flux de données. Pour ce faire, vous pouvez utiliser des paramètres et créer un programme de tâche pour chaque entité de données. Les étapes générales sont les suivantes :
- Dans le flux de données, affectez des paramètres au schéma source (offre BICC) et à l'entité de données (objet de vue BICC).
- Créer et publier une tâche d'intégration pour le flux de données paramétré.
- Créez un programme de tâche pour la tâche d'intégration. Dans la page Configurer les paramètres, spécifiez les valeurs de schéma et d'entité de données pour le programme de tâche.
- Créez un autre programme de tâche pour la même tâche d'intégration. Dans la page Configurer les paramètres, définissez les valeurs de schéma et d'entité de données pour ce programme de tâche.
Chargement incrémentiel plusieurs fois en 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 de 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 sortie pour stocker les données transformées.
Vous pouvez ajouter plusieurs opérateurs Cible à un flux de données. Chaque cible ne peut avoir qu'un seul port entrant.
Si vous utilisez une entité de données hiérarchique pour un opérateur Cible, voir Types de données hiérarchiques pour plus d'informations sur les éléments pris en charge. Il se peut que vous ne puissiez pas effectuer certaines configurations dans les onglets Attributs, Mappage 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 dans le flux de données.
Si vous utilisez une entité de données hiérarchique pour un opérateur Cible, voir Types de données hiérarchiques pour plus d'informations sur les éléments pris en charge.
Vous pouvez filtrer les données de l'entité cible par modèle de nom ou type de données. Pour filtrer les données par modèle de nom, entrez un modèle regex simple ou les 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 à côté du champ de modèle.
Les transformations ne peuvent pas être appliquées à l'opérateur Cible, car les données sont en lecture seule.
L'onglet Mappage est disponible uniquement pour un opérateur Cible.
Si vous utilisez une entité de données hiérarchique pour un opérateur Cible, voir Types de données hiérarchiques pour plus d'informations sur les éléments pris en charge.
Lorsque vous créez une entité de données cible, l'onglet Mappe n'est pas disponible. Les attributs entrants sont utilisés pour créer la table ou la structure de fichiers avec un mappage 1-à-1.
Lors de l'utilisation d'une entité de données cible existante, mappez les attributs entrants aux attributs de cette dernière. Les actions que vous pouvez effectuer sont les suivantes :
Mappe les attributs entrants aux attributs de l'entité cible en fonction de leur position dans les listes.
Dans le menu Actions, sélectionnez Mapper automatiquement par position. La règle de mappage automatique par position est ajoutée.
Mappe les attributs entrants aux attributs cibles ayant le même nom.
Dans le menu Actions, sélectionnez Mapper automatiquement par nom. La règle de mappage automatique par nom est ajoutée.
Mappe les attributs entrants aux attributs cibles en fonction de règles regex simples définies par l'utilisateur.
Dans le menu Actions, sélectionnez Mapper par modèle. Entrez un modèle source et un modèle cible. Sélectionnez ensuite le mappage Prévisualiser pour tester les modèles source et cible.
Pour définir un modèle, vous pouvez utiliser des symboles d'astérisque (*) et de point d'interrogation (?). Utilisez un astérisque comme caractère générique contenant 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?
mappe tout attribut correspondant commençant par un nombre n et 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 cible CUSTOMER_NAME
et Customer_Name
.
Pour indiquer différents groupes de saisie, utilisez $n
. Supposons, par exemple, que vous voulez mapper respectivement LAST_NAME
, FIRST_NAME
et USERNAME
d'un opérateur source ou amont à TGT_LAST_NAME
, TGT_FIRST_NAME
et TGT_USERNAME
dans l'entité de données cible. Vous entrez *NAME
dans le champ Plan source et TGT_$1
dans le champ Plan cible. L' astérisque (*) dans *NAME
signifie que la chaîne de caractères précédant NAME
doit être identique à la chaîne de caractères trouvée dans $1
du modèle cible. $1
fait référence au premier groupe de saisie dans le modèle source, qui dans ce cas est l' astérisque (*).
Dans les cas où vous avez besoin d'une mise en correspondance de modèle sensible à la casse, ajoutez le préfixe (?c)
au modèle source. Par exemple, supposons que vous souhaitiez mapper l'attribut source CustomerName
, qui utilise la majuscule camel dans son nom, à l'attribut cible portant le nom Customer_Name
. Vous devez entrer (?c)([A-Z][a-z]+)([A-Z][a-z]+)
comme modèle source et $1_$2
comme modèle cible. Lorsque le préfixe (?c)
est ajouté au début d'un modèle source, la mise en correspondance de modèle sensible à la casse est activée pour le mappage. Le service d'intégration de données 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 afin de créer un mappage.
Vous pouvez également sélectionner Mappage manuel dans le menu Actions. Utilisez ensuite la boîte de dialogue Mapper un attribut pour créer un mappage en sélectionnant un attribut source et un attribut cible.
Supprime le mappage sélectionné.
Sélectionner des règles d'affichage. Dans le panneau Règles, sélectionnez une ou plusieurs règles et sélectionnez Supprimer. Vous pouvez également sélectionner Supprimer dans le menu Actions () de la règle pour effacer cette règle.
Supprime tous les mappages.
From the Actions menu, select Reset mappings. Toutes les règles de mappage manuel et automatique sont supprimées.
Opérateurs de mise en forme
Pour les types de données complexes, voir Types de données hiérarchiques pour plus d'informations sur les éléments pris en charge. Il se peut que vous ne puissiez pas effectuer certaines configurations dans les onglets Attributs et Données du panneau Propriétés.
Opérateur Filtrer
Utilisez l'opérateur Filtrer pour sélectionner un sous-ensemble des données entre le port entrant et le port sortant en fonction d'une condition de filtre.
Utilisez le générateur de conditions pour sélectionner visuellement les éléments formant la condition de filtre. Vous pouvez également entrer manuellement une condition de filtre dans l'éditeur.
La création d'une condition de filtre permet de sélectionner un sous-ensemble des données à partir d'un opérateur en amont en fonction de cette condition.
Les éléments que vous pouvez utiliser dans une condition de filtre comprennent notamment les attributs entrants, les paramètres et les fonctions. Vous pouvez double-cliquer ou faire glisser un élément de la liste à ajouter à l'éditeur pour créer une condition. Vous pouvez valider la condition avant de la créer.
La zone Entrant affiche les attributs de l'opérateur amont qui entrent dans cet opérateur Filtre.
Par exemple, pour filtrer les données par nom de ville, vous pouvez créer l'expression de condition suivante :
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 conditions (opérateurs Filtrer, joindre, consulter et fractionner) ou du générateur d'expressions (opérateurs Expression et agréger). Un paramètre d'expression a un nom, un type et une valeur par défaut. Voir Ajout d'un paramètre d'expression.
Supposons que vous vouliez 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 à Redwood Shores
. Vous pouvez ensuite créer la condition de filtre ainsi :
FILTER_1.ADDRESSES.CITY=$P_VARCHAR_CITY
Les fonctions sont les fonctions disponibles dans le service d'intégration de données que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur des arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir d'arguments.
Par exemple, pour filtrer les données par nom de ville ou par population, vous pouvez utiliser la fonction OR
pour créer l'expression de condition de filtre de l'une des façons suivantes :
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 une liste de fonctions que vous pouvez ajouter lors de la création de conditions :
Fonction | Description | Exemple |
---|---|---|
MD5(all data types) | Calcule un total de contrôle MD5 pour le type de données et retourne une valeur de chaîne. | MD5(column_name) |
SHA1(all data types) | Calcule une valeur de hachage SHA-1 pour le type de données et retourne une valeur de chaîne. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcule une valeur de hachage SHA-2 pour le type de données et retourne une valeur de chaîne. bitLength est un nombre entier. | SHA2 (column_name, bitLength peut être réglé à 0 (équivaut à 256), 256, 384 ou 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) | Retourne la valeur absolue de la valeur numeric . | ABS(-1) |
CEIL(numeric) | Retourne le plus petit entier ne dépassant pas la valeur numeric | CEIL(-1,2) |
FLOOR(numeric) | Retourne le plus grand nombre entier ne dépassant pas la valeur numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Retourne le reste après la division de numeric1 par numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Élève numeric1 à la puissance numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Retourne la valeur numeric1 arrondie à numeric2 décimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Retourne la valeur numeric1 tronquée à numeric2 décimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convertit une expression expr en nombre, en fonction du format et des paramètres régionaux (locale ) facultatifs fournis. Les paramètres régionaux par défaut sont en-US . Marqueurs de langue pris en charge.Modèles de format pris en charge :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Retourne la date courante. | CURRENT_DATE retourne la date du jour, par exemple 2023-05-26 |
CURRENT_TIMESTAMP |
Retourne la date et l'heure courantes pour le fuseau horaire de la session. | CURRENT_TIMESTAMP retourne la date du jour et l'heure courante, par exemple 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Retourne la date correspondant au number de jours spécifié après la date spécifiée. |
DATE_ADD('2017-07-30', 1) retourne 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formate une expression Modèles de format de date pris en charge :
|
|
DAYOFMONTH(date) |
Retourne le jour du mois dans la date indiquée. | DAYOFMONTH('2020-12-25') retourne 25 |
DAYOFWEEK(date) |
Retourne le jour de la semaine dans la date indiquée. | DAYOFWEEK('2020-12-25') retourne 6 pour vendredi. Aux États-Unis, le dimanche est considéré comme 1, le lundi est 2, et ainsi de suite. |
DAYOFYEAR(date) |
Retourne le jour de l'année dans la date indiquée. | DAYOFYEAR('2020-12-25') retourne 360 |
WEEKOFYEAR(date) |
Retourne la semaine de la date dans l'année. |
|
HOUR(datetime) |
Retourne la valeur d'heure de date/heure. | HOUR('2020-12-25 15:10:30') retourne 15 |
LAST_DAY(date) |
Retourne le dernier jour du mois de la date indiquée. | LAST_DAY ('2020-12-25') retourne 31 |
MINUTE(datetime) |
Retourne la valeur des minutes de date/heure. | HOUR('2020-12-25 15:10:30') retourne 10 |
MONTH(date) |
Retourne la valeur du mois de la date indiquée. | MONTH ('2020-06-25') retourne 6 |
QUARTER(date) |
Retourne le trimestre de l'année de la date indiquée. | QUARTER('2020-12-25') retourne 4 |
SECOND(datetime) |
Retourne la valeur des secondes de date/heure. | SECOND('2020-12-25 15:10:30') retourne 30 |
TO_DATE(string, format_string[, localeStr]) |
Analyse l'expression de chaîne en considérant l'expression format_string comme une date. Les paramètres régionaux sont facultatifs. La valeur par défaut est en-US . Marqueurs de langue pris en charge.Dans les expressions de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convertit une expr de type VARCHAR en une valeur de type TIMESTAMP, en fonction de format_string et de localeStr (facultatif).Dans les expressions de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retourne un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Retourne la valeur de semaine de la date indiquée. |
WEEK('2020-06-25') retourne 4 |
YEAR(date) |
Retourne la valeur d'année de la date indiquée. | YEAR('2020-06-25') retourne 2020 |
ADD_MONTHS(date_expr, number_months) |
Retourne la date après l'ajout du nombre de mois spécifié à la date, la chaîne ou l'horodatage spécifié dans un format de type yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retourne le nombre de mois entre Un nombre entier est retourné si les deux dates correspondent au même jour du mois, ou au dernier jour de leur mois respectif. 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 tant que temps UTC et le convertit en horodatage dans le fuseau horaire spécifié. Pour une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 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 une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convertit l'heure ou l'heure de référence Unix spécifiée en chaîne qui représente l'horodatage de ce moment dans le fuseau horaire du système courant et dans le format spécifié. Note : L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:000000 UTC. Si |
Le fuseau horaire par défaut est PST dans les exemples |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convertit l'heure courante 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Retourne 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '100-5' YEAR(3) TO MONTH retourne un intervalle de 100 ans et 5 mois. Vous devez spécifier 3 en tant que valeur de précision de l'année de début. |
INTERVAL 'month' MONTH[(month_precision)] |
Retourne une période en mois. month_precision est le nombre de chiffres dans le champ mois; il est compris entre 0 et 9. Si month_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '200' MONTH(3) retourne un intervalle de 200 mois. Vous devez spécifier 3 en tant que valeur de précision du mois. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de jours, heures, minutes et secondes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 11 jours, 10 heures, 09 minutes, 08 secondes et 555 millièmes de seconde |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme de jours, heures et minutes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '11 10:09' DAY TO MINUTE retourne un intervalle de 11 jours, 10 heures et 09 minutes |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Retourne une période sous forme de jours et d'heures. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '100 10' DAY(3) TO HOUR retourne un intervalle de 100 jours et 10 heures |
INTERVAL 'day' DAY[(day_precision)] |
Retourne une période sous forme de jours. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. |
INTERVAL '999' DAY(3) retourne un intervalle de 999 jours |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme d'heures, minutes et secondes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 9 heures, 08 minutes et 7,6666666 secondes |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme d'heures et de minutes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '09:30' HOUR TO MINUTE retourne un intervalle de 9 heures et 30 minutes |
INTERVAL 'hour' HOUR[(hour_precision)] |
Retourne une période sous forme d'heures. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '40' HOUR retourne un intervalle de 40 heures |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Retourne une période sous forme de minutes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '15' MINUTE retourne un intervalle de 15 minutes |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de minutes et secondes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire de la deuxième valeur du champ time; il est compris entre 0 et 9. |
INTERVAL '15:30' MINUTE TO SECOND retourne un intervalle de 15 minutes et 30 secondes |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de secondes. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire du champ second; il est compris entre 0 et 9. La valeur par défaut est 3. |
INTERVAL '15.678' SECOND retourne un intervalle de 15,678 secondes |
Fonction | Description | Exemple |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Retourne la valeur évaluée à la rangée qui est la première rangée 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) retourne la première valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné avant la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retourne la valeur de BANK_ID de la deuxième rangée avant la rangée courante, avec un partitionnement par BANK_ID et en ordre décroissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Retourne la valeur évaluée à la rangée qui est la dernière rangée 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) retourne la dernière valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné après la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne la valeur de BANK_ID de la deuxième rangée après la rangée courante, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
RANK() OVER([ partition_clause ] order_by_clause) |
Retourne le rang de la rangée courante avec les écarts, en comptant à partir de 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le rang de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Retourne le numéro unique de la rangée courante dans sa partition, en comptant à partir de 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le numéro unique de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
Fonctions | Description | Exemple |
---|---|---|
CAST(value AS type) | Retourne la valeur indiquée dans le type indiqué. | CAST("10" AS INT) retourne 10 |
CONCAT(string, string) | Retourne les valeurs combinées des chaînes ou des colonnes. | CONCAT('Oracle','SQL') retourne OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Retourne les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur spécifié 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') retourne Hello-Oracle
Si un enfant de la fonction est un tableau, le tableau est aplati :
|
INITCAP(string) | Retourne la chaîne avec une majuscule à la première lettre de chaque mot, tandis que toutes les autres lettres sont en minuscules, et chaque mot est délimité par une espace. | INITCAP('oRACLE sql') retourne Oracle Sql |
INSTR(string, substring[start_position]) | Retourne l'index (à partir de 1) de la première occurrence de la sous-chaîne (substring ) dans la chaîne string . | INSTR('OracleSQL', 'SQL') retourne 7 |
LOWER(string) | Retourne la chaîne avec toutes les lettres en minuscules. | LOWER('ORACLE') retourne oracle |
LENGTH(string) | Retourne la longueur de la chaîne en nombre de caractères ou le nombre d'octets dans le cas de données binaires. La longueur de la chaîne comprend les espaces de fin. | LENGTH('Oracle') retourne 6 |
LTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la gauche. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Retourne l'argument qui n'est pas vide. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Recherche et extrait de la chaîne d'entrée la chaîne qui correspond à un modèle d'expression rationnelle. Si l'index de groupe de saisie facultatif est fourni, la fonction extrait le groupe particulier. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retourne 22 |
REPLACE(string, search, replacement) | Remplace toutes les occurrences de la chaîne recherchée search par la chaîne de remplacement replacement .Si Si la chaîne de remplacement | REPLACE('ABCabc', 'abc', 'DEF') retourne ABCDEF |
RTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la droite. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Retourne la sous-chaîne à partir de la position indiquée. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) retourne rac |
Pour les chiffres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale]) | Convertit les nombres et les 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. Les paramètres régionaux par défaut sont en-US . Voir les étiquettes de langue prises en charge.Dans les expressions de pipeline,
| Exemple de nombre : Exemple de date : |
UPPER(string) | Retourne une chaîne avec toutes les lettres en majuscules. | UPPER('oracle') retourne ORACLE |
LPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | LPAD('ABC', 5, '*') retourne '**ABC' |
RPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retourne la valeur pour laquelle une condition est satisfaite. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retourne ABC si 1> 0 , sinon retourne XYZ |
AND | Opérateur logique AND. Retourne Vrai si les deux opérandes sont vrais, sinon retourne Faux. | (x = 10 AND y = 20) retourne "Vrai" si x est égal à 10 et y égal à 20. Si l'un ou l'autre n'est pas vrai, alors "Faux" est retourné |
OR | Opérateur logique OR. Retourne Vrai si l'un ou l'autre opérande est vrai ou si les deux sont vrais, sinon retourne Faux. | (x = 10 OR y = 20) retourne "Faux" si x n'est pas égal à 10 et y n'est pas égal à 20. Si l'un ou l'autre est vrai, alors "Vrai" est retourné |
NOT | Opérateur logique NOT. | |
LIKE | Met en correspondance des modèles de chaîne, si string1 correspond au modèle dans string2. | |
= | Teste l'égalité. Retourne Vrai si expr1 est égal à expr2, sinon retourne Faux. | x = 10 retourne "Vrai" lorsque la valeur de x est 10, sinon "Faux" est retourné |
!= | Teste l'inégalité. Retourne Vrai si expr1 n'est pas égal à expr2, sinon retourne Faux. | x != 10 retourne "Faux" si la valeur de x est 10, sinon "Vrai" est retourné |
> | Teste si une expression est supérieure. Retourne Vrai si expr1 est supérieur à expr2. | x > 10 retourne "Vrai" si la valeur de x est supérieure à 10, sinon "Faux" est retourné |
>= | Teste si une expression est supérieure ou égale. Retourne Vrai si expr1 est supérieur ou égal à expr2. | x > =10 retourne "Vrai" si la valeur de x est supérieure ou égale à 10, sinon "Faux" est retourné |
< | Teste si une expression est inférieure. Retourne Vrai si expr1 est inférieur à expr2. | x < 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
<= | Teste si une expression est inférieure ou égale. Retourne Vrai si expr1 est inférieur ou égal à expr2. | x <= 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
|| | Concatène deux chaînes. | 'XYZ' || 'hello' retourne 'XYZhello' |
BETWEEN | Évalue un intervalle. | 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 pour chaque rangée un identificateur universel unique qui est un numéro 64 bits. | NUMERIC_ID() retourne, par exemple, 3458761969522180096 et 3458762008176885761 |
ROWID() | Génère des nombres monotones croissants de 64 bits. | ROWID() retourne par exemple 0 , 1 , 2 et ainsi de suite |
UUID() | Génère pour chaque rangée un identifiant universel unique qui est une chaîne de 128 bits. | UUID() retourne par exemple 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Génère des entiers uniques monotones croissants de 64 bits, qui ne sont pas des nombres consécutifs. | MONOTONICALLY_INCREASING_ID() retourne, par exemple, 8589934592 et 25769803776 |
Fonction | Description | Exemple |
---|---|---|
COALESCE(value, value [, value]*) | Retourne le premier argument non nul, s'il existe, sinon retourne une valeur nulle. | COALESCE(NULL, 1, NULL) retourne 1 |
NULLIF(value, value) | Retourne une valeur nulle si les deux valeurs sont égales, sinon retourne la première valeur. | NULLIF('ABC','XYZ') retourne ABC |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et en tire le schéma au format LDD. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON dans l'un des types suivants, avec le schéma spécifié.
|
|
TO_JSON(column) | Convertit une colonne contenant le type Struct ou Array of Structs, ou Map ou Array of Maps, en chaîne JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retourne 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 nulles et elles doivent toutes avoir le même type de données. Les colonnes de valeur d'entrée doivent toutes avoir 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 avoir 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 :
-
Regrouper
-
Expression
-
Filtre
-
Jointure
-
Consulter
-
Split
-
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 de nombres entiers [1, 2, 3] , TRANSFORM(array, x -> x + 1) retourne 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 retourne 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 mappage de colonne. | Pour un mappage 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) retourne un nouveau mappage 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 retourne 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 carte de colonne. | Pour un mappage 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) retourne un nouveau mappage de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Seul l'opérateur Expression prend en charge Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments. La fonction doit retourner -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au deuxième élément. Si la fonction est omise, le tableau est trié dans l'ordre croissant. |
Le tableau retourné est le suivant : [1,5,6] |
Opérateur Jointure
Utilisez l'opérateur Jointure pour relier les données de plusieurs sources entrantes.
Utilisez le générateur de conditions pour sélectionner visuellement les éléments formant la condition de jointure. Vous pouvez également entrer manuellement une condition de jointure dans l'éditeur.
La création d'une condition de jointure permet de sélectionner des données à partir de deux sources entrantes en fonction de la condition.
Les éléments que vous pouvez utiliser dans une condition de jointure comprennent notamment les attributs entrants, les paramètres et les fonctions. Vous pouvez double-cliquer ou faire glisser un élément de la liste à ajouter à l'éditeur pour créer une condition. Vous pouvez valider la condition avant de la créer.
Entrante affiche les attributs des ports amont connectés à l'opérateur Jointure dans deux dossiers JOIN distincts. Consultez 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 conditions (opérateurs Filtrer, joindre, consulter et fractionner) ou du générateur d'expressions (opérateurs Expression et agréger). Un paramètre d'expression a un nom, un type et une valeur par défaut. Voir Ajout d'un paramètre d'expression.
Supposons que vous vouliez joindre deux sources et conserver uniquement les rangées où 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 à ABC BANK
. Ensuite, vous pouvez 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 le service d'intégration de données que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur des arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir d'arguments.
Voici une liste de fonctions que vous pouvez ajouter lors de la création de conditions :
Fonction | Description | Exemple |
---|---|---|
MD5(all data types) | Calcule un total de contrôle MD5 pour le type de données et retourne une valeur de chaîne. | MD5(column_name) |
SHA1(all data types) | Calcule une valeur de hachage SHA-1 pour le type de données et retourne une valeur de chaîne. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcule une valeur de hachage SHA-2 pour le type de données et retourne une valeur de chaîne. bitLength est un nombre entier. | SHA2 (column_name, bitLength peut être réglé à 0 (équivaut à 256), 256, 384 ou 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) | Retourne la valeur absolue de la valeur numeric . | ABS(-1) |
CEIL(numeric) | Retourne le plus petit entier ne dépassant pas la valeur numeric | CEIL(-1,2) |
FLOOR(numeric) | Retourne le plus grand nombre entier ne dépassant pas la valeur numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Retourne le reste après la division de numeric1 par numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Élève numeric1 à la puissance numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Retourne la valeur numeric1 arrondie à numeric2 décimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Retourne la valeur numeric1 tronquée à numeric2 décimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convertit une expression expr en nombre, en fonction du format et des paramètres régionaux (locale ) facultatifs fournis. Les paramètres régionaux par défaut sont en-US . Marqueurs de langue pris en charge.Modèles de format pris en charge :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Retourne la date courante. | CURRENT_DATE retourne la date du jour, par exemple 2023-05-26 |
CURRENT_TIMESTAMP |
Retourne la date et l'heure courantes pour le fuseau horaire de la session. | CURRENT_TIMESTAMP retourne la date du jour et l'heure courante, par exemple 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Retourne la date correspondant au number de jours spécifié après la date spécifiée. |
DATE_ADD('2017-07-30', 1) retourne 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formate une expression Modèles de format de date pris en charge :
|
|
DAYOFMONTH(date) |
Retourne le jour du mois dans la date indiquée. | DAYOFMONTH('2020-12-25') retourne 25 |
DAYOFWEEK(date) |
Retourne le jour de la semaine dans la date indiquée. | DAYOFWEEK('2020-12-25') retourne 6 pour vendredi. Aux États-Unis, le dimanche est considéré comme 1, le lundi est 2, et ainsi de suite. |
DAYOFYEAR(date) |
Retourne le jour de l'année dans la date indiquée. | DAYOFYEAR('2020-12-25') retourne 360 |
WEEKOFYEAR(date) |
Retourne la semaine de la date dans l'année. |
|
HOUR(datetime) |
Retourne la valeur d'heure de date/heure. | HOUR('2020-12-25 15:10:30') retourne 15 |
LAST_DAY(date) |
Retourne le dernier jour du mois de la date indiquée. | LAST_DAY ('2020-12-25') retourne 31 |
MINUTE(datetime) |
Retourne la valeur des minutes de date/heure. | HOUR('2020-12-25 15:10:30') retourne 10 |
MONTH(date) |
Retourne la valeur du mois de la date indiquée. | MONTH ('2020-06-25') retourne 6 |
QUARTER(date) |
Retourne le trimestre de l'année de la date indiquée. | QUARTER('2020-12-25') retourne 4 |
SECOND(datetime) |
Retourne la valeur des secondes de date/heure. | SECOND('2020-12-25 15:10:30') retourne 30 |
TO_DATE(string, format_string[, localeStr]) |
Analyse l'expression de chaîne en considérant l'expression format_string comme une date. Les paramètres régionaux sont facultatifs. La valeur par défaut est en-US . Marqueurs de langue pris en charge.Dans les expressions de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convertit une expr de type VARCHAR en une valeur de type TIMESTAMP, en fonction de format_string et de localeStr (facultatif).Dans les expressions de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retourne un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Retourne la valeur de semaine de la date indiquée. |
WEEK('2020-06-25') retourne 4 |
YEAR(date) |
Retourne la valeur d'année de la date indiquée. | YEAR('2020-06-25') retourne 2020 |
ADD_MONTHS(date_expr, number_months) |
Retourne la date après l'ajout du nombre de mois spécifié à la date, la chaîne ou l'horodatage spécifié dans un format de type yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retourne le nombre de mois entre Un nombre entier est retourné si les deux dates correspondent au même jour du mois, ou au dernier jour de leur mois respectif. 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 tant que temps UTC et le convertit en horodatage dans le fuseau horaire spécifié. Pour une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 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 une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convertit l'heure ou l'heure de référence Unix spécifiée en chaîne qui représente l'horodatage de ce moment dans le fuseau horaire du système courant et dans le format spécifié. Note : L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:000000 UTC. Si |
Le fuseau horaire par défaut est PST dans les exemples |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convertit l'heure courante 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Retourne 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '100-5' YEAR(3) TO MONTH retourne un intervalle de 100 ans et 5 mois. Vous devez spécifier 3 en tant que valeur de précision de l'année de début. |
INTERVAL 'month' MONTH[(month_precision)] |
Retourne une période en mois. month_precision est le nombre de chiffres dans le champ mois; il est compris entre 0 et 9. Si month_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '200' MONTH(3) retourne un intervalle de 200 mois. Vous devez spécifier 3 en tant que valeur de précision du mois. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de jours, heures, minutes et secondes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 11 jours, 10 heures, 09 minutes, 08 secondes et 555 millièmes de seconde |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme de jours, heures et minutes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '11 10:09' DAY TO MINUTE retourne un intervalle de 11 jours, 10 heures et 09 minutes |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Retourne une période sous forme de jours et d'heures. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '100 10' DAY(3) TO HOUR retourne un intervalle de 100 jours et 10 heures |
INTERVAL 'day' DAY[(day_precision)] |
Retourne une période sous forme de jours. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. |
INTERVAL '999' DAY(3) retourne un intervalle de 999 jours |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme d'heures, minutes et secondes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 9 heures, 08 minutes et 7,6666666 secondes |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme d'heures et de minutes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '09:30' HOUR TO MINUTE retourne un intervalle de 9 heures et 30 minutes |
INTERVAL 'hour' HOUR[(hour_precision)] |
Retourne une période sous forme d'heures. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '40' HOUR retourne un intervalle de 40 heures |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Retourne une période sous forme de minutes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '15' MINUTE retourne un intervalle de 15 minutes |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de minutes et secondes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire de la deuxième valeur du champ time; il est compris entre 0 et 9. |
INTERVAL '15:30' MINUTE TO SECOND retourne un intervalle de 15 minutes et 30 secondes |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de secondes. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire du champ second; il est compris entre 0 et 9. La valeur par défaut est 3. |
INTERVAL '15.678' SECOND retourne un intervalle de 15,678 secondes |
Fonction | Description | Exemple |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Retourne la valeur évaluée à la rangée qui est la première rangée 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) retourne la première valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné avant la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retourne la valeur de BANK_ID de la deuxième rangée avant la rangée courante, avec un partitionnement par BANK_ID et en ordre décroissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Retourne la valeur évaluée à la rangée qui est la dernière rangée 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) retourne la dernière valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné après la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne la valeur de BANK_ID de la deuxième rangée après la rangée courante, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
RANK() OVER([ partition_clause ] order_by_clause) |
Retourne le rang de la rangée courante avec les écarts, en comptant à partir de 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le rang de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Retourne le numéro unique de la rangée courante dans sa partition, en comptant à partir de 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le numéro unique de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
Fonctions | Description | Exemple |
---|---|---|
CAST(value AS type) | Retourne la valeur indiquée dans le type indiqué. | CAST("10" AS INT) retourne 10 |
CONCAT(string, string) | Retourne les valeurs combinées des chaînes ou des colonnes. | CONCAT('Oracle','SQL') retourne OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Retourne les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur spécifié 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') retourne Hello-Oracle
Si un enfant de la fonction est un tableau, le tableau est aplati :
|
INITCAP(string) | Retourne la chaîne avec une majuscule à la première lettre de chaque mot, tandis que toutes les autres lettres sont en minuscules, et chaque mot est délimité par une espace. | INITCAP('oRACLE sql') retourne Oracle Sql |
INSTR(string, substring[start_position]) | Retourne l'index (à partir de 1) de la première occurrence de la sous-chaîne (substring ) dans la chaîne string . | INSTR('OracleSQL', 'SQL') retourne 7 |
LOWER(string) | Retourne la chaîne avec toutes les lettres en minuscules. | LOWER('ORACLE') retourne oracle |
LENGTH(string) | Retourne la longueur de la chaîne en nombre de caractères ou le nombre d'octets dans le cas de données binaires. La longueur de la chaîne comprend les espaces de fin. | LENGTH('Oracle') retourne 6 |
LTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la gauche. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Retourne l'argument qui n'est pas vide. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Recherche et extrait de la chaîne d'entrée la chaîne qui correspond à un modèle d'expression rationnelle. Si l'index de groupe de saisie facultatif est fourni, la fonction extrait le groupe particulier. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retourne 22 |
REPLACE(string, search, replacement) | Remplace toutes les occurrences de la chaîne recherchée search par la chaîne de remplacement replacement .Si Si la chaîne de remplacement | REPLACE('ABCabc', 'abc', 'DEF') retourne ABCDEF |
RTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la droite. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Retourne la sous-chaîne à partir de la position indiquée. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) retourne rac |
Pour les chiffres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale]) | Convertit les nombres et les 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. Les paramètres régionaux par défaut sont en-US . Voir les étiquettes de langue prises en charge.Dans les expressions de pipeline,
| Exemple de nombre : Exemple de date : |
UPPER(string) | Retourne une chaîne avec toutes les lettres en majuscules. | UPPER('oracle') retourne ORACLE |
LPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | LPAD('ABC', 5, '*') retourne '**ABC' |
RPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retourne la valeur pour laquelle une condition est satisfaite. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retourne ABC si 1> 0 , sinon retourne XYZ |
AND | Opérateur logique AND. Retourne Vrai si les deux opérandes sont vrais, sinon retourne Faux. | (x = 10 AND y = 20) retourne "Vrai" si x est égal à 10 et y égal à 20. Si l'un ou l'autre n'est pas vrai, alors "Faux" est retourné |
OR | Opérateur logique OR. Retourne Vrai si l'un ou l'autre opérande est vrai ou si les deux sont vrais, sinon retourne Faux. | (x = 10 OR y = 20) retourne "Faux" si x n'est pas égal à 10 et y n'est pas égal à 20. Si l'un ou l'autre est vrai, alors "Vrai" est retourné |
NOT | Opérateur logique NOT. | |
LIKE | Met en correspondance des modèles de chaîne, si string1 correspond au modèle dans string2. | |
= | Teste l'égalité. Retourne Vrai si expr1 est égal à expr2, sinon retourne Faux. | x = 10 retourne "Vrai" lorsque la valeur de x est 10, sinon "Faux" est retourné |
!= | Teste l'inégalité. Retourne Vrai si expr1 n'est pas égal à expr2, sinon retourne Faux. | x != 10 retourne "Faux" si la valeur de x est 10, sinon "Vrai" est retourné |
> | Teste si une expression est supérieure. Retourne Vrai si expr1 est supérieur à expr2. | x > 10 retourne "Vrai" si la valeur de x est supérieure à 10, sinon "Faux" est retourné |
>= | Teste si une expression est supérieure ou égale. Retourne Vrai si expr1 est supérieur ou égal à expr2. | x > =10 retourne "Vrai" si la valeur de x est supérieure ou égale à 10, sinon "Faux" est retourné |
< | Teste si une expression est inférieure. Retourne Vrai si expr1 est inférieur à expr2. | x < 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
<= | Teste si une expression est inférieure ou égale. Retourne Vrai si expr1 est inférieur ou égal à expr2. | x <= 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
|| | Concatène deux chaînes. | 'XYZ' || 'hello' retourne 'XYZhello' |
BETWEEN | Évalue un intervalle. | 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 pour chaque rangée un identificateur universel unique qui est un numéro 64 bits. | NUMERIC_ID() retourne, par exemple, 3458761969522180096 et 3458762008176885761 |
ROWID() | Génère des nombres monotones croissants de 64 bits. | ROWID() retourne par exemple 0 , 1 , 2 et ainsi de suite |
UUID() | Génère pour chaque rangée un identifiant universel unique qui est une chaîne de 128 bits. | UUID() retourne par exemple 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Génère des entiers uniques monotones croissants de 64 bits, qui ne sont pas des nombres consécutifs. | MONOTONICALLY_INCREASING_ID() retourne, par exemple, 8589934592 et 25769803776 |
Fonction | Description | Exemple |
---|---|---|
COALESCE(value, value [, value]*) | Retourne le premier argument non nul, s'il existe, sinon retourne une valeur nulle. | COALESCE(NULL, 1, NULL) retourne 1 |
NULLIF(value, value) | Retourne une valeur nulle si les deux valeurs sont égales, sinon retourne la première valeur. | NULLIF('ABC','XYZ') retourne ABC |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et en tire le schéma au format LDD. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON dans l'un des types suivants, avec le schéma spécifié.
|
|
TO_JSON(column) | Convertit une colonne contenant le type Struct ou Array of Structs, ou Map ou Array of Maps, en chaîne JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retourne 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 nulles et elles doivent toutes avoir le même type de données. Les colonnes de valeur d'entrée doivent toutes avoir 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 avoir 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 :
-
Regrouper
-
Expression
-
Filtre
-
Jointure
-
Consulter
-
Split
-
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 de nombres entiers [1, 2, 3] , TRANSFORM(array, x -> x + 1) retourne 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 retourne 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 mappage de colonne. | Pour un mappage 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) retourne un nouveau mappage 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 retourne 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 carte de colonne. | Pour un mappage 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) retourne un nouveau mappage de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Seul l'opérateur Expression prend en charge Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments. La fonction doit retourner -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au deuxième élément. Si la fonction est omise, le tableau est trié dans l'ordre croissant. |
Le tableau retourné est le suivant : [1,5,6] |
Opérateur Expression
Utilisez l'opérateur Expression pour effectuer une ou plusieurs transformations sur une seule rangée de données afin de créer de nouveaux champs dérivés.
Pour utiliser l'opérateur Expression pour modifier le type de données d'un groupe d'attributs, voir Modification du type de données d'un groupe d'attributs.
Vous pouvez utiliser l'opérateur Expression pour modifier le type de données d'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 également rédiger manuellement une expression.
Tenez compte des points suivants lorsque vous créez des expressions :
Placez un littéral de chaîne entre apostrophes. Par exemple :
CONCAT('We ', 'like')
etUPPER('oracle')
.Placez un nom d'attribut entre guillemets. Par exemple :
UPPER("Sales")
etCONCAT(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 comportant des caractères spéciaux dans le nom complet.
Le panneau Ajouter une expression comporte deux sections : informations sur l'expression et générateur d'expressions. Les champs de la section 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 pour l'appliquer à deux attributs ou plus. Lorsque vous utilisez des types de données complexes tels que Map, Array et Struct, qui peuvent comporter des niveaux de types imbriqués, vous pouvez choisir de laisser le générateur détecter le type de données à partir de l'expression que vous entrez. 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 et valider l'expression.
La section Générateur d'expression répertorie les éléments pouvant être utilisés pour créer une expression. Les éléments que vous pouvez utiliser dans une expression comprennent notamment les attributs entrants, les paramètres et les fonctions. 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 l'expression manuellement. Vous pouvez valider l'expression avant de la créer.
La zone Entrant affiche les attributs de l'opérateur amont qui entrent dans cet opérateur Expression. Sous la liste d'attributs se trouve une case à cocher qui vous permet d'appliquer des règles d'exclusion. Pour exclure un ou plusieurs attributs entrants de la sortie de cette expression, cochez la case Exclure les attributs entrants. Utilisez ensuite le menu pour ajouter les attributs entrants à exclure de la sortie. Une règle Exclure est appliquée à chaque attribut que vous choisissez d'exclure. Vous ne pouvez exclure des attributs que lors de l'ajout initial de l'expression. Lorsque vous modifiez l'expression, la case à cocher Exclure les attributs entrants n'est pas disponible.
Les paramètres peuvent être définis par l'utilisateur ou 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 conditions (opérateurs Filtrer, Jointure, Consultation et Fractionner) ou du générateur d'expressions (opérateurs Expression et Agréger). Voir Ajout d'un paramètre d'expression. La syntaxe est $PARAMETER_NAME
. Par exemple : EXPRESSION_1.ADDRESSES.POSTAL_CODE=$P_CODE
Le service d'intégration de données génère les paramètres de système, par exemple SYS.TASK_START_TIME
. Les valeurs des paramètres du système peuvent être utilisées dans des expressions pour journaliser les informations sur le système. La syntaxe est ${SYSTEM_PARAMETER}
. Par exemple : ${SYS.TASK_RUN_NAME}
Les fonctions sont les fonctions disponibles dans le service d'intégration de données que vous pouvez utiliser dans une expression. Les fonctions sont des opérations effectuées sur des arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir d'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 le service d'intégration de données que vous pouvez utiliser est la suivante :
Fonction | Description | Exemple |
---|---|---|
MD5(all data types) | Calcule un total de contrôle MD5 pour le type de données et retourne une valeur de chaîne. | MD5(column_name) |
SHA1(all data types) | Calcule une valeur de hachage SHA-1 pour le type de données et retourne une valeur de chaîne. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcule une valeur de hachage SHA-2 pour le type de données et retourne une valeur de chaîne. bitLength est un nombre entier. | SHA2 (column_name, bitLength peut être réglé à 0 (équivaut à 256), 256, 384 ou 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) | Retourne la valeur absolue de la valeur numeric . | ABS(-1) |
CEIL(numeric) | Retourne le plus petit entier ne dépassant pas la valeur numeric | CEIL(-1,2) |
FLOOR(numeric) | Retourne le plus grand nombre entier ne dépassant pas la valeur numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Retourne le reste après la division de numeric1 par numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Élève numeric1 à la puissance numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Retourne la valeur numeric1 arrondie à numeric2 décimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Retourne la valeur numeric1 tronquée à numeric2 décimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convertit une expression expr en nombre, en fonction du format et des paramètres régionaux (locale ) facultatifs fournis. Les paramètres régionaux par défaut sont en-US . Marqueurs de langue pris 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) | Retourne 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, mais elle commence par 1. | ARRAY_POSITION(array(3, 2, 1, 4, 1), 1) retourne 3 |
REVERSE(array(...)) |
Retourne le tableau d'éléments indiqué dans un ordre inverse. | REVERSE(array(2, 1, 4, 3)) retourne [3,4,1,2] |
ELEMENT_AT(array(...), index) |
Retourne l'élément du tableau donné à la position d'index indiquée. L'index n'est pas basé sur zéro, mais il commence par 1. Si |
ELEMENT_AT(array(1, 2, 3), 2) retourne 2 |
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Retourne la date courante. | CURRENT_DATE retourne la date du jour, par exemple 2023-05-26 |
CURRENT_TIMESTAMP |
Retourne la date et l'heure courantes pour le fuseau horaire de la session. | CURRENT_TIMESTAMP retourne la date du jour et l'heure courante, par exemple 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Retourne la date correspondant au number de jours spécifié après la date spécifiée. |
DATE_ADD('2017-07-30', 1) retourne 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formate une expression Modèles de format de date pris en charge :
|
|
DAYOFMONTH(date) |
Retourne le jour du mois dans la date indiquée. | DAYOFMONTH('2020-12-25') retourne 25 |
DAYOFWEEK(date) |
Retourne le jour de la semaine dans la date indiquée. | DAYOFWEEK('2020-12-25') retourne 6 pour vendredi. Aux États-Unis, le dimanche est considéré comme 1, le lundi est 2, et ainsi de suite. |
DAYOFYEAR(date) |
Retourne le jour de l'année dans la date indiquée. | DAYOFYEAR('2020-12-25') retourne 360 |
WEEKOFYEAR(date) |
Retourne la semaine de la date dans l'année. |
|
HOUR(datetime) |
Retourne la valeur d'heure de date/heure. | HOUR('2020-12-25 15:10:30') retourne 15 |
LAST_DAY(date) |
Retourne le dernier jour du mois de la date indiquée. | LAST_DAY ('2020-12-25') retourne 31 |
MINUTE(datetime) |
Retourne la valeur des minutes de date/heure. | HOUR('2020-12-25 15:10:30') retourne 10 |
MONTH(date) |
Retourne la valeur du mois de la date indiquée. | MONTH ('2020-06-25') retourne 6 |
QUARTER(date) |
Retourne le trimestre de l'année de la date indiquée. | QUARTER('2020-12-25') retourne 4 |
SECOND(datetime) |
Retourne la valeur des secondes de date/heure. | SECOND('2020-12-25 15:10:30') retourne 30 |
TO_DATE(string, format_string[, localeStr]) |
Analyse l'expression de chaîne en considérant l'expression format_string comme une date. Les paramètres régionaux sont facultatifs. La valeur par défaut est en-US . Marqueurs de langue pris en charge.Dans les expressions de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convertit une expr de type VARCHAR en une valeur de type TIMESTAMP, en fonction de format_string et de localeStr (facultatif).Dans les expressions de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retourne un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Retourne la valeur de semaine de la date indiquée. |
WEEK('2020-06-25') retourne 4 |
YEAR(date) |
Retourne la valeur d'année de la date indiquée. | YEAR('2020-06-25') retourne 2020 |
ADD_MONTHS(date_expr, number_months) |
Retourne la date après l'ajout du nombre de mois spécifié à la date, la chaîne ou l'horodatage spécifié dans un format de type yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retourne le nombre de mois entre Un nombre entier est retourné si les deux dates correspondent au même jour du mois, ou au dernier jour de leur mois respectif. 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 tant que temps UTC et le convertit en horodatage dans le fuseau horaire spécifié. Pour une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 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 une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convertit l'heure ou l'heure de référence Unix spécifiée en chaîne qui représente l'horodatage de ce moment dans le fuseau horaire du système courant et dans le format spécifié. Note : L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:000000 UTC. Si |
Le fuseau horaire par défaut est PST dans les exemples |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convertit l'heure courante 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Retourne 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '100-5' YEAR(3) TO MONTH retourne un intervalle de 100 ans et 5 mois. Vous devez spécifier 3 en tant que valeur de précision de l'année de début. |
INTERVAL 'month' MONTH[(month_precision)] |
Retourne une période en mois. month_precision est le nombre de chiffres dans le champ mois; il est compris entre 0 et 9. Si month_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '200' MONTH(3) retourne un intervalle de 200 mois. Vous devez spécifier 3 en tant que valeur de précision du mois. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de jours, heures, minutes et secondes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 11 jours, 10 heures, 09 minutes, 08 secondes et 555 millièmes de seconde |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme de jours, heures et minutes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '11 10:09' DAY TO MINUTE retourne un intervalle de 11 jours, 10 heures et 09 minutes |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Retourne une période sous forme de jours et d'heures. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '100 10' DAY(3) TO HOUR retourne un intervalle de 100 jours et 10 heures |
INTERVAL 'day' DAY[(day_precision)] |
Retourne une période sous forme de jours. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. |
INTERVAL '999' DAY(3) retourne un intervalle de 999 jours |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme d'heures, minutes et secondes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 9 heures, 08 minutes et 7,6666666 secondes |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme d'heures et de minutes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '09:30' HOUR TO MINUTE retourne un intervalle de 9 heures et 30 minutes |
INTERVAL 'hour' HOUR[(hour_precision)] |
Retourne une période sous forme d'heures. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '40' HOUR retourne un intervalle de 40 heures |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Retourne une période sous forme de minutes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '15' MINUTE retourne un intervalle de 15 minutes |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de minutes et secondes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire de la deuxième valeur du champ time; il est compris entre 0 et 9. |
INTERVAL '15:30' MINUTE TO SECOND retourne un intervalle de 15 minutes et 30 secondes |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de secondes. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire du champ second; il est compris entre 0 et 9. La valeur par défaut est 3. |
INTERVAL '15.678' SECOND retourne un intervalle de 15,678 secondes |
Fonction | Description | Exemple |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Retourne la valeur évaluée à la rangée qui est la première rangée 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) retourne la première valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné avant la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retourne la valeur de BANK_ID de la deuxième rangée avant la rangée courante, avec un partitionnement par BANK_ID et en ordre décroissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Retourne la valeur évaluée à la rangée qui est la dernière rangée 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) retourne la dernière valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné après la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne la valeur de BANK_ID de la deuxième rangée après la rangée courante, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
RANK() OVER([ partition_clause ] order_by_clause) |
Retourne le rang de la rangée courante avec les écarts, en comptant à partir de 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le rang de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Retourne le numéro unique de la rangée courante dans sa partition, en comptant à partir de 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le numéro unique de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
Fonctions | Description | Exemple |
---|---|---|
CAST(value AS type) | Retourne la valeur indiquée dans le type indiqué. | CAST("10" AS INT) retourne 10 |
CONCAT(string, string) | Retourne les valeurs combinées des chaînes ou des colonnes. | CONCAT('Oracle','SQL') retourne OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Retourne les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur spécifié 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') retourne Hello-Oracle
Si un enfant de la fonction est un tableau, le tableau est aplati :
|
INITCAP(string) | Retourne la chaîne avec une majuscule à la première lettre de chaque mot, tandis que toutes les autres lettres sont en minuscules, et chaque mot est délimité par une espace. | INITCAP('oRACLE sql') retourne Oracle Sql |
INSTR(string, substring[start_position]) | Retourne l'index (à partir de 1) de la première occurrence de la sous-chaîne (substring ) dans la chaîne string . | INSTR('OracleSQL', 'SQL') retourne 7 |
LOWER(string) | Retourne la chaîne avec toutes les lettres en minuscules. | LOWER('ORACLE') retourne oracle |
LENGTH(string) | Retourne la longueur de la chaîne en nombre de caractères ou le nombre d'octets dans le cas de données binaires. La longueur de la chaîne comprend les espaces de fin. | LENGTH('Oracle') retourne 6 |
LTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la gauche. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Retourne l'argument qui n'est pas vide. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Recherche et extrait de la chaîne d'entrée la chaîne qui correspond à un modèle d'expression rationnelle. Si l'index de groupe de saisie facultatif est fourni, la fonction extrait le groupe particulier. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retourne 22 |
REPLACE(string, search, replacement) | Remplace toutes les occurrences de la chaîne recherchée search par la chaîne de remplacement replacement .Si Si la chaîne de remplacement | REPLACE('ABCabc', 'abc', 'DEF') retourne ABCDEF |
RTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la droite. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Retourne la sous-chaîne à partir de la position indiquée. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) retourne rac |
Pour les chiffres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale]) | Convertit les nombres et les 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. Les paramètres régionaux par défaut sont en-US . Voir les étiquettes de langue prises en charge.Dans les expressions de pipeline,
| Exemple de nombre : Exemple de date : |
UPPER(string) | Retourne une chaîne avec toutes les lettres en majuscules. | UPPER('oracle') retourne ORACLE |
LPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | LPAD('ABC', 5, '*') retourne '**ABC' |
RPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retourne la valeur pour laquelle une condition est satisfaite. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retourne ABC si 1> 0 , sinon retourne XYZ |
AND | Opérateur logique AND. Retourne Vrai si les deux opérandes sont vrais, sinon retourne Faux. | (x = 10 AND y = 20) retourne "Vrai" si x est égal à 10 et y égal à 20. Si l'un ou l'autre n'est pas vrai, alors "Faux" est retourné |
OR | Opérateur logique OR. Retourne Vrai si l'un ou l'autre opérande est vrai ou si les deux sont vrais, sinon retourne Faux. | (x = 10 OR y = 20) retourne "Faux" si x n'est pas égal à 10 et y n'est pas égal à 20. Si l'un ou l'autre est vrai, alors "Vrai" est retourné |
NOT | Opérateur logique NOT. | |
LIKE | Met en correspondance des modèles de chaîne, si string1 correspond au modèle dans string2. | |
= | Teste l'égalité. Retourne Vrai si expr1 est égal à expr2, sinon retourne Faux. | x = 10 retourne "Vrai" lorsque la valeur de x est 10, sinon "Faux" est retourné |
!= | Teste l'inégalité. Retourne Vrai si expr1 n'est pas égal à expr2, sinon retourne Faux. | x != 10 retourne "Faux" si la valeur de x est 10, sinon "Vrai" est retourné |
> | Teste si une expression est supérieure. Retourne Vrai si expr1 est supérieur à expr2. | x > 10 retourne "Vrai" si la valeur de x est supérieure à 10, sinon "Faux" est retourné |
>= | Teste si une expression est supérieure ou égale. Retourne Vrai si expr1 est supérieur ou égal à expr2. | x > =10 retourne "Vrai" si la valeur de x est supérieure ou égale à 10, sinon "Faux" est retourné |
< | Teste si une expression est inférieure. Retourne Vrai si expr1 est inférieur à expr2. | x < 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
<= | Teste si une expression est inférieure ou égale. Retourne Vrai si expr1 est inférieur ou égal à expr2. | x <= 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
|| | Concatène deux chaînes. | 'XYZ' || 'hello' retourne 'XYZhello' |
BETWEEN | Évalue un intervalle. | 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 pour chaque rangée un identificateur universel unique qui est un numéro 64 bits. | NUMERIC_ID() retourne, par exemple, 3458761969522180096 et 3458762008176885761 |
ROWID() | Génère des nombres monotones croissants de 64 bits. | ROWID() retourne par exemple 0 , 1 , 2 et ainsi de suite |
UUID() | Génère pour chaque rangée un identifiant universel unique qui est une chaîne de 128 bits. | UUID() retourne par exemple 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Génère des entiers uniques monotones croissants de 64 bits, qui ne sont pas des nombres consécutifs. | MONOTONICALLY_INCREASING_ID() retourne, par exemple, 8589934592 et 25769803776 |
Fonction | Description | Exemple |
---|---|---|
COALESCE(value, value [, value]*) | Retourne le premier argument non nul, s'il existe, sinon retourne une valeur nulle. | COALESCE(NULL, 1, NULL) retourne 1 |
NULLIF(value, value) | Retourne une valeur nulle si les deux valeurs sont égales, sinon retourne la première valeur. | NULLIF('ABC','XYZ') retourne ABC |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et en tire le schéma au format LDD. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON dans l'un des types suivants, avec le schéma spécifié.
|
|
TO_JSON(column) | Convertit une colonne contenant le type Struct ou Array of Structs, ou Map ou Array of Maps, en chaîne JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retourne 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 nulles et elles doivent toutes avoir le même type de données. Les colonnes de valeur d'entrée doivent toutes avoir 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 avoir 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 :
-
Regrouper
-
Expression
-
Filtre
-
Jointure
-
Consulter
-
Split
-
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 de nombres entiers [1, 2, 3] , TRANSFORM(array, x -> x + 1) retourne 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 retourne 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 mappage de colonne. | Pour un mappage 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) retourne un nouveau mappage 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 retourne 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 carte de colonne. | Pour un mappage 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) retourne un nouveau mappage de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Seul l'opérateur Expression prend en charge Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments. La fonction doit retourner -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au deuxième élément. Si la fonction est omise, le tableau est trié dans l'ordre croissant. |
Le tableau retourné est le suivant : [1,5,6] |
Vous pouvez dupliquer les expressions ajoutées à un opérateur Expression.
Vous pouvez modifier l'ordre des expressions ajoutées à un opérateur Expression.
Opérateur Agréger
Utilisez l'opérateur Agréger pour effectuer des calculs tels que la somme ou le comptage, sur toutes les rangées ou sur un groupe de rangées afin de créer de nouveaux 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 également rédiger manuellement une expression.
Le panneau Ajouter une expression comporte deux sections : informations sur l'expression et générateur d'expressions. Les champs de la section 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 pour l'appliquer à deux attributs ou plus. Lorsque vous utilisez des types de données complexes tels que Map, Array et Struct, qui peuvent comporter des niveaux de types imbriqués, vous pouvez choisir de laisser le générateur détecter le type de données à partir de l'expression que vous entrez. 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 et valider l'expression.
La section Générateur d'expression répertorie les éléments pouvant être utilisés pour créer une expression. Les éléments que vous pouvez utiliser dans une expression comprennent notamment les attributs entrants, les paramètres et les fonctions. 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 l'expression manuellement. Vous pouvez valider l'expression avant de la créer.
La zone Entrant affiche les attributs de l'opérateur amont qui entrent dans cet opérateur Expression. Sous la liste d'attributs se trouve une case à cocher qui vous permet d'appliquer des règles d'exclusion. Pour exclure un ou plusieurs attributs entrants de la sortie de cette expression, cochez la case Exclure les attributs entrants. Utilisez ensuite le menu pour ajouter les attributs entrants à exclure de la sortie. Une règle Exclure est appliquée à chaque attribut que vous choisissez d'exclure. Vous ne pouvez exclure des attributs que lors de l'ajout initial de l'expression. 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 conditions (opérateurs Filtrer, joindre, consulter et fractionner) ou du générateur d'expressions (opérateurs Expression et agréger). Un paramètre d'expression a un nom, un type et une valeur par défaut. Voir Ajout d'un paramètre d'expression.
Les fonctions sont des opérations effectuées sur des arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir d'arguments. Voici une liste des fonctions à utiliser pour créer des expressions :
Fonction | Description | Exemple |
---|---|---|
COUNT(value[, value]*) | Retourne le nombre de rangées pour lesquelles une ou plusieurs expressions fournies sont toutes non nulles. | COUNT(expr1) |
COUNT(*) | Retourne le nombre total de rangées extraites, y compris les rangées contenant une valeur nulle. | COUNT(*) |
MAX(value) | Retourne la valeur maximale de l'argument. | MAX(expr) |
MIN(value) | Retourne la valeur minimale de l'argument. | MIN(expr) |
SUM(numeric) | Retourne la somme calculée à partir des valeurs d'un groupe. | SUM(expr1) |
AVG(numeric) | Retourne 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 que vous voulez synchroniser ensemble dans le résultat. delimiter sépare les valeurs de column dans le résultat. Si aucun délimiteur n'est indiqué, un caractère vide est utilisé. order_by_clause détermine l'ordre dans lequel les valeurs concaténées sont retournées. Cette fonction ne peut être utilisée qu'en tant qu'agrégateur et elle peut être utilisée avec ou sans regroupement. Si vous l'utilisez sans regroupement, le résultat est une rangée unique. Si vous utilisez avec un regroupement, la fonction renvoie une rangée pour chaque groupe. | Considérez une table avec deux colonnes,
Exemple 1 : Sans regroupement
Exemple 2 : Regrouper 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 :
-
Regrouper
-
Expression
-
Filtre
-
Jointure
-
Consulter
-
Split
-
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 de nombres entiers [1, 2, 3] , TRANSFORM(array, x -> x + 1) retourne 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 retourne 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 mappage de colonne. | Pour un mappage 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) retourne un nouveau mappage 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 retourne 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 carte de colonne. | Pour un mappage 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) retourne un nouveau mappage de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Seul l'opérateur Expression prend en charge Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments. La fonction doit retourner -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au deuxième élément. Si la fonction est omise, le tableau est trié dans l'ordre croissant. |
Le tableau retourné est le suivant : [1,5,6] |
Opérateur Distinct
Utilisez l'opérateur Distinct pour retourner les rangées distinctes contenant des valeurs uniques.
Opérateur Trier
Utilisez l'opérateur Trier pour effectuer le tri des données en ordre croissant ou décroissant.
Lors de l'utilisation d'un opérateur de tri, nous vous recommandons d'appliquer celui-ci après avoir appliqué d'autres opérateurs. Cela garantit que l'opérateur de tri demeure immédiatement avant l'opérateur Cible, ce qui permet d'insérer les données dans la cible dans un ordre précis.
Lorsque vous utilisez un opérateur Trier, appliquez-le après les autres opérateurs de mise en forme et avant l'opérateur qui nécessite que les données soient triées.
Par exemple, appliquez l'opérateur Trier avant un opérateur Cible pour insérer les données dans la cible dans un ordre de tri particulier.
Après avoir ajouté un opérateur Trier sur le canevas et l'avoir 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 sur lesquels effectuer le tri dans les champs listé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 se fait selon l'ordre lexicographique.
Pour ajouter des conditions de tri :
- Under the Details tab, go to the Sort conditions section, and select Add.
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 en fonction duquel trier les données.
- Pour filtrer les attributs à l'aide de modèles de nom, entrez un modèle de nom, par exemple *CITY*.
- Pour Ordre de tri, sélectionnez Ordre croissant ou Ordre décroissant, puis sélectionnez Ajouter.
Chaque condition que vous avez ajoutée est affichée dans la liste des conditions de tri.
Note
Vous pouvez ajouter plusieurs conditions de tri une par une. Le tri fonctionne suivant l'ordre des conditions de tri dans la liste. Par exemple, le tri se fait d'abord en fonction de la première condition de la liste, puis les données triées sont retriées selon la deuxième condition, etc.
Déplacez les conditions de tri vers le haut ou vers le bas dans la liste pour hiérarchiser le tri.
Le déplacement des conditions de tri vers le haut ou vers le bas vous permet de trier d'abord par une condition de tri à priorité élevée, puis de trier les données triées en fonction de la condition suivante dans la liste. Par exemple, pour trier d'abord par adresse puis par code postal, déplacez au début la condition de tri avec l'adresse.
Pour hiérarchiser les conditions de tri :
Pour modifier les conditions de tri :
Vous pouvez supprimer des conditions de tri une par une ou en masse.
Pour supprimer les conditions de tri :
- Dans l'onglet Détails, allez à la section Conditions de tri.
-
Pour supprimer les conditions de tri une par une, sélectionnez le menu Actions (
) correspondant à la condition de tri que vous souhaitez supprimer.
- Pour supprimer plusieurs conditions de tri, cochez les cases correspondant à chacune, puis sélectionnez Supprimer en haut de la liste.
Opérateur Union
Utilisez l'opérateur Union pour effectuer une opération d'union entre deux jeux de données ou plus.
Vous pouvez effectuer une opération d'union sur un maximum de 10 opérateurs Source. Vous devez configurer au moins deux entrées sources. Vous pouvez choisir d'effectuer l'opération d'union en mettant en correspondance les noms d'attribut dans les attributs d'entrée source, ou vous pouvez faire correspondre les attributs par leur position.
Considérez les deux exemples suivants d'entité de données. L'entité de données 1 est définie comme l'entrée principale. L'entité de données résultante montre 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 d'attribut, l'ordre et le type de données de l'entité de données définie comme entrée principale.
Entité de données 1, entrée principale
Service | ID EMPLACEMENT | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Southlake (Texas) |
Comptabilité | 1700 | New Jersey |
Entité de données 2
Entrepôt | ID EMPLACEMENT | Service |
---|---|---|
Denver | 1600 | Avantages sociaux |
New York | 1400 | Construction |
Entité de données résultante
Service | ID EMPLACEMENT | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Southlake (Texas) |
Comptabilité | 1700 | New Jersey |
Avantages sociaux | 1600 | Denver |
Construction | 1400 | New York |
Considérez les deux exemples suivants d'entité de données. L'entité de données 2 est définie comme l'entrée principale. L'entité de données résultante montre 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 d'attribut, l'ordre et le type de données de l'entité de données définie comme entrée principale.
Entité de données 1
Service | ID EMPLACEMENT | 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 | ID EMPLACEMENT | Service |
---|---|---|
Denver | 1600 | Avantages sociaux |
New York | 1400 | Construction |
Entité de données résultante
Entrepôt | ID EMPLACEMENT | Service |
---|---|---|
Denver | 1600 | Avantages sociaux |
New York | 1400 | Construction |
Informatique | 1400 | San Francisco |
Expédition | 1500 | Southlake (Texas) |
Comptabilité | 1700 | New Jersey |
Opérateur Soustraction
Utilisez l'opérateur Soustraction pour comparer deux entités de données et retourner les rangées présentes dans une entité, mais absentes de l'autre entité.
Vous pouvez choisir de conserver ou d'éliminer les rangées en double dans les données résultantes.
Vous pouvez effectuer une opération de soustraction sur deux opérateurs Source seulement. Vous pouvez choisir d'effectuer l'opération de soustraction en mettant en correspondance les noms d'attribut dans les attributs d'entrée source, ou vous pouvez faire correspondre les attributs par leur position.
Considérez les deux exemples suivants d'entité de données. L'entité de données 1 est définie comme l'entrée principale. L'entité de données résultante montre 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 d'attribut, l'ordre et le type de données de l'entité de données définie comme entrée principale.
Entité de données 1, entrée principale
Service | ID EMPLACEMENT | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Entité de données 2
Service | Entrepôt | ID EMPLACEMENT |
---|---|---|
Avantages sociaux | Denver | 1600 |
Informatique | San Francisco | 1400 |
Entité de données résultante
Service | ID EMPLACEMENT | Entrepôt |
---|---|---|
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Considérez les deux exemples suivants d'entité de données. L'entité de données 2 est définie comme l'entrée principale. L'entité de données résultante montre 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 d'attribut, l'ordre et le type de données de l'entité de données définie comme entrée principale.
Entité de données 1
Service | ID EMPLACEMENT | 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 | Entrepôt - Ville |
---|---|---|
Avantages sociaux | 1600 | Denver |
Informatique | 1400 | San Francisco |
Entité de données résultante
Nom du service | Emplacement | Entrepôt - Ville |
---|---|---|
Avantages sociaux | 1600 | Denver |
Opérateur Intersection
Utilisez l'opérateur Intersection pour comparer deux entités de données ou plus et retourner les rangées présentes dans les entités connectées.
Vous pouvez choisir de conserver ou d'éliminer les rangées en double dans les données résultantes.
Vous pouvez effectuer une opération d'intersection sur deux opérateurs Source ou plus. Vous pouvez choisir d'effectuer l'opération en mettant en correspondance les noms d'attribut dans les attributs d'entrée source, ou vous pouvez faire correspondre les attributs par leur position.
Considérez les deux exemples suivants d'entité de données. L'entité de données 1 est définie comme l'entrée principale. L'entité de données résultante montre comment l'intersection des données des deux entrées est basée sur le nom d'attribut. L'entité de données résultante utilise le nom d'attribut, l'ordre et le type de données de l'entité de données définie comme entrée principale.
Entité de données 1, entrée principale
Service | ID EMPLACEMENT | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Expédition | 1500 | Austin |
Comptabilité | 1700 | New Jersey |
Entité de données 2
Service | Entrepôt | ID EMPLACEMENT |
---|---|---|
Avantages sociaux | Denver | 1600 |
Informatique | San Francisco | 1400 |
Entité de données résultante
Service | ID EMPLACEMENT | Entrepôt |
---|---|---|
Informatique | 1400 | San Francisco |
Considérez les deux exemples suivants d'entité de données. L'entité de données 2 est définie comme l'entrée principale. L'entité de données résultante montre comment l'intersection des données des deux entrées est basée sur la position des attributs. L'entité de données résultante utilise le nom d'attribut, l'ordre et le type de données de l'entité de données définie comme entrée principale.
Entité de données 1
Service | ID EMPLACEMENT | 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 | Entrepôt - Ville |
---|---|---|
Avantages sociaux | 1600 | Denver |
Informatique | 1400 | San Francisco |
Entité de données résultante
Nom du service | Emplacement | Entrepôt - Ville |
---|---|---|
Informatique | 1400 | San Francisco |
Opérateur Fractionner
Utilisez l'opérateur Fractionner pour diviser une source de données d'entrée en deux ports de sortie ou plus en fonction des conditions de fractionnement qui sont évaluées dans une séquence.
Chaque condition de fractionnement a un port de sortie. Les données qui répondent à une condition sont dirigées vers le port de sortie correspondant.
Par défaut, un opérateur Fractionner est configuré avec la condition Aucune correspondance, qui est toujours disponible dans la séquence comme dernière condition. Vous ne pouvez pas ajouter votre propre condition à la condition Aucune correspondance. Vous ne pouvez pas non plus supprimer la condition Aucune correspondance.
L'opérateur évalue les conditions une à la fois. Une fois que toutes les conditions de la séquence ont été évaluées, les données qui ne répondent pas à une condition sont dirigées vers le port de sortie Aucune correspondance.
Supposons que vous avez l'entité de données BANK, avec les attributs BANK_ID et BANK_NAME.
Vous définissez deux conditions de fractionnement. La séquence complète, y compris la condition Aucune correspondance, est la suivante :
Port de sortie de condition | Condition |
---|---|
CONDITION1 | SPLIT_1.BANK.BANK_ID<102 |
CONDITION2 | SPLIT_1.BANK.BANK_ID<104 |
UNMATCHED | La condition par défaut UNMATCHED dirige toutes les données qui ne satisfont pas aux autres conditions de la séquence vers le port de sortie de la condition UNMATCHED |
Entité de données BANK
L'entité de données comporte quatre rangées.
BANK_ID | BANK_NAME |
---|---|
101 | Banque A 101 |
102 | Banque B 102 |
103 | Banque C 103 |
104 | Banque D 104 |
Sortie Condition1, Première condition de correspondance
CONDITION1 retourne une rangée correspondante.
BANK_ID | BANK_NAME |
---|---|
101 | Banque A 101 |
Sortie Condition2, Première condition de correspondance
CONDITION2 retourne deux rangées correspondantes (à partir des rangées sans correspondance après CONDITION1).
BANK_ID | BANK_NAME |
---|---|
102 | Banque B 102 |
103 | Banque C 103 |
Sortie de condition sans correspondance, Première condition de correspondance
La condition UNMATCHED retourne la rangée restante.
BANK_ID | BANK_NAME |
---|---|
104 | Banque D 104 |
Sortie de Condition1, Toutes les conditions de correspondance
CONDITION1 retourne une rangée correspondante.
BANK_ID | BANK_NAME |
---|---|
101 | Banque A 101 |
Sortie Condition2, Toutes les conditions de correspondance
Toutes les données sont évaluées par CONDITION2, et trois rangées correspondantes sont retournées.
BANK_ID | BANK_NAME |
---|---|
101 | Banque A 101 |
102 | Banque B 102 |
103 | Banque C 103 |
Sortie de condition dans correspondance, Toutes les conditions de correspondance
La condition UNMATCHED retourne les rangées qui ne répondent pas à CONDITION1 ni à CONDITION2.
BANK_ID | BANK_NAME |
---|---|
104 | Banque D 104 |
Lorsque vous ajoutez un opérateur Fractionner sur le canevas, par défaut l'icône de l'opérateur Fractionner apparaît développée, affichant la condition de fractionnement Aucune correspondance. La condition Aucune correspondance dirige toutes les données qui ne satisfont pas aux autres conditions ajoutées à la séquence.
Utilisez le générateur de conditions pour sélectionner visuellement les éléments afin de créer et d'ajouter une condition de fractionnement. Vous pouvez également entrer manuellement une condition de fractionnement 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 Aucune correspondance. Vous ne pouvez pas ajouter votre propre condition à la condition Aucune correspondance.
Les éléments que vous pouvez utiliser dans une condition de fractionnement comprennent notamment les attributs entrants, les paramètres et les fonctions. Vous pouvez double-cliquer ou faire glisser un élément de la liste à ajouter à l'éditeur pour 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 conditions (opérateurs Filtrer, joindre, consulter et fractionner) ou du générateur d'expressions (opérateurs Expression et agréger). Un paramètre d'expression a un nom, un type et une valeur par défaut. Voir Ajout d'un paramètre d'expression.
Supposons que vous créez un paramètre VARCHAR
portant le nom P_VARCHAR_NAME
et en définissiez la valeur par défaut à ABC BANK
. Vous pouvez ensuite utiliser le paramètre dans une condition de fractionnement comme ci-dessous :
SPLIT_1.BANK.BANK_NAME=$P_VARCHAR_NAME
Les fonctions sont les fonctions disponibles dans le service d'intégration de données que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur des arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir d'arguments.
Supposons que vous créez un paramètre VARCHAR
portant le nom P_VARCHAR_LIKE
et en définissiez la valeur par défaut à B%
. Vous pouvez ensuite utiliser le paramètre dans une condition de fractionnement comme ci-dessous :
SPLIT_1.BANK.BANK_NAME LIKE $P_VARCHAR_LIKE
Voici une liste de fonctions que vous pouvez ajouter lors de la création de conditions :
Fonction | Description | Exemple |
---|---|---|
MD5(all data types) | Calcule un total de contrôle MD5 pour le type de données et retourne une valeur de chaîne. | MD5(column_name) |
SHA1(all data types) | Calcule une valeur de hachage SHA-1 pour le type de données et retourne une valeur de chaîne. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcule une valeur de hachage SHA-2 pour le type de données et retourne une valeur de chaîne. bitLength est un nombre entier. | SHA2 (column_name, bitLength peut être réglé à 0 (équivaut à 256), 256, 384 ou 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) | Retourne la valeur absolue de la valeur numeric . | ABS(-1) |
CEIL(numeric) | Retourne le plus petit entier ne dépassant pas la valeur numeric | CEIL(-1,2) |
FLOOR(numeric) | Retourne le plus grand nombre entier ne dépassant pas la valeur numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Retourne le reste après la division de numeric1 par numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Élève numeric1 à la puissance numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Retourne la valeur numeric1 arrondie à numeric2 décimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Retourne la valeur numeric1 tronquée à numeric2 décimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convertit une expression expr en nombre, en fonction du format et des paramètres régionaux (locale ) facultatifs fournis. Les paramètres régionaux par défaut sont en-US . Marqueurs de langue pris en charge.Modèles de format pris en charge :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Retourne la date courante. | CURRENT_DATE retourne la date du jour, par exemple 2023-05-26 |
CURRENT_TIMESTAMP |
Retourne la date et l'heure courantes pour le fuseau horaire de la session. | CURRENT_TIMESTAMP retourne la date du jour et l'heure courante, par exemple 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Retourne la date correspondant au number de jours spécifié après la date spécifiée. |
DATE_ADD('2017-07-30', 1) retourne 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formate une expression Modèles de format de date pris en charge :
|
|
DAYOFMONTH(date) |
Retourne le jour du mois dans la date indiquée. | DAYOFMONTH('2020-12-25') retourne 25 |
DAYOFWEEK(date) |
Retourne le jour de la semaine dans la date indiquée. | DAYOFWEEK('2020-12-25') retourne 6 pour vendredi. Aux États-Unis, le dimanche est considéré comme 1, le lundi est 2, et ainsi de suite. |
DAYOFYEAR(date) |
Retourne le jour de l'année dans la date indiquée. | DAYOFYEAR('2020-12-25') retourne 360 |
WEEKOFYEAR(date) |
Retourne la semaine de la date dans l'année. |
|
HOUR(datetime) |
Retourne la valeur d'heure de date/heure. | HOUR('2020-12-25 15:10:30') retourne 15 |
LAST_DAY(date) |
Retourne le dernier jour du mois de la date indiquée. | LAST_DAY ('2020-12-25') retourne 31 |
MINUTE(datetime) |
Retourne la valeur des minutes de date/heure. | HOUR('2020-12-25 15:10:30') retourne 10 |
MONTH(date) |
Retourne la valeur du mois de la date indiquée. | MONTH ('2020-06-25') retourne 6 |
QUARTER(date) |
Retourne le trimestre de l'année de la date indiquée. | QUARTER('2020-12-25') retourne 4 |
SECOND(datetime) |
Retourne la valeur des secondes de date/heure. | SECOND('2020-12-25 15:10:30') retourne 30 |
TO_DATE(string, format_string[, localeStr]) |
Analyse l'expression de chaîne en considérant l'expression format_string comme une date. Les paramètres régionaux sont facultatifs. La valeur par défaut est en-US . Marqueurs de langue pris en charge.Dans les expressions de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convertit une expr de type VARCHAR en une valeur de type TIMESTAMP, en fonction de format_string et de localeStr (facultatif).Dans les expressions de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retourne un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Retourne la valeur de semaine de la date indiquée. |
WEEK('2020-06-25') retourne 4 |
YEAR(date) |
Retourne la valeur d'année de la date indiquée. | YEAR('2020-06-25') retourne 2020 |
ADD_MONTHS(date_expr, number_months) |
Retourne la date après l'ajout du nombre de mois spécifié à la date, la chaîne ou l'horodatage spécifié dans un format de type yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retourne le nombre de mois entre Un nombre entier est retourné si les deux dates correspondent au même jour du mois, ou au dernier jour de leur mois respectif. 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 tant que temps UTC et le convertit en horodatage dans le fuseau horaire spécifié. Pour une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 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 une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convertit l'heure ou l'heure de référence Unix spécifiée en chaîne qui représente l'horodatage de ce moment dans le fuseau horaire du système courant et dans le format spécifié. Note : L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:000000 UTC. Si |
Le fuseau horaire par défaut est PST dans les exemples |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convertit l'heure courante 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Retourne 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '100-5' YEAR(3) TO MONTH retourne un intervalle de 100 ans et 5 mois. Vous devez spécifier 3 en tant que valeur de précision de l'année de début. |
INTERVAL 'month' MONTH[(month_precision)] |
Retourne une période en mois. month_precision est le nombre de chiffres dans le champ mois; il est compris entre 0 et 9. Si month_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '200' MONTH(3) retourne un intervalle de 200 mois. Vous devez spécifier 3 en tant que valeur de précision du mois. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de jours, heures, minutes et secondes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 11 jours, 10 heures, 09 minutes, 08 secondes et 555 millièmes de seconde |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme de jours, heures et minutes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '11 10:09' DAY TO MINUTE retourne un intervalle de 11 jours, 10 heures et 09 minutes |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Retourne une période sous forme de jours et d'heures. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '100 10' DAY(3) TO HOUR retourne un intervalle de 100 jours et 10 heures |
INTERVAL 'day' DAY[(day_precision)] |
Retourne une période sous forme de jours. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. |
INTERVAL '999' DAY(3) retourne un intervalle de 999 jours |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme d'heures, minutes et secondes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 9 heures, 08 minutes et 7,6666666 secondes |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme d'heures et de minutes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '09:30' HOUR TO MINUTE retourne un intervalle de 9 heures et 30 minutes |
INTERVAL 'hour' HOUR[(hour_precision)] |
Retourne une période sous forme d'heures. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '40' HOUR retourne un intervalle de 40 heures |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Retourne une période sous forme de minutes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '15' MINUTE retourne un intervalle de 15 minutes |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de minutes et secondes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire de la deuxième valeur du champ time; il est compris entre 0 et 9. |
INTERVAL '15:30' MINUTE TO SECOND retourne un intervalle de 15 minutes et 30 secondes |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de secondes. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire du champ second; il est compris entre 0 et 9. La valeur par défaut est 3. |
INTERVAL '15.678' SECOND retourne un intervalle de 15,678 secondes |
Fonction | Description | Exemple |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Retourne la valeur évaluée à la rangée qui est la première rangée 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) retourne la première valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné avant la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retourne la valeur de BANK_ID de la deuxième rangée avant la rangée courante, avec un partitionnement par BANK_ID et en ordre décroissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Retourne la valeur évaluée à la rangée qui est la dernière rangée 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) retourne la dernière valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné après la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne la valeur de BANK_ID de la deuxième rangée après la rangée courante, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
RANK() OVER([ partition_clause ] order_by_clause) |
Retourne le rang de la rangée courante avec les écarts, en comptant à partir de 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le rang de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Retourne le numéro unique de la rangée courante dans sa partition, en comptant à partir de 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le numéro unique de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
Fonctions | Description | Exemple |
---|---|---|
CAST(value AS type) | Retourne la valeur indiquée dans le type indiqué. | CAST("10" AS INT) retourne 10 |
CONCAT(string, string) | Retourne les valeurs combinées des chaînes ou des colonnes. | CONCAT('Oracle','SQL') retourne OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Retourne les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur spécifié 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') retourne Hello-Oracle
Si un enfant de la fonction est un tableau, le tableau est aplati :
|
INITCAP(string) | Retourne la chaîne avec une majuscule à la première lettre de chaque mot, tandis que toutes les autres lettres sont en minuscules, et chaque mot est délimité par une espace. | INITCAP('oRACLE sql') retourne Oracle Sql |
INSTR(string, substring[start_position]) | Retourne l'index (à partir de 1) de la première occurrence de la sous-chaîne (substring ) dans la chaîne string . | INSTR('OracleSQL', 'SQL') retourne 7 |
LOWER(string) | Retourne la chaîne avec toutes les lettres en minuscules. | LOWER('ORACLE') retourne oracle |
LENGTH(string) | Retourne la longueur de la chaîne en nombre de caractères ou le nombre d'octets dans le cas de données binaires. La longueur de la chaîne comprend les espaces de fin. | LENGTH('Oracle') retourne 6 |
LTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la gauche. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Retourne l'argument qui n'est pas vide. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Recherche et extrait de la chaîne d'entrée la chaîne qui correspond à un modèle d'expression rationnelle. Si l'index de groupe de saisie facultatif est fourni, la fonction extrait le groupe particulier. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retourne 22 |
REPLACE(string, search, replacement) | Remplace toutes les occurrences de la chaîne recherchée search par la chaîne de remplacement replacement .Si Si la chaîne de remplacement | REPLACE('ABCabc', 'abc', 'DEF') retourne ABCDEF |
RTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la droite. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Retourne la sous-chaîne à partir de la position indiquée. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) retourne rac |
Pour les chiffres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale]) | Convertit les nombres et les 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. Les paramètres régionaux par défaut sont en-US . Voir les étiquettes de langue prises en charge.Dans les expressions de pipeline,
| Exemple de nombre : Exemple de date : |
UPPER(string) | Retourne une chaîne avec toutes les lettres en majuscules. | UPPER('oracle') retourne ORACLE |
LPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | LPAD('ABC', 5, '*') retourne '**ABC' |
RPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retourne la valeur pour laquelle une condition est satisfaite. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retourne ABC si 1> 0 , sinon retourne XYZ |
AND | Opérateur logique AND. Retourne Vrai si les deux opérandes sont vrais, sinon retourne Faux. | (x = 10 AND y = 20) retourne "Vrai" si x est égal à 10 et y égal à 20. Si l'un ou l'autre n'est pas vrai, alors "Faux" est retourné |
OR | Opérateur logique OR. Retourne Vrai si l'un ou l'autre opérande est vrai ou si les deux sont vrais, sinon retourne Faux. | (x = 10 OR y = 20) retourne "Faux" si x n'est pas égal à 10 et y n'est pas égal à 20. Si l'un ou l'autre est vrai, alors "Vrai" est retourné |
NOT | Opérateur logique NOT. | |
LIKE | Met en correspondance des modèles de chaîne, si string1 correspond au modèle dans string2. | |
= | Teste l'égalité. Retourne Vrai si expr1 est égal à expr2, sinon retourne Faux. | x = 10 retourne "Vrai" lorsque la valeur de x est 10, sinon "Faux" est retourné |
!= | Teste l'inégalité. Retourne Vrai si expr1 n'est pas égal à expr2, sinon retourne Faux. | x != 10 retourne "Faux" si la valeur de x est 10, sinon "Vrai" est retourné |
> | Teste si une expression est supérieure. Retourne Vrai si expr1 est supérieur à expr2. | x > 10 retourne "Vrai" si la valeur de x est supérieure à 10, sinon "Faux" est retourné |
>= | Teste si une expression est supérieure ou égale. Retourne Vrai si expr1 est supérieur ou égal à expr2. | x > =10 retourne "Vrai" si la valeur de x est supérieure ou égale à 10, sinon "Faux" est retourné |
< | Teste si une expression est inférieure. Retourne Vrai si expr1 est inférieur à expr2. | x < 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
<= | Teste si une expression est inférieure ou égale. Retourne Vrai si expr1 est inférieur ou égal à expr2. | x <= 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
|| | Concatène deux chaînes. | 'XYZ' || 'hello' retourne 'XYZhello' |
BETWEEN | Évalue un intervalle. | 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 pour chaque rangée un identificateur universel unique qui est un numéro 64 bits. | NUMERIC_ID() retourne, par exemple, 3458761969522180096 et 3458762008176885761 |
ROWID() | Génère des nombres monotones croissants de 64 bits. | ROWID() retourne par exemple 0 , 1 , 2 et ainsi de suite |
UUID() | Génère pour chaque rangée un identifiant universel unique qui est une chaîne de 128 bits. | UUID() retourne par exemple 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Génère des entiers uniques monotones croissants de 64 bits, qui ne sont pas des nombres consécutifs. | MONOTONICALLY_INCREASING_ID() retourne, par exemple, 8589934592 et 25769803776 |
Fonction | Description | Exemple |
---|---|---|
COALESCE(value, value [, value]*) | Retourne le premier argument non nul, s'il existe, sinon retourne une valeur nulle. | COALESCE(NULL, 1, NULL) retourne 1 |
NULLIF(value, value) | Retourne une valeur nulle si les deux valeurs sont égales, sinon retourne la première valeur. | NULLIF('ABC','XYZ') retourne ABC |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et en tire le schéma au format LDD. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON dans l'un des types suivants, avec le schéma spécifié.
|
|
TO_JSON(column) | Convertit une colonne contenant le type Struct ou Array of Structs, ou Map ou Array of Maps, en chaîne JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retourne 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 nulles et elles doivent toutes avoir le même type de données. Les colonnes de valeur d'entrée doivent toutes avoir 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 avoir 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 :
-
Regrouper
-
Expression
-
Filtre
-
Jointure
-
Consulter
-
Split
-
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 de nombres entiers [1, 2, 3] , TRANSFORM(array, x -> x + 1) retourne 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 retourne 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 mappage de colonne. | Pour un mappage 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) retourne un nouveau mappage 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 retourne 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 carte de colonne. | Pour un mappage 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) retourne un nouveau mappage de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Seul l'opérateur Expression prend en charge Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments. La fonction doit retourner -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au deuxième élément. Si la fonction est omise, le tableau est trié dans l'ordre croissant. |
Le tableau retourné est le suivant : [1,5,6] |
Vous pouvez modifier n'importe quelle condition de fractionnement, à l'exception de la condition Aucune correspondance.
Vous pouvez déplacer une condition de fractionnement vers le haut ou vers le bas dans la séquence. Seule la condition Aucune correspondance ne peut pas être déplacée.
Vous pouvez supprimer n'importe quelle condition de fractionnement, à l'exception de la condition Aucune correspondance.
Opérateur Faire pivoter
L'opérateur Faire pivoter vous permet de transformer des valeurs de rangée uniques d'un attribut dans une source d'entrée en plusieurs attributs dans la sortie.
En utilisant les entrées de plusieurs rangées, l'opérateur Faire pivoter effectue une transformation basée sur des expressions de fonction d'agrégation et sur les valeurs d'un attribut que vous spécifiez en tant que clé de pivot. Cette opération produit une sortie pivotée ou réorganisée de lignes et d'attributs.
Le nombre de rangées dans la sortie est basé sur la sélection des attributs de regroupement.
- Si vous spécifiez un ou plusieurs attributs de regroupement, les rangées entrantes qui ont la même valeur d'attribut Regrouper par sont regroupés dans une seule rangée. Par exemple, si vous spécifiez un attribut de regroupement ayant quatre valeurs uniques, les données entrantes sont transformées et regroupées en quatre rangées dans la sortie.
- Si vous ne spécifiez aucun attribut de regroupement, toutes les données entrantes sont transformées en une seule rangée de sortie.
Le nombre d'attributs dans la sortie est :
- Basé sur le nombre d'attributs que vous sélectionnez pour le regroupement
- Un multiple du nombre de valeurs que vous sélectionnez dans la clé de pivot
- Un 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 :
1 + (3 * 2)
Le nombre total d'attributs dans la sortie pivotée produite 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 cibles lorsque vous créez les expressions.
Les fonctions d'agrégation que vous utilisez avec un opérateur Faire pivoter déterminent les valeurs pivotées dans la sortie. Si aucune donnée n'est trouvée, une valeur nulle est insérée lorsqu'une valeur pivotée est attendue.
Prenons l'exemple de l'entité de données PRODUCT_SALES, qui possède les attributs STORE, PRODUCT et SALES. Cette entité de données comporte cinq rangées. Vous souhaitez créer un pivotement sur l'attribut PRODUCT avec une fonction SUM d'agrégation sur SALES.
Vous indiquez STORE en tant qu'attribut de regroupement des rangées pivotées. Chaque valeur STORE unique devient une ligne dans la sortie produite. Les rangées d'entrée ayant la même valeur de regroupement sont regroupées dans la même rangée dans la sortie pivotée. Si vous ne spécifiez pas d'attribut de regroupement, toutes les rangées d'entrée sont transformées en une rangée unique dans la sortie produite.
Vous spécifiez PRODUCT comme clé pivot et sélectionnez les trois valeurs à transformer en nouveaux attributs dans la sortie produite.
L'expression de fonction SUM d'agrégation sur SALES est :
SUM(PIVOT_1_1.PRODUCT_SALES.SALES)
Le modèle des attributs cibles est :
%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 du pivotement : Regrouper par STORE, Clé de pivot PRODUCT
STORE | TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|---|
AB-Store | 6 | - | - |
Country-Store | 6 | 8 | - |
E-Store | - | - | 10 |
Sortie du pivotement : Sans Regrouper par, Clé de pivot PRODUCT
TELEVISION | REFRIGERATOR | COFFEE MAKER |
---|---|---|
12 | 8 | 10 |
L'opérateur Faire pivoter effectue une transformation à l'aide d'une ou plusieurs expressions de fonction d'agrégation sur une ou plusieurs valeurs d'un attribut que vous spécifiez en tant que clé de pivot.
Vous pouvez choisir de regrouper les rangées pivotées en une seule ou de sélectionner des attributs pour créer plusieurs rangées de sortie basées sur la même valeur de regroupement.
Une ou plusieurs expressions de fonction d'agrégation sont requises pour un opérateur Faire pivoter.
Avec l'opérateur Faire pivoter sélectionné dans le canevas du flux de données, sous Expressions dans le panneau de propriétés, sélectionnez Ajouter une expression.
Dans le panneau Ajouter une expression, entrez un nom pour l'expression dans le champ Identificateur ou laissez le nom tel quel.
(Facultatif) Pour utiliser un modèle pour appliquer une expression à plusieurs attributs sources, sélectionnez Autoriser la sélection en masse.
Par exemple, supposons que vous ayez deux attributs DISCOUNT_ dans le jeu de données (DISCOUNT_VALUE et DISCOUNT_RATE), auxquels vous voulez appliquer la fonction
MAX
.Sous attributs sources, sélectionnez Modèle et sélectionnez Ajouter un modèle.
Dans le panneau Ajouter un modèle de source, ajoutez un modèle pour sélectionner un groupe d'attributs sources dont le nom commence par DISCOUNT_. Par exemple, entrez
DISCOUNT*
et sélectionnez Ajouter. Sélectionnez ensuite le type de données.Sous attributs cibles, utilisez un modèle pour les noms d'attribut de sortie produits.
Par défaut, le modèle
%MACRO_INPUT%_%PIVOT_KEY_VALUE%
est déjà inséré.%MACRO_INPUT%
correspond aux noms des attributs sources 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 TELEVISION et que%MACRO_INPUT%
indique DISCOUNT_VALUE et DISCOUNT_RATE, alors dans la sortie, les attributs pivotés sont<pivot_name>.<expression_name>.DISCOUNT_VALUE_TELEVISION
et<pivot_name>.<expression_name>.DISCOUNT_RATE_TELEVISION
.- Vous pouvez conserver la sélection Utiliser les types de données des attributs sources. 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 cibles, utilisez un modèle pour les noms d'attribut de sortie produits.
Par défaut, le modèle
%PIVOT_KEY_VALUE%
est déjà inséré.%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 Téléphone, puis dans la sortie, les attributs pivotés sont<pivot_name>.<expression_name>.TELEVISION
et<pivot_name>.<expression_name>.TELEPHONE
.Sous Type de données d'expression, sélectionnez le type de données et remplissez les champs correspondant au type sélectionné.
Dans la section Générateur d'expression, cliquez deux fois sur des attributs entrants, des paramètres et des fonctions d'agrégation 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 créer des expressions de pivotement.
Fonction Description Exemple COUNT(value[, value]*)
Retourne le nombre de rangées pour lesquelles une ou plusieurs expressions fournies sont toutes non nulles. COUNT(expr1)
COUNT(*)
Retourne le nombre total de rangées extraites, y compris les rangées contenant une valeur nulle. COUNT(*)
MAX(value)
Retourne la valeur maximale de l'argument. MAX(expr)
MIN(value)
Retourne la valeur minimale de l'argument. MIN(expr)
SUM(numeric)
Retourne la somme calculée à partir des valeurs d'un groupe. SUM(expr1)
Vous pouvez également utiliser des fonctions ordre supérieur (transformation) dans une expression de tableau croisé dynamique.
Pour créer une expression de pivotement, spécifiez le ou 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 correspondre aux attributs sourcesDISCOUNT_RATE
etDISCOUNT_VALUE
, vous pouvez spécifier une fonction d'agrégation telle queSUM(numeric)
pour appliquer la fonction à tous les attributs qui correspondent au modèle.%MACRO_INPUT%
remplace le paramètre fictifnumeric
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 SUM d'agrégation sur l'attribut SALES. Vous pouvez spécifier la fonction au format
SUM(numeric)
, en remplaçant le paramètre fictifnumeric
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 pivotement. Un paramètre d'expression a un nom, un type et une valeur par défaut.
Par exemple, le paramètre d'expression
P_VARCHAR
a pour typeVARCHAR
et sa valeur par défaut estMIN
. Vous pouvez spécifier 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 Consultation
L'opérateur Consultation effectue une interrogation et une transformation à l'aide d'une condition de consultation et d'une entrée provenant de deux sources, une source d'entrée principale et une source d'entrée de consultation.
L'opération d'interrogation utilise la condition et une valeur dans l'entrée principale pour rechercher des rangées dans la source de consultation. La transformation ajoute des attributs de la source de consultation à la source principale.
Vous pouvez indiquer l'action à effectuer lorsque plusieurs rangées sont retournées par l'interrogation de consultation, ou qu'aucune rangée n'est retournée. Par exemple, vous pouvez spécifier que l'action consiste à ignorer les rangées non correspondantes et à retourner une rangée correspondante quelconque, s'il y en a plusieurs.
Le résultat est une combinaison des deux sources d'entrée basée sur la condition de consultation, une valeur dans l'entrée principale et les actions privilégiées à effectuer. L'entrée principale détermine l'ordre des attributs et des rangées dans la sortie, les attributs de l'entrée principale étant placés avant les attributs de l'entrée de consultation.
Supposons deux entités de données sources dans un flux de données. L'entité de données 1 (PAYMENTS) est définie comme étant l'entrée principale. L'entité de données 2 (CUSTOMERS) est définie comme entrée de consultation. La condition de consultation est définie de la façon suivante :
LOOKUP_1_1.PAYMENTS.CUSTOMER_ID = LOOKUP_1_2.CUSTOMERS.CUSTOMER_ID
La sortie de consultation qui en résulte montre comment les données des deux entrées sont combinées et transformées. Les attributs de la source de consultation sont ajoutés aux attributs de la source principale, selon les comportements suivants :
- Si l'opération ne trouve pas d'enregistrement correspondant à une valeur dans la source de consultation, l'enregistrement est retourné avec une valeur nulle insérée pour les attributs de consultation. Par exemple, aucun enregistrement n'a été trouvé pour les valeurs CUSTOMER_ID 103, 104 et 105. Par conséquent, dans la sortie résultante, une valeur nulle est alimentée dans les attributs CUSTOMER_ID et NAME ajoutés.
- Si l'opération trouve plusieurs enregistrements correspondants pour une valeur dans la source de consultation, un enregistrement correspondant quelconque est retourné.
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 consultation
CUSTOMER_ID | NAME |
---|---|
101 | Pierre |
102 | Paul |
106 | Marie |
102 | Pauline |
Sortie de consultation
PAYMENT_ID | CUSTOMER_ID | AMOUNT | CUSTOMER_ID | NAME |
---|---|---|---|---|
1 | 101 | 2500 | 101 | Pierre |
2 | 102 | 1110 | 102 | Paul |
3 | 103 | 500 | nul | nul |
4 | 104 | 400 | nul | nul |
5 | 105 | 150 | nul | nul |
6 | 102 | 450 | 102 | Paul |
Un opérateur Consultation utilise deux sources d'entrée dans 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 conditions pour sélectionner visuellement les éléments formant la condition de consultation. Vous pouvez également entrer manuellement une condition dans l'éditeur.
Une condition de consultation permet d'utiliser une valeur dans une source d'entrée principale pour rechercher des enregistrements dans une source d'entrée de consultation, et retourne toutes les rangées qui correspondent. Les rangées sans correspondance sont retournées avec des valeurs nulles.
Les éléments que vous pouvez utiliser dans une condition de consultation comprennent notamment les attributs entrants, les paramètres et les fonctions. Vous pouvez double-cliquer ou faire glisser un élément de la liste à ajouter à l'éditeur pour 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 amont dans deux dossiers LOOKUP distincts. Consultez 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, LOOKUP_1_2 est l'entrée de consultation, les conditions de consultation basées sur une valeur dans l'attribut d'entrée principale ADDRESS_ID pourraient être :
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 conditions (opérateurs Filtrer, joindre, consulter et fractionner) ou du générateur d'expressions (opérateurs Expression et agréger). Un paramètre d'expression a un nom, un type et une valeur par défaut. Voir Ajout d'un paramètre d'expression.
Supposons que vous souhaitiez consulter les clients d'une banque particulière. Vous pouvez créer un paramètre VARCHAR
portant le nom P_LOOK_UP
et définir la valeur par défaut à 2001
, qui est la valeur de la banque particulière désirée. Vous pouvez ensuite créer la condition de consultation ainsi :
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 le service d'intégration de données que vous pouvez utiliser dans une condition. Les fonctions sont des opérations effectuées sur des arguments transmis à la fonction. Les fonctions calculent, manipulent ou extraient des valeurs de données à partir d'arguments.
Voici une liste de fonctions que vous pouvez ajouter lors de la création de conditions :
Fonction | Description | Exemple |
---|---|---|
MD5(all data types) | Calcule un total de contrôle MD5 pour le type de données et retourne une valeur de chaîne. | MD5(column_name) |
SHA1(all data types) | Calcule une valeur de hachage SHA-1 pour le type de données et retourne une valeur de chaîne. | SHA1(column_name) |
SHA2(all data types, bitLength) | Calcule une valeur de hachage SHA-2 pour le type de données et retourne une valeur de chaîne. bitLength est un nombre entier. | SHA2 (column_name, bitLength peut être réglé à 0 (équivaut à 256), 256, 384 ou 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) | Retourne la valeur absolue de la valeur numeric . | ABS(-1) |
CEIL(numeric) | Retourne le plus petit entier ne dépassant pas la valeur numeric | CEIL(-1,2) |
FLOOR(numeric) | Retourne le plus grand nombre entier ne dépassant pas la valeur numeric . | FLOOR(-1,2) |
MOD(numeric1, numeric2) | Retourne le reste après la division de numeric1 par numeric2 . | MOD(8,2) |
POWER(numeric1, numeric2) | Élève numeric1 à la puissance numeric2 . | POWER(2,3) |
ROUND(numeric1, numeric2) | Retourne la valeur numeric1 arrondie à numeric2 décimales. | ROUND(2.5,0) |
TRUNC(numeric1, numeric2) | Retourne la valeur numeric1 tronquée à numeric2 décimales. | TRUNC(2.5,0) |
TO_NUMBER(expr[, format, locale]) | Convertit une expression expr en nombre, en fonction du format et des paramètres régionaux (locale ) facultatifs fournis. Les paramètres régionaux par défaut sont en-US . Marqueurs de langue pris en charge.Modèles de format pris en charge :
|
|
Fonction | Description | Exemple |
---|---|---|
CURRENT_DATE |
Retourne la date courante. | CURRENT_DATE retourne la date du jour, par exemple 2023-05-26 |
CURRENT_TIMESTAMP |
Retourne la date et l'heure courantes pour le fuseau horaire de la session. | CURRENT_TIMESTAMP retourne la date du jour et l'heure courante, par exemple 2023-05-26 12:34:56
|
DATE_ADD(date, number_of_days) |
Retourne la date correspondant au number de jours spécifié après la date spécifiée. |
DATE_ADD('2017-07-30', 1) retourne 2017-07-31 |
DATE_FORMAT(expr, format[, locale]) |
Formate une expression Modèles de format de date pris en charge :
|
|
DAYOFMONTH(date) |
Retourne le jour du mois dans la date indiquée. | DAYOFMONTH('2020-12-25') retourne 25 |
DAYOFWEEK(date) |
Retourne le jour de la semaine dans la date indiquée. | DAYOFWEEK('2020-12-25') retourne 6 pour vendredi. Aux États-Unis, le dimanche est considéré comme 1, le lundi est 2, et ainsi de suite. |
DAYOFYEAR(date) |
Retourne le jour de l'année dans la date indiquée. | DAYOFYEAR('2020-12-25') retourne 360 |
WEEKOFYEAR(date) |
Retourne la semaine de la date dans l'année. |
|
HOUR(datetime) |
Retourne la valeur d'heure de date/heure. | HOUR('2020-12-25 15:10:30') retourne 15 |
LAST_DAY(date) |
Retourne le dernier jour du mois de la date indiquée. | LAST_DAY ('2020-12-25') retourne 31 |
MINUTE(datetime) |
Retourne la valeur des minutes de date/heure. | HOUR('2020-12-25 15:10:30') retourne 10 |
MONTH(date) |
Retourne la valeur du mois de la date indiquée. | MONTH ('2020-06-25') retourne 6 |
QUARTER(date) |
Retourne le trimestre de l'année de la date indiquée. | QUARTER('2020-12-25') retourne 4 |
SECOND(datetime) |
Retourne la valeur des secondes de date/heure. | SECOND('2020-12-25 15:10:30') retourne 30 |
TO_DATE(string, format_string[, localeStr]) |
Analyse l'expression de chaîne en considérant l'expression format_string comme une date. Les paramètres régionaux sont facultatifs. La valeur par défaut est en-US . Marqueurs de langue pris en charge.Dans les expressions de pipeline,
|
|
TO_TIMESTAMP(expr, format_string[, localeStr]) |
Convertit une expr de type VARCHAR en une valeur de type TIMESTAMP, en fonction de format_string et de localeStr (facultatif).Dans les expressions de pipeline,
|
TO_TIMESTAMP('2020-10-11 11:10:10', 'yyyy-MM-dd HH:mm:ss') retourne un objet TIMESTAMP représentant 11am 10:10 Oct 11th, 2020 |
WEEK(date) |
Retourne la valeur de semaine de la date indiquée. |
WEEK('2020-06-25') retourne 4 |
YEAR(date) |
Retourne la valeur d'année de la date indiquée. | YEAR('2020-06-25') retourne 2020 |
ADD_MONTHS(date_expr, number_months) |
Retourne la date après l'ajout du nombre de mois spécifié à la date, la chaîne ou l'horodatage spécifié dans un format de type yyyy-MM-dd ou yyyy-MM-dd HH:mm:ss.SSS . |
|
MONTHS_BETWEEN(start_date_expr, end_date_expr) |
Retourne le nombre de mois entre Un nombre entier est retourné si les deux dates correspondent au même jour du mois, ou au dernier jour de leur mois respectif. 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 tant que temps UTC et le convertit en horodatage dans le fuseau horaire spécifié. Pour une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
FROM_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 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 une chaîne, utilisez un format tel que : Le format de fuseau horaire est soit un ID zone basé sur la région (tel que "zone/ville", par exemple "Asie/Séoul"), soit un décalage de fuseau horaire (par exemple, UTC+02). |
TO_UTC_TIMESTAMP('2017-07-14 02:40:00.0', 'GMT+1') retourne 2017-07-14 01:40:00.0
|
FROM_UNIXTIME(unix_time[, fmt]) |
Convertit l'heure ou l'heure de référence Unix spécifiée en chaîne qui représente l'horodatage de ce moment dans le fuseau horaire du système courant et dans le format spécifié. Note : L'heure Unix est le nombre de secondes écoulées depuis le 1er janvier 1970 00:00:000000 UTC. Si |
Le fuseau horaire par défaut est PST dans les exemples |
UNIX_TIMESTAMP([time_expr[, fmt]]) |
Convertit l'heure courante 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
|
INTERVAL 'year month' YEAR[(year_precision)] TO MONTH |
Retourne 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 dans le champ année; il est compris entre 0 et 9. Si year_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '100-5' YEAR(3) TO MONTH retourne un intervalle de 100 ans et 5 mois. Vous devez spécifier 3 en tant que valeur de précision de l'année de début. |
INTERVAL 'month' MONTH[(month_precision)] |
Retourne une période en mois. month_precision est le nombre de chiffres dans le champ mois; il est compris entre 0 et 9. Si month_precision est omis, la valeur par défaut est 2 (elle doit être inférieure à 100 ans). |
INTERVAL '200' MONTH(3) retourne un intervalle de 200 mois. Vous devez spécifier 3 en tant que valeur de précision du mois. |
INTERVAL 'day time' DAY[(day_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de jours, heures, minutes et secondes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 11 jours, 10 heures, 09 minutes, 08 secondes et 555 millièmes de seconde |
INTERVAL 'day time' DAY[(day_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme de jours, heures et minutes. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '11 10:09' DAY TO MINUTE retourne un intervalle de 11 jours, 10 heures et 09 minutes |
INTERVAL 'day time' DAY[(day_precision)] TO HOUR[(hour_precision)] |
Retourne une période sous forme de jours et d'heures. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '100 10' DAY(3) TO HOUR retourne un intervalle de 100 jours et 10 heures |
INTERVAL 'day' DAY[(day_precision)] |
Retourne une période sous forme de jours. day_precision est le nombre de chiffres dans le champ jour; il est compris entre 0 et 9. La valeur par défaut est 2. |
INTERVAL '999' DAY(3) retourne un intervalle de 999 jours |
INTERVAL 'time' HOUR[(hour_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme d'heures, minutes et secondes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans 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) retourne un intervalle de 9 heures, 08 minutes et 7,6666666 secondes |
INTERVAL 'time' HOUR[(hour_precision)] TO MINUTE[(minute_precision)] |
Retourne une période sous forme d'heures et de minutes. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '09:30' HOUR TO MINUTE retourne un intervalle de 9 heures et 30 minutes |
INTERVAL 'hour' HOUR[(hour_precision)] |
Retourne une période sous forme d'heures. hour_precision est le nombre de chiffres dans le champ heure; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '40' HOUR retourne un intervalle de 40 heures |
INTERVAL 'minute' MINUTE[(minute_precision)] |
Retourne une période sous forme de minutes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. |
INTERVAL '15' MINUTE retourne un intervalle de 15 minutes |
INTERVAL 'time' MINUTE[(minute_precision)] TO SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de minutes et secondes. minute_precision est le nombre de chiffres dans le champ minute; il est compris entre 0 et 2. La valeur par défaut est 2. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire de la deuxième valeur du champ time; il est compris entre 0 et 9. |
INTERVAL '15:30' MINUTE TO SECOND retourne un intervalle de 15 minutes et 30 secondes |
INTERVAL 'second' SECOND[(fractional_seconds_precision)] |
Retourne une période sous forme de secondes. fractional_seconds_precision est le nombre de chiffres dans la partie fractionnaire du champ second; il est compris entre 0 et 9. La valeur par défaut est 3. |
INTERVAL '15.678' SECOND retourne un intervalle de 15,678 secondes |
Fonction | Description | Exemple |
---|---|---|
FIRST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ] ) |
Retourne la valeur évaluée à la rangée qui est la première rangée 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) retourne la première valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LAG(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné avant la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LAG(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME DESC) retourne la valeur de BANK_ID de la deuxième rangée avant la rangée courante, avec un partitionnement par BANK_ID et en ordre décroissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
LAST_VALUE(value) OVER ([ partition_clause ] order_by_clause [ windowFrame_clause ]) |
Retourne la valeur évaluée à la rangée qui est la dernière rangée 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) retourne la dernière valeur de BANK_ID dans une fenêtre pour laquelle les rangées sont calculées comme étant la rangée courante et 1 rangée après celle-ci, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . |
LEAD(value[, offset[, default]]) OVER ([ partition_clause ] order_by_clause) |
Retourne la valeur évaluée à la rangée à un décalage donné après la rangée courante dans la partition. S'il n'existe pas de ligne de ce type, la valeur par défaut est renvoyée. Le décalage et la valeur par défaut sont évalués par rapport à la rangée courante. Si elle est omise, la valeur par défaut du décalage est 1 et la valeur par défaut est NULL. | LEAD(BANK_ID, 2, 'hello') OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne la valeur de BANK_ID de la deuxième rangée après la rangée courante, avec un partitionnement par BANK_ID et en ordre croissant de BANK_NAME . Si une telle valeur n'existe pas, hello est retourné. |
RANK() OVER([ partition_clause ] order_by_clause) |
Retourne le rang de la rangée courante avec les écarts, en comptant à partir de 1. | RANK() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le rang de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
ROW_NUMBER() OVER([ partition_clause ] order_by_clause) |
Retourne le numéro unique de la rangée courante dans sa partition, en comptant à partir de 1. | ROW_NUMBER() OVER (PARTITION BY BANK_ID ORDER BY BANK_NAME) retourne le numéro unique de chaque rangée dans le groupe de partitions de BANK_ID , en ordre croissant de BANK_NAME . |
Fonctions | Description | Exemple |
---|---|---|
CAST(value AS type) | Retourne la valeur indiquée dans le type indiqué. | CAST("10" AS INT) retourne 10 |
CONCAT(string, string) | Retourne les valeurs combinées des chaînes ou des colonnes. | CONCAT('Oracle','SQL') retourne OracleSQL |
CONCAT_WS(separator, expression1, expression2, expression3,...) |
Retourne les valeurs combinées des chaînes ou des colonnes à l'aide du séparateur spécifié 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') retourne Hello-Oracle
Si un enfant de la fonction est un tableau, le tableau est aplati :
|
INITCAP(string) | Retourne la chaîne avec une majuscule à la première lettre de chaque mot, tandis que toutes les autres lettres sont en minuscules, et chaque mot est délimité par une espace. | INITCAP('oRACLE sql') retourne Oracle Sql |
INSTR(string, substring[start_position]) | Retourne l'index (à partir de 1) de la première occurrence de la sous-chaîne (substring ) dans la chaîne string . | INSTR('OracleSQL', 'SQL') retourne 7 |
LOWER(string) | Retourne la chaîne avec toutes les lettres en minuscules. | LOWER('ORACLE') retourne oracle |
LENGTH(string) | Retourne la longueur de la chaîne en nombre de caractères ou le nombre d'octets dans le cas de données binaires. La longueur de la chaîne comprend les espaces de fin. | LENGTH('Oracle') retourne 6 |
LTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la gauche. | LTRIM(' Oracle') |
NVL(expr1, epxr2) | Retourne l'argument qui n'est pas vide. | NVL(EXPRESSION_3.CUSTOMERS_JSON.CONTINENT_ID, ROWID()) |
REGEXP_SUBSTR(string, regexp[, RegexGroupIdx]) | Recherche et extrait de la chaîne d'entrée la chaîne qui correspond à un modèle d'expression rationnelle. Si l'index de groupe de saisie facultatif est fourni, la fonction extrait le groupe particulier. |
REGEXP_SUBSTR('22;33;44', '([0-9.]*);([0-9.]*);([0-9.]*)', 1) retourne 22 |
REPLACE(string, search, replacement) | Remplace toutes les occurrences de la chaîne recherchée search par la chaîne de remplacement replacement .Si Si la chaîne de remplacement | REPLACE('ABCabc', 'abc', 'DEF') retourne ABCDEF |
RTRIM(string) | Retourne la chaîne avec les espaces de début supprimés à partir de la droite. | RTRIM('Oracle ') |
SUBSTRING(string, position[, substring_length]) | Retourne la sous-chaîne à partir de la position indiquée. | SUBSTRING('Oracle SQL' FROM 2 FOR 3) retourne rac |
Pour les chiffres, TO_CHAR(expr) et pour les dates TO_CHAR(expr, format[, locale]) | Convertit les nombres et les 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. Les paramètres régionaux par défaut sont en-US . Voir les étiquettes de langue prises en charge.Dans les expressions de pipeline,
| Exemple de nombre : Exemple de date : |
UPPER(string) | Retourne une chaîne avec toutes les lettres en majuscules. | UPPER('oracle') retourne ORACLE |
LPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à gauche avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | LPAD('ABC', 5, '*') retourne '**ABC' |
RPAD(str, len[, pad]) | Retourne une chaîne avec remplissage à droite avec les caractères spécifiés jusqu'à une certaine longueur. Si le caractère pad est omis, la valeur par défaut est un espace. | RPAD('XYZ', 6, '+' ) returns 'XYZ+++' |
Fonction | Description | Exemple |
---|---|---|
CASE WHEN condition1 THEN result1 ELSE result2 END | Retourne la valeur pour laquelle une condition est satisfaite. | CASE WHEN 1 > 0 THEN 'ABC' ELSE 'XYZ' END retourne ABC si 1> 0 , sinon retourne XYZ |
AND | Opérateur logique AND. Retourne Vrai si les deux opérandes sont vrais, sinon retourne Faux. | (x = 10 AND y = 20) retourne "Vrai" si x est égal à 10 et y égal à 20. Si l'un ou l'autre n'est pas vrai, alors "Faux" est retourné |
OR | Opérateur logique OR. Retourne Vrai si l'un ou l'autre opérande est vrai ou si les deux sont vrais, sinon retourne Faux. | (x = 10 OR y = 20) retourne "Faux" si x n'est pas égal à 10 et y n'est pas égal à 20. Si l'un ou l'autre est vrai, alors "Vrai" est retourné |
NOT | Opérateur logique NOT. | |
LIKE | Met en correspondance des modèles de chaîne, si string1 correspond au modèle dans string2. | |
= | Teste l'égalité. Retourne Vrai si expr1 est égal à expr2, sinon retourne Faux. | x = 10 retourne "Vrai" lorsque la valeur de x est 10, sinon "Faux" est retourné |
!= | Teste l'inégalité. Retourne Vrai si expr1 n'est pas égal à expr2, sinon retourne Faux. | x != 10 retourne "Faux" si la valeur de x est 10, sinon "Vrai" est retourné |
> | Teste si une expression est supérieure. Retourne Vrai si expr1 est supérieur à expr2. | x > 10 retourne "Vrai" si la valeur de x est supérieure à 10, sinon "Faux" est retourné |
>= | Teste si une expression est supérieure ou égale. Retourne Vrai si expr1 est supérieur ou égal à expr2. | x > =10 retourne "Vrai" si la valeur de x est supérieure ou égale à 10, sinon "Faux" est retourné |
< | Teste si une expression est inférieure. Retourne Vrai si expr1 est inférieur à expr2. | x < 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
<= | Teste si une expression est inférieure ou égale. Retourne Vrai si expr1 est inférieur ou égal à expr2. | x <= 10 retourne "Vrai" si la valeur de x est inférieure à 10, sinon "Faux" est retourné |
|| | Concatène deux chaînes. | 'XYZ' || 'hello' retourne 'XYZhello' |
BETWEEN | Évalue un intervalle. | 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 pour chaque rangée un identificateur universel unique qui est un numéro 64 bits. | NUMERIC_ID() retourne, par exemple, 3458761969522180096 et 3458762008176885761 |
ROWID() | Génère des nombres monotones croissants de 64 bits. | ROWID() retourne par exemple 0 , 1 , 2 et ainsi de suite |
UUID() | Génère pour chaque rangée un identifiant universel unique qui est une chaîne de 128 bits. | UUID() retourne par exemple 20d45c2f-0d56-4356-8910-162f4f40fb6d |
MONOTONICALLY_INCREASING_ID() |
Génère des entiers uniques monotones croissants de 64 bits, qui ne sont pas des nombres consécutifs. | MONOTONICALLY_INCREASING_ID() retourne, par exemple, 8589934592 et 25769803776 |
Fonction | Description | Exemple |
---|---|---|
COALESCE(value, value [, value]*) | Retourne le premier argument non nul, s'il existe, sinon retourne une valeur nulle. | COALESCE(NULL, 1, NULL) retourne 1 |
NULLIF(value, value) | Retourne une valeur nulle si les deux valeurs sont égales, sinon retourne la première valeur. | NULLIF('ABC','XYZ') retourne ABC |
Fonction | Description | Exemple |
---|---|---|
SCHEMA_OF_JSON(string) | Analyse une chaîne JSON et en tire le schéma au format LDD. |
|
FROM_JSON(column, string) | Analyse une colonne contenant une chaîne JSON dans l'un des types suivants, avec le schéma spécifié.
|
|
TO_JSON(column) | Convertit une colonne contenant le type Struct ou Array of Structs, ou Map ou Array of Maps, en chaîne JSON. | TO_JSON(TO_STRUCT('s1', TO_ARRAY(1,2,3), 's2', TO_MAP('key', 'value'))) retourne 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 nulles et elles doivent toutes avoir le même type de données. Les colonnes de valeur d'entrée doivent toutes avoir 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 avoir 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 :
-
Regrouper
-
Expression
-
Filtre
-
Jointure
-
Consulter
-
Split
-
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 de nombres entiers [1, 2, 3] , TRANSFORM(array, x -> x + 1) retourne 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 retourne 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 mappage de colonne. | Pour un mappage 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) retourne un nouveau mappage 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 retourne 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 carte de colonne. | Pour un mappage 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) retourne un nouveau mappage de {'a' -> 'a_value1', 'b' -> 'b_value2', 'c' -> 'c_value3'} . |
ARRAY_SORT(array(...), lambda_function) |
Seul l'opérateur Expression prend en charge Prend un tableau et trie en fonction de la fonction donnée qui prend 2 arguments. La fonction doit retourner -1, 0 ou 1 selon que le premier élément est inférieur, égal ou supérieur au deuxième élément. Si la fonction est omise, le tableau est trié dans l'ordre croissant. |
Le tableau retourné est le suivant : [1,5,6] |
Opérateur Fonction
Utilisez l'opérateur Fonction pour appeler Oracle Cloud Infrastructure Functions à partir du service d'intégration de données.
Pour les structures de données complexes telles que Map, Array et Composite (Struct), seul le format de sérialisation JSON est actuellement pris en charge.
Avant d'utiliser le service des fonctions pour OCI à partir d'un flux de données dans le service d'intégration de données, assurez-vous de comprendre les dépendances et d'avoir terminé les tâches préalables.
La fonction à appeler doit être déployée dans le service des fonctions pour OCI. La fonction peut être écrite dans n'importe quelle langage.
Utilisez la liste de vérification des tâches suivante pour vous assurer que vous disposez de la configuration et des informations requises pour utiliser l'opérateur Fonction avec le service des fonctions pour OCI.
Tâche | Exigence |
---|---|
Configurer la configuration pour accéder au service des fonctions pour OCI et l'utiliser | Cette rubrique suppose que la location et l'environnement de développement sont déjà configurés pour le déploiement de fonctions dans le service des fonctions pour OCI. Voir Préparation pour les fonctions. Seules les fonctions déployées dans le service des fonctions pour OCI peuvent être utilisées avec l'opérateur Fonction dans le service d'intégration de données. |
Créer des politiques pour contrôler l'appel et la gestion des fonctions. | Cette rubrique suppose que vous ou l'administrateur de la location avez déjà créé les politiques Oracle Cloud Infrastructure nécessaires. Voir Création de politiques pour contrôler l'accès aux ressources de réseau et aux ressources liées aux fonctions. Dans un environnement de production, vous pouvez autoriser les utilisateurs à appeler des fonctions dans une application spécifique ou à appeler une fonction spécifique uniquement. Par exemple, pour autoriser les utilisateurs à appeler des fonctions dans un espace de travail spécifique, entrez les énoncés de politique suivants :
Pour autoriser les utilisateurs à appeler une fonction spécifique dans un espace de travail :
Voir Contrôle de l'accès pour appeler et gérer des fonctions. |
Créez une application dans OCI Functions. | Une application est un regroupement logique de fonctions. Dans une application, vous indiquez un, deux ou trois sous-réseaux dans lesquels exécuter des fonctions. Les fonctions exécutées dans une application sont isolées des fonctions exécutées dans une autre application. |
Déployer une fonction dans le service des fonctions pour OCI. |
Pour que la fonction du service des fonctions pour OCI fonctionne avec l'opérateur de la fonction d'intégration de données dans un flux de données, la fonction ne doit pas lire ni écrire d'identificateur avec un caractère d'espace. Lorsque vous déployez une fonction dans le service des fonctions pour OCI à l'aide de l'interface de ligne de commande Fn Project, celle-ci est construite en tant qu'image Docker et placée dans un registre Docker spécifié. |
Collecter les informations nécessaires pour utiliser la fonction déployée avec l'opérateur Fonction. | Lorsque vous ajoutez et configurez un opérateur Fonction dans un flux de données du service d'intégration de données, vous devez connaître les éléments suivants :
|
Un opérateur Fonction vous permet d'utiliser une fonction déployée dans le service des fonctions pour OCI pour traiter les données d'une source d'entrée. Les types de données primitifs et complexes sont pris en charge.
Spécifiez la forme d'entrée de la fonction, ainsi que les attributs d'entrée et de sortie lus par l'opérateur Fonction. Mappez ensuite manuellement les attributs sources aux attributs d'entrée.
À l'heure actuelle, 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 ayez ajouté et configuré un opérateur Source avec l'entité de données à utiliser avec la fonction.
La fonction à utiliser avec un opérateur Fonction doit être déployée dans une application d'Oracle Cloud Infrastructure Functions.
- Dans le canevas, sélectionnez l'opérateur 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 du service des fonctions pour OCI dans laquelle la fonction à utiliser a été déployée.
- Sélectionnez l'application du service des fonctions pour OCI qui contient 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 retourné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 "Élé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 pour l'opérateur. Indiquez un ou plusieurs attributs représentant les attributs entrants que la fonction doit traiter. Les attributs d'entrée sont mappés aux attributs entrants de la source de l'entité de données.
- Fonction configuration : Spécifiez un ou plusieurs champs de fonction qui définissent la forme d'entrée de la fonction. Un champ a 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 attribut ou plus 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 voulu dans la sortie. Les opérateurs en aval suivants peuvent utiliser les attributs de sortie.
- Entrez un nom pour 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, selon le type et le type de données de la propriété que vous spécifiez, définissez les champs suivants et d'autres champs applicables.
- Longueur : Pour un attribut d'entrée ou de sortie, entrez une longueur. Par exemple, vous spécifiez une longueur pour un type de données numérique ou varchar.
- Valeur : Pour un champ de fonction, entrez une valeur correspondant à un attribut d'entrée.
Pour un type de données complexe Map, spécifiez la paire clé-valeur pour un élément de mappage. Sélectionnez Ajouter un type de données pour sélectionner le type de données de la clé et le type de données de la valeur.
- Clé : Effectuez une sélection parmi les types de données primaires uniquement.
- Valeur : Effectuez une sélection parmi les types de données primitifs et complexes.
Pour un type de données complexe Array, sélectionnez Ajouter un type de données pour spécifier le type de données Élément. Vous pouvez effectuer une sélection parmi les types de données primitifs et complexes.
Pour un type de données Composite (Structure), indiquez un ou plusieurs schémas enfants. Pour ajouter un schéma enfant, sélectionnez le symbole + à côté du nom du schéma parent.
Dans le panneau Ajouter un champ pour un schéma enfant, entrez l'identificateur et sélectionnez un type de données. Vous pouvez effectuer une sélection parmi les types de données primitifs et complexes. Sélectionnez Ajouter pour ajouter le schéma enfant.
Sélectionnez à nouveau le symbole + si vous souhaitez ajouter plus d'un schéma enfant au schéma parent.
Pour modifier ou supprimer un schéma enfant, utilisez le menu Actions (
) à la fin de la rangée.
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 les étapes pour ajouter les propriétés dont vous avez besoin pour définir l'entrée, les et la sortie de fonction.
Aplanir l'opérateur
Utilisez l'opérateur Aplatir pour transformer les données hiérarchiques en un format simplifié à utiliser avec d'autres données relationnelles. Le processus d'aplatissement est également connu sous le nom de dénormalisation ou d'anesthésie.
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 désactiver est Array. Vous ne pouvez sélectionner qu'un seul noeud de tableau dans un jeu de données hiérarchique à aplanir. La structure de données est aplanie de la racine au noeud Array 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 aplanie en définissant des préférences de projection.
Les préférences de projection sont des paramètres pour le format, le nombre et le type d'attributs projetés à inclure dans la sortie après l'aplanissement des données entrantes.
Le service d'intégration de données fournit quatre paramètres de préférences de projet sélectionnés par défaut, ce qui produit une sortie projetée avec les éléments suivants :
- Tableaux d'index
- Tous les attributs jusqu'à l'attribut sélectionné pour l'aplanissement
- Valeurs nulles pour les attributs qui manquent dans les tableaux suivants
- Lignage des noms 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 s'il faut inclure des attributs d'index pour les tableaux dans la sortie aplanie.
L'attribut index représente l'index d'un tableau. Supposons que le tableau soit ["a","b","c"]
, alors l'index pour "a" est 0, l'index pour "b" est 1 et l'index pour "c" est 2.
Par défaut, le service d'intégration de données crée un attribut avec le suffixe _INDEX
pour le noeud de tableau dans lequel vous sélectionnez d'aplanir les données. Le type de données d'un attribut d'index de tableau est Entier.
Les attributs d'index sont également créés pour les noeuds de tableau parents du noeud de tableau sélectionné. L'opération d'aplanissement a une incidence sur tous les noeuds de tableau parent dans la structure hiérarchique, de la racine au noeud sélectionné. Si un noeud de tableau parent touché comporte des tableaux apparentés, les attributs d'index ne sont pas créés pour ces noeuds de tableau apparentés.
Dans l'exemple de structure de données JSON, si vous sélectionnez le tableau dealeraddress
sous servicestation2
pour l'aplanissement, le service d'intégration de données crée cinq attributs d'index de tableau : un pour le noeud de tableau sélectionné et quatre pour les noeuds parents touchés par l'opération d'aplanissement.
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 noeud apparenté du noeud parent touché servicestation2
. De même, aucun attribut d'index n'est créé pour description
, car le noeud de tableau est un noeud apparenté du noeud parent touché 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 aplati vous permet de contrôler s'il faut inclure dans la sortie aplati les attributs qui ne font pas partie des tableaux aplati.
Par défaut, le service d'intégration de données affiche tous les attributs de la racine au tableau sélectionné, y compris les tableaux apparentés qui ne sont pas touchés par l'aplanissement.
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 aplati, 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 rangée unique avec des valeurs nulles pour un tableau parent manquant vous permet de contrôler s'il faut ignorer les rangées dont les attributs ne sont pas touchés par l'aplanissement.
L'effet du paramètre Produire une rangée unique avec des valeurs nulles pour un tableau parent manquant n'est visible que dans l'onglet Données. Par défaut, le service d'intégration de données affiche des valeurs nulles pour les attributs qui manquent dans les tableaux suivants.
Par exemple, voici une sortie projetée avec des valeurs nulles :
|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 des noms parents dans les noms d'attribut vous permet de contrôler si les noms parents doivent être inclus dans les noms d'attribut enfants.
Par défaut, le service d'intégration de données 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 parents dans la structure simplifiée sont les suivants (en supposant que les tableaux apparentés non touchés par l'aplanissement 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 des noms parents 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 à une source de stockage d'objets avec des types de données complexes, tels qu'un fichier JSON.
Une fois que vous avez sélectionné un attribut complexe pour l'aplanissement, il peut y avoir d'autres noeuds de tableau dans la structure aplatie.
Avec les autres noeuds Array dans une structure aplatie, vous pouvez convertir un Array de types de données primitifs ou un Array de Structs 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 Aplatir et sélectionné un attribut complexe pour créer une structure de données Aplatir.
La procédure suivante suppose que vous avez sélectionné un noeud Array à convertir en chaîne, le cas échéant.
Lors de la configuration d'un opérateur Aplatir sur un flux de données, vous pouvez annuler un aplatissement en effaçant le chemin Aplatir 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 comprennent le cube, l'analyse de tabulation croisée, les éléments fréquents, le regroupement et le SQL Spark. 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. La paramétrisation des champs permet une flexibilité dans l'ajustement de la logique.
Un opérateur de fonction de table peut être connecté à n'importe quel autre opérateur dans 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 flux intermédiaire 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 jeu de données en fonction du stockage de mémoire indiqué level
.
Retourne un nouveau jeu de données dans le jeu de données distribué résilient (RDD) mis en cache.
Paramètre | Description |
---|---|
level |
Mémoire de stockage à utiliser :
|
Calcule une table de fréquence par paire ou une table d'éventualité à partir de valeurs distinctes des deux colonnes données.
Le nombre de valeurs distinctes pour chaque colonne doit être inférieur à 1e4.
Renvoie une structure de données qui contient la table d'éventualité. Dans le tableau des contingences :
- Le nom de la première colonne est
col1_col2
, oùcol1
est la première colonne etcol2
est la deuxième colonne avant la transformation. La première colonne de chaque rangée est les valeurs distinctes decol1
. - Les autres noms de colonne sont les valeurs distinctes de
col2
. - Les comptages sont retournés en tant que type
long
. - Le nombre de paires sans occurrences est égal à zéro.
- Le nombre maximal de paires non nulles est 1e6.
- Les éléments nuls sont remplacés par
null
.
Paramètre | Description |
---|---|
col1 |
Nom de la première colonne. Reportez-vous à la note qui suit ce tableau pour connaître les limitations. Les éléments distincts de |
col2 |
Nom de la deuxième colonne. Reportez-vous à la note qui suit ce tableau pour connaître les limitations. 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 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
Retourne une structure de données après la transformation du cube.
Paramètre | Description |
---|---|
cubeColumns |
Liste des colonnes, séparées par des virgules, permettant de générer le cube multidimensionnel. |
aggExpressions |
Expressions de fonction d'agrégation à effectuer 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 que aggExpressions
a la valeur salary -> avg, age -> max
(calculer le salaire moyen et 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
Retourne une entité de données. La source de données synthétique peut être utilisée dans les tests d'unité de pipeline où les données réelles ne sont pas utilisées ou déplacées.
Paramètre | Description |
---|---|
format |
Type du fichier. Les valeurs prises en charge sont les suivantes :
|
content |
Contenu du fichier pour le format indiqué. |
Exemple
Exemple de contenu CSV :
co1,co2,co3
1,B,3
A,2,C
Résultat de la génération des données :
+---+---+---+
|co1|co2|co3|
+---+---+---+
|1 |B |3 |
+---+---+---+
|A |2 |C |
+---+---+---+
Recherche les doubles dans la liste de colonnes indiquée et retourne un nouveau jeu de données avec les rangées 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
est a
, le jeu de données après la transformation est :
+---+---+
|a |b |
+---+---+
|1 |2 |
|3 |4 |
|2 |4 |
+---+---+
Recherche les éléments fréquents dans la liste de colonnes ou de colonnes donnée à l'aide de 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 structure 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
est favorite_fruit
et support
est 0.6
, la structure de données retournée après la transformation est :
+------------------------+
|favorite_fruit_freqItems|
+------------------------+
| [banana]|
+------------------------+
Supprime les rangées contenant des valeurs nulles ou NaN dans la colonne ou la liste de colonnes indiquée.
Renvoie une structure de données qui exclut les lignes.
Paramètre | Description |
---|---|
how |
Comment déterminer si une ligne doit être supprimée. Les valeurs prises en charge sont les suivantes :
Le paramètre |
cols |
Nom de colonne ou liste de noms de colonne séparés par des virgules. |
minNonNulls |
Nombre minimal de valeurs non nulles et non NaN qu'une rangée peut contenir. Supprime les lignes qui contiennent moins que le minimum spécifié. Le paramètre |
Exemple
Avant la transformation :
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|2 |null |28 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Si how
est any
et cols
est name
, la structure de données retournée après la transformation est :
+----+-------+----+
|id |name |age |
+----+-------+----+
|1 |Alice |25 |
|null|Bob |null|
|4 |Charlie|30 |
+----+-------+----+
Lorsque vous utilisez le paramètre how
avec la valeur all
, une rangée n'est supprimée que si toutes ses valeurs sont nulles. 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 transformation :
+---+--------+----+
| id| name| age|
+---+--------+----+
| 1|John Doe| 30|
| 2| null|null|
| 3|Jane Doe| 25|
| 4|Jake Doe|null|
+---+--------+----+
Remplace les valeurs nulles et retourne une structure de données à l'aide des valeurs remplacées.
Paramètre | Description |
---|---|
replacement |
Mappage clé-valeur à utiliser pour remplacer les valeurs nulles. La clé est un nom de colonne. La valeur est une valeur de remplacement. La clé indique la valeur de remplacement. Par exemple : Une valeur de remplacement est versée 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 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 indiquées en mettant en correspondance les clés dans le mappage de clé et de valeur de remplacement indiqué.
Retourne une nouvelle structure 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 laquelle appliquer les valeurs de remplacement. Si |
replacement |
Mappage clé-valeur de remplacement à utiliser. La clé est une valeur à remplacer. La valeur est la valeur de remplacement. La valeur de mappage peut avoir des valeurs nulles. La clé indique 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 replacement
est Alice -> Tom
, la structure 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 jeu de données par les colonnes indiquées en un nombre spécifié de partitions.
Retourne un nouveau jeu de données partitionné par hachage. Le nombre exact de partitions spécifié est retourné.
Paramètre | Description |
---|---|
partitionColumns |
Nom de colonne ou liste de noms de colonne séparés par des virgules par lesquels le jeu de données est partitionné. |
numberOfPartitions |
Nombre de partitions à créer. |
Génère un regroupement multidimensionnel 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
Retourne une structure de données après la transformation de regroupement.
Paramètre | Description |
---|---|
rollupColumns |
Liste des colonnes, séparées par des virgules, permettant de générer le regroupement multidimensionnel. |
aggExpressions |
Expressions de fonction d'agrégation à effectuer 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
(calculer le salaire moyen et l'âge maximal), le regroupement 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 |
|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 interrogations 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 |
Énoncé ou script SQL à 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 structure de données qui représente l'échantillon stratifié.
Paramètre | Description |
---|---|
strata_col |
Colonne qui définit 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 un 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 transformation :
+---+-----+
|key|value|
+---+-----+
| 1| 1|
| 1| 2|
| 3| 2|
+---+-----+
Calcule les statistiques fournies pour les colonnes numériques et de chaîne.
Si aucune statistique n'est fournie, toutes les données suivantes sont calculées :
COUNT
MEAN
STDDEV
MIN
- quartiles approximatifs (percentiles à 25 %, 50 % et 75 %)
MAX
Paramètre | Description |
---|---|
statistics |
Une liste séparée par des virgules de statistiques. Les valeurs prises en charge 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 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 |
+-------+----------+-----+------+----------------+----------------+