JSONUpdater
Modifie des document JSON en réalisant une ou plusieurs actions :
- Insertion d'une nouvelle valeur dans un objet ou tableau JSON
- Remplacement d'une valeur existante dans un objet ou tableau JSON
- Regroupement de contenu de deux objets ou tableaux JSON
- Suppression d'une valeur d'un objet ou tableau JSON
- Ajout d'une valeur à un tableau JSON
- Renommer une clé dans un objet JSON.
Pour chaque mise à jour de document, une expression de chemin JSON est utilisée pour identifier l'emplacement de l'objet ou du tableau JSON qui doit être modifié. Un deuxième paramètre nomme la clé de l'objet ou l'indice du tableau à modifier. Notez que le chemin peut faire référence à plus d'un élément. Si c'est le cas, tous les éléments seront modifiés.
Pour les modifications qui remplacent des éléments existants ou insèrent de nouveaux éléments, deux paramètres sont donnés qui spécifient la valeur à ajouter au document. Cette valeur peut être un simple texte, une expression XQuery, un objet JSON ou un tableau JSON.
Les entités Update fournissent les valeurs des attributs utilisés dans les opérations de mise à jour des documents. L'entité Document est uniquement utilisée pour fournir le document JSON qui doit être mis à jour.
Pour chaque entité qui entre dans le port Update, toutes les opérations de mise à jour listées dans le Transformer seront appliquées à chaque entité qui est entrée dans le Transformer via le port Document. Par conséquent, aucune modification ne sera apportée au document JSON si aucune entité n'entre dans le Transformer via le port Update.
Noter que si le document est entré directement dans les paramètres du Transformer, il peut être traité de deux manières différentes :
- Si aucune entité Document n'est donnée au Transformer, une nouvelle entité sera créée pour stocker le document. Chacune des mises à jour sera appliquée au document, et il sera ensuite sorti par le port Document.
- Si des entités entrent par le port Document, alors chaque mise à jour est appliquée au document et ces entités ressortiront du Transformer.
Configuration
Ports d'entrée
Les entités d'entrée contiennent les documents JSON à modifier. Les documents peuvent être contenus dans un attribut, saisis directement dans le Transformer, ou contenus dans un fichier référencé par une valeur d'attribut.
Ce port peut être laissé sans connexion si un nom de fichier et un chemin d'accès sont saisis directement dans le paramètre Fichier JSON, ou si le texte JSON à mettre à jour est saisi directement dans le paramètre Texte JSON.
Pour chaque entité qui entre dans ce port d'entrée, chacune des mises à jour énumérées dans le Transformer sera exécutée sur chaque document qui est entré via le port d'entrée Document. Ces entités contiendront les valeurs des attributs qui sont utilisés dans les mises à jour du document.
Ports de sortie
Les entités en entrée Document seront produites par ce port. Ces entités contiendront le document mis à jour, qui sera stocké dans l'attribut nommé dans le paramètre Attribut du résultat. Le document mis à jour sera toujours enregistré en tant que valeur d'attribut encodée en utf-8, quel que soit l'encodage du document original.
Paramètres
Regrouper les entités de mise à jour par |
Ce paramètre est utilisé pour indiquer quelles entités de mise à jour modifieront un document. Lorsque ce paramètre est défini comme une liste d'attributs, les entités du Document ne seront modifiées que par les entités Update qui partagent les mêmes valeurs pour ces attributs. Le document sera modifié par toutes les entités de mise à jour ayant les mêmes valeurs d'attribut. Notez qu'un document ne sera pas mis à jour si aucune entité Update ayant les mêmes valeurs pour les attributs "Regrouper par" n'est fournie au Transformer. |
||||
Traitement des regroupements |
Sélectionnez le moment du traitement où les groupes sont traités :
Considérations sur l'utilisation de Regrouper par
Il y a deux raisons typiques d'utiliser Quand le groupe change (avancé). La première concerne les données entrantes qui sont destinées à être traitées en groupes (et qui sont déjà classées ainsi). Dans ce cas, c'est la structure qui dicte l'utilisation de Regrouper par - et non des considérations de performance. La seconde raison possible est le potentiel gain de performances. Les gains de performance sont plus visibles quand les données sont déjà triées (ou lues en utilisant une déclaration SQL ORDER BY) puisque moins de travail est requis de la part de FME. Si les données doivent être ordonnées, elles peuvent être triées dans le traitement (bien que la surcharge de traitement supplémentaire puisse annuler tout gain). Le tri devient plus difficile en fonction du nombre de flux de données. Il peut être quasiment impossible de trier des flux de données multiples dans l'ordre correct, car toutes les entités correspondant à une valeur Regrouper par doivent arriver avant toute entité (de tout type d'entité ou jeu de données) appartenant au groupe suivant. Dans ce cas, l'utilisation de Regrouper par avec Lorsque toutes les entités sont reçues peut être une approche équivalente et plus simple. Note: De multiples types d'entités et entités de multiples jeux de données ne vont généralement pas arriver dans l'ordre correct. Comme pour beaucoup de scénarios, tester différentes approches dans votre traitement avec vos données est le seul moyen sûr d'identifier le gain de performance. |
Entrée JSON |
Ce paramètre est utilisé pour spécifier le type de document JSON qui doit être modifié. Le JSON peut provenir des entités d'entrée (Valeur du paramètre : Texte ou Attribut), ou il peut provenir d'un fichier externe. (Valeur du paramètre : fichier JSON) |
Texte JSON |
Lorsque le paramètre JSON Input est défini sur "Text or Attribute", ce paramètre est utilisé pour spécifier le texte JSON. Le paramètre peut être défini sur une valeur d'attribut, ou le document JSON peut être saisi directement dans le paramètre. |
Fichier JSON |
Lorsque le paramètre JSON Input est défini sur 'JSON File', ce paramètre est utilisé pour spécifier l'emplacement du fichier. Le nom et le chemin d'accès du fichier peuvent être saisis directement dans le paramètre, ou être fournis en tant que valeur d'attribut. L'attribut doit se trouver sur une entité acheminée vers le port d'entrée Document. |
Chaque ligne de la table des mises à jour spécifie une unique opération de mise à jour.
Type de mise à jour |
Ce paramètre spécifie le type de modification à appliquer au document XML. Les mises à jour possibles sont :
|
||||||||||||||||||||||
Chemin JSON |
Ce paramètre est utilisé pour identifier l'objet ou le tableau JSON qui doit être mis à jour. Pour les mises à jour qui modifient une clé d'objet ou un index de tableau spécifique, la clé/l'index est identifié(e) à l'aide du paramètre 'Index Objet/Tableau'. Les chemins JSON utilisent une syntaxe de type texte simple pour identifier le document JSON depuis l'objet ou le tableau de plus haut niveau vers l'objet ou le tableau devant être modifié. Tous les documents JSON doivent avoir un seul objet ou tableau comme valeur racine. Dans un chemin JSON, cette valeur racine est identifiée par le mot clé "json". Ainsi, chaque chemin JSON commence par ce mot clé. La syntaxe des crochets est utilisée pour identifier chaque niveau du chemin. Pour pointer vers un objet qui n'est pas une liste, le chemin peut être simplement 'json'. Un entier est utilisé pour identifier une position au sein d'un tableau :
Une chaîne entre guillemets peut être utilisée pour se référer à une valeur d'objet clé :
Ces indices peuvent être répétés pour que le chemin s'enfonce plus profondément dans le document JSON. Il est important de connaître la structure du document, afin que les types d'indices (objet ou tableau) soient corrects.
Un caractère de remplacement peut être utilisé pour faire référence à tous les éléments d'un tableau ou à toutes les valeurs d'un objet. Le caractère * est utilisé pour désigner un caractère de remplacement.
Pour utiliser une valeur d'attribut dans un chemin JSON, il faut utiliser la fonction FME @Value. Si la valeur de l'attribut est une clé d'objet, la fonction @Value doit être placée entre guillemets.
Note: Les fonctions @Value() utilisées dans le paramètre chemin s'appliqueront à l'entité Update traitée, pas à l'entitéDocument qui est mise à jour. |
||||||||||||||||||||||
Index Objet/Tableau |
Ce paramètre est utilisé pour spécifier l'objet dont la valeur doit être supprimée/modifiée/ajoutée. Pour les mises à jour d'objets, la valeur de ce paramètre doit être une chaîne de caractères, qui sera interprétée comme une clé d'objet. Les guillemets ne sont PAS nécessaires autour de la chaîne de caractères de ce paramètre. Pour les mises à jour de tableaux, la valeur de ce paramètre doit être un nombre entier. Notez que les indices de tableau commencent à 0. |
||||||||||||||||||||||
Type de valeur |
Ce paramètre est utilisé pour indiquer comment la valeur du paramètre Valeur doit être interprétée. Les effets des différentes valeurs de ce paramètre sont expliqués dans la description du paramètre Valeur. En général, ce paramètre devrait être réglé sur Plain Text si le Transformer est destiné à insérer du contenu texte dans le document, alors qu'il devrait être réglé sur JSON/XQuery si le Transformer est destiné à insérer des objets ou des tableaux JSON dans le document, ou si la valeur est produite par des appels de fonction XQuery. |
||||||||||||||||||||||
Valeur |
Ce paramètre est utilisé pour spécifier les nouvelles valeurs qui doivent être insérées dans le document. Si le paramètre Value Type est défini sur Plain Text, le contenu de ce paramètre sera encodé pour une utilisation sûre dans un document XML. En d'autres termes, les guillemets doubles seront échappés sous la forme \", les barres obliques inversées seront échappées sous la forme \\\", et ainsi de suite. Si le paramètre Value Type est défini sur JSON/XQuery, le contenu de ce paramètre sera interprété comme une expression XQuery. Cela permet d'insérer des éléments de valeurs JSON dans le document. Cela permet également d'utiliser les fonctions XQuery de FME. Par exemple, un modèle JSON (par exemple, à partir du JSONTemplater) pourrait être entré comme valeur de paramètre. Il serait ensuite évalué avant d'être inséré dans le document. Note: Toutes les fonctions FME XQuery utilisées dans le paramètre Nouvelle valeur accéderont à l'entité Update, pas à l'entitéDocument. |
Validation de noms d'attributs |
Ce paramètre indique si FME Workbench doit tenter de valider les noms d'attributs passés dans les fonctions XQuery utilisées dans les colonnes Valeur. |
Attribut Résultat |
Ce paramètre spécifie l'attribut dans lequel le document JSON mis à jour sera écrit. La valeur par défaut est _result. |
Éditer les paramètres des Transformers
À l'aide d'un ensemble d'options de menu, les paramètres du Transformer peuvent être attribués en faisant référence à d'autres éléments de traitement. Des fonctions plus avancées, telles qu'un éditeur avancé et un éditeur arithmétique, sont également disponibles dans certains Transformers. Pour accéder à un menu de ces options, cliquez sur à côté du paramètre applicable. Pour plus d'informations, voir Options de menus et paramètres de Transformer.
Définir les valeurs
Il existe plusieurs façons de définir une valeur à utiliser dans un Transformer. La plus simple est de simplement taper une valeur ou une chaîne de caractères, qui peut inclure des fonctions de différents types comme des références d'attributs, des fonctions mathématiques et de chaînes de caractères, et des paramètres de traitement. Il existe un certain nombre d'outils et de raccourcis qui peuvent aider à construire des valeurs, généralement disponibles dans le menu contextuel déroulant adjacent au champ de valeur.
Utilisation de l'éditeur de texte
L'éditeur de texte fournit un moyen efficace de construire des chaînes de textes (dont les expressions régulières) à partir de données source diverses, telles que des attributs, des paramètres et des constantes, et le résultat est directement utilisé dans le paramètre.
Utilisation de l'éditeur arithmétique
L'éditeur arithmétique fournit un moyen simple de construire des expressions mathématiques à partir de plusieurs données source, telles que des attributs et des fonctions, et le résultat est directement utilisé dans un paramètre.
Valeur conditionnelle
Définit des valeurs selon un ou plusieurs tests.
Fenêtre de définition de conditions
Contenu
Les expressions et chaînes de caractères peuvent inclure des fonctions, caractères, paramètres et plus.
Lors du paramétrage des valeurs - qu'elles soient entrées directement dans un paramètre ou construites en utilisant l'un des éditeurs - les chaînes de caractères et les expressions contenant des fonctions Chaîne de caractères, Math, Date et heure ou Entité FME auront ces fonctions évaluées. Par conséquent, les noms de ces fonctions (sous la forme @<nom_de_fonction>) ne doivent pas être utilisés comme valeurs littérales de chaîne de caractères.
Ces fonctions manipulent les chaînes de caractères. | |
Caractères spéciaux |
Un ensemble de caractères de contrôle est disponible dans l'éditeur de texte. |
Plusieurs fonctions sont disponibles dans les deux éditeurs. | |
Fonctions Date/heure | Les fonctions de dates et heures sont disponibles dans l'Editeur texte. |
Ces opérateur sont disponibles dans l'éditeur arithmétique. | |
Elles retournent des valeurs spécifiques aux entités. | |
Les paramètres FME et spécifiques au traitement peuvent être utilisés. | |
Créer et modifier un paramètre publié | Créer ses propres paramètres éditables. |
Options - Tables
Les Transformers avec des paramètres de style table possèdent des outils additionnels pour remplir et manipuler des valeurs.
Réordonner
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
|
Couper, Copier et Coller
|
Activé une fois que vous avez cliqué sur un élément de ligne. Les choix comprennent :
Copier, copier et coller peuvent être utilisés au sein d'un Transformer ou entre Transfromers. |
Filtre
|
Commencez à taper une chaîne de caractères, et la matrice n'affichera que les lignes correspondant à ces caractères. Recherche dans toutes les colonnes. Cela n'affecte que l'affichage des attributs dans le Transformer - cela ne change pas les attributs qui sont sortis. |
Importer
|
Le bouton d'import remplit la table avec un jeu de nouveaux attributs lus depuis un jeu de données. L'application spécifique varie selon les Transformers. |
Réinitialiser/Rafraîchir
|
Réinitialise la table à son état initial, et peut fournir des options additionnelles pour supprimer des entrées invalides. Le comportement varie d'un Transformer à l'autre. |
Note : Tous les outils ne sont pas disponibles dans tous les Transformers.
FME Community
FME Community est l'endroit où trouver des démos, des tutoriaux, des articles, des FAQ et bien plus encore. Obtenez des réponses à vos questions, apprenez des autres utilisateurs et suggérez, votez et commentez de nouvelles entités.
Voir tous les résultats à propos de ce Transformer sur FME Community.