J'ai créé une transformation qui lit les données Flat Json d'un fichier '.js' et modifie les champs JSON (clés) en fonction des noms des champs d'entrée des métadonnées et les noms de champs de cibles de métadonnées spécifiés par l'utilisateur.Entrée JSON définie par l'utilisateur pour la sortie JSON attendue à l'aide de PDI Metadata Injection
En outre, j'utilise l'étape ETL Metadata Injection pour injecter des entrées de métadonnées aux étapes: entrée JSON, valeurs de sélection/renommage et sortie JSON.
S'il vous plaît trouver des transformations que j'ai créées pour métadonnées pour injection JSON Entrée:
Transformation 1: Pour obtenir le répertoire qui contient les fichiers JSON et appelle la transformation JSON Executor.
Transformation 2: Obtenir les entrées de métadonnées, les métadonnées champ cible, le nom de fichier JSON et les envoyer à ETL métadonnées Injection étape
Transformation 3: Processus L'entrée JSON de l'étape d'injection de métadonnées et convertir JSON d'entrée en données JSON attendues
Input JSON data to Expected JSON output
Quand je lance ce qui précède tra nsformations, je suis l'erreur ci-dessous:
2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : Unexpected error 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - ERROR (version 7.1.0.0-12, build 1 from 2017-05-16 17.18.02 by buildguy) : org.pentaho.di.core.exception.KettleException: 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - The specified field '{0}' could not be found in the input. 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - at org.pentaho.di.trans.steps.jsonoutput.JsonOutput.processRow(JsonOutput.java:204) 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - at org.pentaho.di.trans.step.RunThread.run(RunThread.java:62) 2017/09/13 15:23:49 - JSON to Expected JSON Output.0 - at java.lang.Thread.run(Thread.java:745)
Je passe les champs à la sortie JSON de la transformation précédente (c'est-à-dire via l'étape d'injection de métadonnées). J'ai donc gardé les champs vides dans l'étape de sortie JSON. En fait, les mêmes étapes ont fonctionné pour l'entrée de fichier XML, l'entrée de fichier Excel et l'entrée de fichier CVS. Cependant, cela ne fonctionne pas pour les fichiers JSON. En outre, vous avez suggéré d'utiliser Javascript au lieu de Metadata Injection. Peut-on modifier les noms 'clés' (Note: pas les valeurs) dans une chaîne JSON? Si c'est le cas, ce serait bien si vous fournissez l'exemple de code Javascript pour le faire. –
> "Vous dites" les noms des champs de métadonnées sont spécifiés par l'utilisateur ", comment cela se fait-il: avez-vous un dictionnaire sur un fichier? Un fichier csv à deux colonnes?" Oui, j'ai passé le dictionnaire sur un fichier XLSX en tant qu'entrées de métadonnées. –