J'ai une étincelle de données avec la structure de colonne suivante: dans la structure de colonne ci-dessus, je vais obtenir de nouvelles colonnes avec des quartiers ultérieurs tels que Je veux sélectionner J'utilise Spark 2.4.4 p> p> 2019 1q, 2019 2Q Code> etc p>
ut_lvl_17_cd, ut_lvl_17_cd, ut_lvl_20_cd code> et colonnes qui a le modèle
Année
2017 1q code>.
Fondamentalement, je veux éviter de sélectionner des colonnes telles que
FY 2017 FY, 2018 FY CODE>, et cela doit être dynamique car je vais obtenir de nouvelles données FY chaque année p>
3 Réponses :
Vous pouvez utiliser la commande desc SQL pour obtenir la liste des noms de colonnes Utiliser ci-dessus extrait pour obtenir une liste de nom de colonne qui contient "FY"
Vous pouvez mettre à jour la logique de filtrage avec regex et mettre à jour la logique dans la version foreach pour stocker des colonnes de chaîne p> p>
Comme je l'ai dit dans mon commentaire, cela peut être fait avec une bronde forte> Scala fort> à l'aide de Regex code> puisque le
Dataframe code> peut renvoyer les noms de colonnes comme un SEQ [String] CODE>:
scala> df.select(selection.head, selection.tail : _*)
// res3: org.apache.spark.sql.DataFrame = [UT_LVL_17_CD: int, UT_LVL_20_CD: int ... 8 more fields]
Vous pouvez essayer cet extrait. En supposant que le DF est votre Dataframe qui consiste en toutes ces colonnes.
var DF1 = DF.select(DF.columns.filter(x => !columns.contains("FY")).map(DF(_)) : _*)
Veuillez vous mettre à jour le format de questions correctement
Vous avez un problème de format avec votre message. Il est difficile de comprendre ...