Порядок значений столбца изменяется после выбора столбца из фрейма данных Scala - PullRequest
0 голосов
/ 04 августа 2020

У меня есть требование, по которому я должен получить имя таблицы на основе имени объекта. Например, если entity_nm - «QUOTE_HEADER», он должен вернуть имя таблицы «Q2CODS.QUOTE_HEADER_TSS», а если имя сущности «QUOTE_LINE_ITEMS», он должен вернуть имя таблицы «Q2CODS.QUOTE_LINE_ITEM_TSS»

val srcentity_dstTable = dataFrame.select("ENTITY_NM", "DS_TABLE_NM")
srcentity_dstTable.show(200)

, которые содержат два кадра данных столбцы ENTITY_NM и DS_TABLE_NM

when I select ENTITY_NM column and convert it to a list, the values are not coming in the same order as the above Dataframe.

val srcentity_columns = srcentity_dstTable.select("ENTITY_NM").collect().map(_ (0)).toList
println(srcentity_columns)
val dst_table_names = srcentity_dstTable.select("DS_TABLE_NM").collect().map(_ (0)).toList
println(dst_table_names)
 val mapcols = (srcentity_columns zip dst_table_names)
println(mapcols)

Here the entity_nm list is not coming in the same order as dataframe, instead all the quote_headers are coming first and all the quote_line_items at the end

Пожалуйста, дайте мне знать, почему это переупорядочение происходит для entity_nm только тогда, когда список ds_table_nm идет по порядку, как в DataFrame.

1 Ответ

0 голосов
/ 04 августа 2020

Один из способов - создать новый столбец и собрать этот новый столбец.

Например:

val list =List(("one", "A"), ("two", "A"), ("three", "B"), ("one", "B")).toDF
        
val df = list.toDF("ENTITY_NM", "DS_TABLE_NM")
        
df.show()
        
        +---------+-----------+
        |ENTITY_NM|DS_TABLE_NM|
        +---------+-----------+
        |      one|          A|
        |      two|          A|
        |    three|          B|
        |      one|          B|
        +---------+-----------+
        
 val newDF = df.withColumn(
                "new_column",
                concat($"ENTITY_NM", lit("-"), $"DS_TABLE_NM")
              )

 newDF.show
        +---------+-----------+----------+
        |ENTITY_NM|DS_TABLE_NM|new_column|
        +---------+-----------+----------+
        |      one|          A|     one-A|
        |      two|          A|     two-A|
        |    three|          B|   three-B|
        |      one|          B|     one-B|
        +---------+-----------+----------+
...