Class

com.github.mrpowers.spark.daria.sql.ColumnExt

ColumnMethods

Related Doc: package ColumnExt

Permalink

implicit class ColumnMethods extends AnyRef

Linear Supertypes
AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ColumnMethods
  2. AnyRef
  3. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new ColumnMethods(col: Column)

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def chain(colMethod: (Column) ⇒ Column): Column

    Permalink

    Chains column functions //The chain method takes a org.apache.spark.sql.functions function as an argument and can be used as follows:

    Chains column functions //The chain method takes a org.apache.spark.sql.functions function as an argument and can be used as follows:

    val wordsDf = Seq(
      ("Batman  "),
      ("  CATWOMAN"),
      (" pikachu ")
    ).toDF("word")
    
    val actualDf = wordsDf.withColumn(
       "cleaned_word",
       col("word").chain(lower).chain(trim)
    )
    
    actualDf.show()
    +----------+------------+
    |      word|cleaned_word|
    +----------+------------+
    |  Batman  |      batman|
    |  CATWOMAN|    catwoman|
    |  pikachu |     pikachu|
    +----------+------------+
  6. def chainUDF(udfName: String, cols: Column*): Column

    Permalink

    Chains UDFs

    Chains UDFs

    def appendZ(s: String): String = {
      s + "Z"
    }
    
    spark.udf.register("appendZUdf", appendZ _)
    
    def prependA(s: String): String = {
      "A" + s
    }
    
    spark.udf.register("prependAUdf", prependA _)
    
    val hobbiesDf = Seq(
      ("dance"),
      ("sing")
    ).toDF("word")
    
    val actualDf = hobbiesDf.withColumn(
      "fun",
      col("word").chainUDF("appendZUdf").chainUDF("prependAUdf")
    )
    
    actualDf.show()
    +-----+-------+
    | word|    fun|
    +-----+-------+
    |dance|AdanceZ|
    | sing| AsingZ|
    +-----+-------+
  7. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  10. def evalString(): String

    Permalink
  11. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  12. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  13. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  14. def isFalse: Column

    Permalink

    Returns true if the col is false Returns false if the current expression is false

  15. def isFalsy: Column

    Permalink

    Returns true if the col is false or null isFalsy returns true if a column is null or false and false otherwise.

    Returns true if the col is false or null isFalsy returns true if a column is null or false and false otherwise.

    Suppose you start with the following sourceDF:

    +------+
    |is_fun|
    +------+
    |  true|
    | false|
    |  null|
    +------+

    Run the isFalsy method:

    val actualDF = sourceDF.withColumn("is_fun_falsy", col("is_fun").isFalsy)

    Here are the contents of actualDF:

    +------+------------+
    |is_fun|is_fun_falsy|
    +------+------------+
    |  true|       false|
    | false|        true|
    |  null|        true|
    +------+------------+
  16. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  17. def isNotIn(list: Any*): Column

    Permalink

    Returns true if the col is not in a list of elements The isNotIn method returns true if a column element is not in a list and false otherwise.

    Returns true if the col is not in a list of elements The isNotIn method returns true if a column element is not in a list and false otherwise. It's the opposite of the isin method.

    Suppose you start with the following sourceDF:

    +-----+
    |stuff|
    +-----+
    |  dog|
    |shoes|
    |laces|
    | null|
    +-----+

    Run the isNotIn method:

    val footwearRelated = Seq("laces", "shoes")
    
    val actualDF = sourceDF.withColumn(
      "is_not_footwear_related",
      col("stuff").isNotIn(footwearRelated: _*)
    )

    Here are the contents of actualDF:

    +-----+-----------------------+
    |stuff|is_not_footwear_related|
    +-----+-----------------------+
    |  dog|                   true|
    |shoes|                  false|
    |laces|                  false|
    | null|                   null|
    +-----+-----------------------+
  18. def isNotNullOrBlank: Column

    Permalink

    Returns true if the col is not null or a blank string

    Returns true if the col is not null or a blank string

    The isNotNullOrBlank method returns true if a column is not null or blank and false otherwise. Suppose you start with the following sourceDF:

    +-------------+ |employee_name| +-------------+ | John| | null| | ""| | " "| +-------------+

    Run the isNotNullOrBlank method:

    val actualDF = sourceDF.withColumn(
      "employee_name_is_not_null_or_blank",
      col("employee_name").isNotNullOrBlank
    )

    Here are the contents of actualDF:

    +-------------+----------------------------------+ |employee_name|employee_name_is_not_null_or_blank| +-------------+----------------------------------+ | John| true| | null| false| | ""| false| | " "| false| +-------------+----------------------------------+

  19. def isNullOrBlank: Column

    Permalink

    Returns true if the col is null or a blank string The isNullOrBlank method returns true if a column is null or blank and false otherwise.

    Returns true if the col is null or a blank string The isNullOrBlank method returns true if a column is null or blank and false otherwise.

    Suppose you start with the following sourceDF:

    +-----------+
    |animal_type|
    +-----------+
    |        dog|
    |       null|
    |         ""|
    |     "    "|
    +-----------+

    Run the isNullOrBlank method:

    val actualDF = sourceDF.withColumn(
    "animal_type_is_null_or_blank",
    col("animal_type").isNullOrBlank
    )

    Here are the contents of actualDF:

    +-----------+----------------------------+
    |animal_type|animal_type_is_null_or_blank|
    +-----------+----------------------------+
    |        dog|                       false|
    |       null|                        true|
    |         ""|                        true|
    |     "    "|                        true|
    +-----------+----------------------------+
  20. def isTrue: Column

    Permalink

    Returns true if the current expression is true Returns false if the current expression is null

  21. def isTruthy: Column

    Permalink

    Returns true if the col is not false or null isTruthy returns false if a column is null or false and true otherwise.

    Returns true if the col is not false or null isTruthy returns false if a column is null or false and true otherwise.

    Suppose you start with the following sourceDF:

    +------+
    |is_fun|
    +------+
    |  true|
    | false|
    |  null|
    +------+

    Run the isTruthy method:

    val actualDF = sourceDF.withColumn("is_fun_truthy", col("is_fun").isTruthy)

    Here are the contents of actualDF:

    +------+-------------+
    |is_fun|is_fun_truthy|
    +------+-------------+
    |  true|         true|
    | false|        false|
    |  null|        false|
    +------+-------------+
  22. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  23. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  24. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  25. def nullBetween(lowerCol: Column, upperCol: Column): Column

    Permalink

    Like between, but geq when upper bound is null and leq when lower bound is null The built in between doesn't work well when one of the bounds is undefined.

    Like between, but geq when upper bound is null and leq when lower bound is null The built in between doesn't work well when one of the bounds is undefined. nullBetween is more useful when you have "less than or equal to" or "greater than or equal to" logic embedded in your upper and lower bounds. For example, if the lower bound is null and the upper bound is 15, nullBetween will interpret that as "all values below 15".

    Let's compare the between and nullBetween methods with a code snipped and the outputted DataFrame.

    val actualDF = sourceDF.withColumn(
      "between",
      col("age").between(col("lower_bound"), col("upper_bound"))
    ).withColumn(
      "nullBetween",
      col("age").nullBetween(col("lower_bound"), col("upper_bound"))
    )
    +-----------+-----------+---+-------+-----------+
    |lower_bound|upper_bound|age|between|nullBetween|
    +-----------+-----------+---+-------+-----------+
    |         10|         15| 11|   true|       true|
    |         17|       null| 94|   null|       true|
    |       null|         10|  5|   null|       true|
    +-----------+-----------+---+-------+-----------+
  26. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  27. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  28. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  29. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  30. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Expression operators

Support functions for DataFrames