2017-08-28 3 views
1

Je génère mon script usql de façon dynamique en lisant un schéma de table. J'ai des fichiers tsv existants présents sur le magasin de données lac et j'ai besoin d'ajouter les nouvelles données à ces fichiers TSV exsiting. Mais lorsque je génère un script usql, le schéma de table peut être modifié et des colonnes supplémentaires peuvent être ajoutées à la table. Pour autant que je sache, nous devons avoir le même nombre de colonnes dans le script usql que dans le fichier tsv. Est-il possible d'avoir ces colonnes nouvellement ajoutées avec des valeurs par défaut? par exemple. Comme vous pouvez le constater, les colonnes département et emp_id sont nouvellement ajoutées et je veux les insérer dans le fichier de sortie avec des valeurs par défaut. Si des colonnes sont déjà présentes dans le tsv, sélectionnez les valeurs de la colonne sinon insérez des valeurs par défaut pour celles-ci.Colonnes avec des valeurs par défaut - usql

Merci.

Répondre

1

Actuellement, vous ne pouvez pas spécifier de colonnes par défaut dans le schéma d'instruction d'extraction. Les modèles recommandés sont:

  1. Extrait les colonnes de droite de vos versions de TSV (assurez-vous que vous les avez organisé de sorte que vous savez facilement quelles colonnes sont présentes), puis utilisez UNION ALL BY NAME à l'union des ensembles de lignes. Cela va ajouter des colonnes de valeur null/default aux ensembles de lignes qui manquent des colonnes.

  2. Ecrivez un extracteur personnalisé qui prend en argument une SqlMap pour remplir les colonnes manquantes avec la valeur par défaut spécifiée.

+0

Cela fonctionne. Existe-t-il un moyen de gérer un scénario de suppression de colonne? Le fichier tsv existant a 5 colonnes et le nouveau tsv a 4 colonnes. Maintenant, lorsque j'ajoute les données au fichier tsv existant, mon fichier résultant devrait avoir seulement 4 colonnes. – Lokesh

+0

Pouvez-vous poser cette question comme une nouvelle question? Cela le rend plus facile à trouver pour plus tard. –

+1

J'ai obtenu une solution de contournement pour cela. Prendre le jeu de résultats des deux fichiers dans des variables séparées et des UNION EXTÉRIEURES. Ne prendre en compte que les colonnes requises dans la variable résultat final. – Lokesh