[SparkSQL] Count Distinct issue

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

[SparkSQL] Count Distinct issue

Daniele Foroni
Hi all,

I am having some troubles in doing a count distinct over multiple columns.
This is an example of my data:
+----+----+----+---+
|a   |b   |c   |d  |
+----+----+----+---+
|null|null|null|1  |
|null|null|null|2  |
|null|null|null|3  |
|null|null|null|4  |
|null|null|null|5  |
|null|null|null|6  |
|null|null|null|7  |
+----+----+----+---+
And my code:
val df: Dataset[Row] = …
val cols: List[Column] = df.columns.map(col).toList
df.agg(countDistinct(cols.head, cols.tail: _*))

So, in the example above, if I count the distinct “rows” I obtain 7 as result as expected (since the “d" column changes for every row).
However, with more columns (16) in EXACTLY the same situation (one incremental column and 15 columns filled with nulls) the result is 0.

I don’t understand why I am experiencing this problem.
Any solution?

Thanks,
---
Daniele


---------------------------------------------------------------------
To unsubscribe e-mail: [hidden email]

Reply | Threaded
Open this post in threaded view
|

Re: [SparkSQL] Count Distinct issue

kathleen li
Hi,
I can't reproduce your issue:

scala> spark.sql("select distinct * from dfv").show()
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---+
|   a|   b|   c|   d|   e|   f|   g|   h|   i|   j|   k|   l|   m|   n|   o|  p|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---+
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  9|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 13|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  2|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  7|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  8|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  3|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  5|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 15|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 12|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 16|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 14|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  4|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  6|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 10|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null| 11|
|null|null|null|null|null|null|null|null|null|null|null|null|null|null|null|  1|
+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+---+


scala> spark.sql("select count(distinct *) from dfv").show()
+--------------------------------------------------------------+
|count(DISTINCT a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p)|
+--------------------------------------------------------------+
|                                                            16|
+--------------------------------------------------------------+
Kathleen

On Fri, Sep 14, 2018 at 11:54 AM Daniele Foroni <[hidden email]> wrote:
Hi all,

I am having some troubles in doing a count distinct over multiple columns.
This is an example of my data:
+----+----+----+---+
|a   |b   |c   |d  |
+----+----+----+---+
|null|null|null|1  |
|null|null|null|2  |
|null|null|null|3  |
|null|null|null|4  |
|null|null|null|5  |
|null|null|null|6  |
|null|null|null|7  |
+----+----+----+---+
And my code:
val df: Dataset[Row] = …
val cols: List[Column] = df.columns.map(col).toList
df.agg(countDistinct(cols.head, cols.tail: _*))

So, in the example above, if I count the distinct “rows” I obtain 7 as result as expected (since the “d" column changes for every row).
However, with more columns (16) in EXACTLY the same situation (one incremental column and 15 columns filled with nulls) the result is 0.

I don’t understand why I am experiencing this problem.
Any solution?

Thanks,
---
Daniele


---------------------------------------------------------------------
To unsubscribe e-mail: [hidden email]