Skip to content

compare

laktory.spark.functions.compare ยค

compare(x, y=0, where=None, operator='==', default=None)

Compare a column x and a value or another column y using operator. Comparison can be limited to where and assigned default elsewhere.

output = x operator y

PARAMETER DESCRIPTION
x

Base column to compare

TYPE: COLUMN_OR_NAME

y

Column to compare to

TYPE: COLUMN_OR_NAME DEFAULT: 0

where

Where to apply the comparison

TYPE: COLUMN_OR_NAME DEFAULT: None

operator

Operator for comparison

TYPE: str DEFAULT: '=='

default

Default value to be applied when where is False

TYPE: COLUMN_OR_NAME DEFAULT: None

RETURNS DESCRIPTION
Column

Comparison result

Examples:

import laktory  # noqa: F401
import pyspark.sql.functions as F

df = spark.createDataFrame([[0.45], [0.55]], ["x"])
df = df.withColumn(
    "y",
    F.laktory.compare(
        "x",
        F.lit(0.5),
        operator=">",
    ),
)
print(df.laktory.show_string())
'''
+----+-----+
|   x|    y|
+----+-----+
|0.45|false|
|0.55| true|
+----+-----+
'''
Source code in laktory/spark/functions/logical.py
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
def compare(
    x: COLUMN_OR_NAME,
    y: COLUMN_OR_NAME = 0,
    where: COLUMN_OR_NAME = None,
    operator: str = "==",
    default: COLUMN_OR_NAME = None,
) -> Column:
    """
    Compare a column `x` and a value or another column `y` using
    `operator`. Comparison can be limited to `where` and assigned
    `default` elsewhere.

    output = `x` `operator` `y`

    Parameters
    ---------
    x :
        Base column to compare
    y :
        Column to compare to
    where:
        Where to apply the comparison
    operator: str
        Operator for comparison
    default:
        Default value to be applied when `where` is `False`

    Returns
    -------
    :
        Comparison result

    Examples
    --------
    ```py
    import laktory  # noqa: F401
    import pyspark.sql.functions as F

    df = spark.createDataFrame([[0.45], [0.55]], ["x"])
    df = df.withColumn(
        "y",
        F.laktory.compare(
            "x",
            F.lit(0.5),
            operator=">",
        ),
    )
    print(df.laktory.show_string())
    '''
    +----+-----+
    |   x|    y|
    +----+-----+
    |0.45|false|
    |0.55| true|
    +----+-----+
    '''
    ```
    """

    x = _col(x)
    y = _col(y)

    if operator == "==":
        c = x == y
    elif operator == "!=":
        c = x != y
    elif operator == "<":
        c = x < y
    elif operator == "<=":
        c = x <= y
    elif operator == ">":
        c = x > y
    elif operator == ">=":
        c = x >= y
    else:
        raise ValueError(f"Operator '{operator}' is not supported.")

    if where is not None:
        where = _col(where)
        if default is None:
            default = F.lit(None)
        else:
            default = _col(default)

        c = F.when(where, c).otherwise(default)

    return c