복붙노트

[SQL] 스파크 dataframe 그룹화는 널 (null)을 계산하지 않습니다

SQL

스파크 dataframe 그룹화는 널 (null)을 계산하지 않습니다

I는 카운트 집계 열에 의해 그룹화 스파크 DataFrame있다 :

df.groupBy('a').agg(count("a")).show

+---------+----------------+
|a        |count(a)        |
+---------+----------------+
|     null|               0|
|      -90|           45684|
+---------+----------------+


df.select('a').filter('aisNull').count

보고

warning: there was one feature warning; re-run with -feature for details
res9: Long = 26834

명확하게하는 널 (null) 값이 처음에 계산되지 않았 음을 보여줍니다.

이 동작에 대한 이유는 무엇입니까? 제대로 카운트를보고 (모든 그룹화 결과에 포함 nullat 경우) 내가 예상했을 것이다.

해결법

  1. ==============================

    1.예, 수는 널 값을 계산하지 않습니다 특정 컬럼에 적용. 당신은 널 값을 포함 할 경우, 사용 :

    예, 수는 널 값을 계산하지 않습니다 특정 컬럼에 적용. 당신은 널 값을 포함 할 경우, 사용 :

    df.groupBy('a).agg(count("*")).show
    
  2. ==============================

    2.SQL-92 표준. 특히 (강조 광산)에서 :

    SQL-92 표준. 특히 (강조 광산)에서 :

  3. ==============================

    3.value_counts (dropna이 False =) pyspark의 상당 :

    value_counts (dropna이 False =) pyspark의 상당 :

    from pyspark.sql import functions as f
    df.groupBy('a').agg(f.count('*')).orderBy('count(1)',ascending=False).show()
    
  4. from https://stackoverflow.com/questions/46276219/spark-dataframe-groupping-does-not-count-nulls by cc-by-sa and MIT license