0
votes

Sélectionnez Colonnes dans Spark Dataframe basé sur le modèle de nom de colonne

J'ai une étincelle de données avec la structure de colonne suivante: xxx

dans la structure de colonne ci-dessus, je vais obtenir de nouvelles colonnes avec des quartiers ultérieurs tels que 2019 1q, 2019 2Q etc

Je veux sélectionner ut_lvl_17_cd, ut_lvl_17_cd, ut_lvl_20_cd et colonnes qui a le modèle Année Quartier comme 2017 1q . Fondamentalement, je veux éviter de sélectionner des colonnes telles que FY 2017 FY, 2018 FY , et cela doit être dynamique car je vais obtenir de nouvelles données FY chaque année

J'utilise Spark 2.4.4


2 commentaires

Veuillez vous mettre à jour le format de questions correctement


Vous avez un problème de format avec votre message. Il est difficile de comprendre ...


3 Réponses :


0
votes

Vous pouvez utiliser la commande desc SQL pour obtenir la liste des noms de colonnes xxx

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


0 commentaires

2
votes

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]


0 commentaires

0
votes

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(_)) : _*)


0 commentaires