我正在尝试获取表中某一列的唯一值,并将其与其他列(例如总和、表名)一起打印,如下面的查询所示。 下面显示的子查询正在获取有效的多行,但为了将其放入列中,我需要将其展平为列表或文本,例如 [1,2,1]。如何将这些数据展平以适合相同的查询,如下所示。我的首选方法是使用 Spark SQL。请帮忙。
**Subquery**
(select distinct $field from tablename)
**Actual Code**
RDDdf.createOrReplaceTempView(“tablename”)
val x= RDDdf.schema.fieldNames
val dfs = x.map(field => spark.sql(s"select 'RDDdf' as TableName,
'$field'as column, sum($field) as Sum, (select distinct $field from
tablename) from tablename"))
**Expected output**
TableName | column | Sum | UniqueVal
----------+---------+-----+----------
RDDdf | a | 4 | 1,2,1
最佳答案
使用内置函数collect_list:
select collect_list(value) from (select distinct($field) as value from tablename) as values
请注意,这在大型数据集上会非常慢
关于scala - 展平 Spark SQL 查询中的数据 - Spark Dataframe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45201960/