CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/pypi-ibis-framework

The portable Python dataframe library that provides a unified API for data analysis across 20+ different backends

Pending
Overview
Eval results
Files

expressions.mddocs/

Expression Building and Computation

Fundamental expression building blocks for creating scalar values, arrays, structs, and complex computations.

Capabilities

Literal Values

Create literal expressions from Python values.

def literal(value, type=None):
    """
    Create a literal expression.
    
    Parameters:
    - value: Python value (int, float, str, bool, None, etc.)
    - type: optional DataType to cast to
    
    Returns:
    Scalar expression
    """

def null(type=None):
    """
    Create a null literal.
    
    Parameters:
    - type: optional DataType for the null value
    
    Returns:
    Null scalar expression
    """

Usage Examples:

import ibis

# Basic literals
num = ibis.literal(42)
text = ibis.literal('hello')
flag = ibis.literal(True)
nothing = ibis.null()

# Typed null
typed_null = ibis.null('string')

Collection Literals

Create array, map, and struct literal expressions.

def array(values, type=None):
    """
    Create an array literal.
    
    Parameters:
    - values: list of values or expressions
    - type: optional array DataType
    
    Returns:
    Array expression
    """

def map(keys, values):
    """
    Create a map literal.
    
    Parameters:
    - keys: list of key values/expressions
    - values: list of value values/expressions
    
    Returns:
    Map expression
    """

def struct(mapping):
    """
    Create a struct literal.
    
    Parameters:
    - mapping: dict of field_name -> value/expression
    
    Returns:
    Struct expression
    """

Usage Examples:

# Array of numbers
arr = ibis.array([1, 2, 3, 4])

# Map literal
mapping = ibis.map(['a', 'b'], [1, 2])

# Struct literal
person = ibis.struct({
    'name': 'Alice',
    'age': 30,
    'active': True
})

Parameters

Create parameter placeholders for query templates.

def param(type):
    """
    Create a parameter placeholder.
    
    Parameters:
    - type: DataType or type string
    
    Returns:
    Parameter scalar expression
    """

Usage Example:

# Create parameterized query
age_param = ibis.param('int64')
result = table.filter(table.age > age_param)

# Execute with parameter value
executed = result.execute(params={age_param: 25})

Conditional Expressions

Build conditional logic with case statements and if-else expressions.

def case():
    """
    DEPRECATED: Use ibis.cases() instead.
    Create a case expression builder.
    
    Returns:
    Case expression builder with when() and else_() methods
    """

def cases(branch, *branches, else_=None):
    """
    Create multi-branch if-else expression (SQL CASE statement).
    
    Parameters:
    - branch: tuple of (condition, result) - first required pair
    - *branches: additional (condition, result) tuples
    - else_: default value if no conditions match (defaults to NULL)
    
    Returns:
    Case expression
    """

def ifelse(condition, true_expr, false_expr):
    """
    Simple if-else expression.
    
    Parameters:
    - condition: boolean expression
    - true_expr: value when condition is true
    - false_expr: value when condition is false
    
    Returns:
    Conditional expression
    """

Usage Examples:

# Case expression
grade = (
    ibis.case()
    .when(table.score >= 90, 'A')
    .when(table.score >= 80, 'B') 
    .when(table.score >= 70, 'C')
    .else_('F')
)

# Cases from tuples
grade = ibis.cases(
    (table.score >= 90, 'A'),
    (table.score >= 80, 'B'),
    (table.score >= 70, 'C'),
    else_='F'
)

# Simple if-else
status = ibis.ifelse(table.age >= 18, 'adult', 'minor')

Null Handling

Functions for working with null values.

def coalesce(*exprs):
    """
    Return first non-null expression.
    
    Parameters:
    - *exprs: expressions to check
    
    Returns:
    First non-null expression
    """

def greatest(*exprs):
    """
    Return greatest value among expressions.
    
    Parameters:
    - *exprs: expressions to compare
    
    Returns:
    Greatest value expression
    """

def least(*exprs):
    """
    Return least value among expressions.
    
    Parameters:
    - *exprs: expressions to compare
    
    Returns:
    Least value expression
    """

Usage Examples:

# Coalesce null values
result = ibis.coalesce(table.phone, table.mobile, 'N/A')

# Min/max across columns
max_val = ibis.greatest(table.x, table.y, table.z)
min_val = ibis.least(table.x, table.y, table.z)

Logical Operations

Boolean logic operations for combining conditions.

def and_(*predicates):
    """
    Logical AND of boolean expressions.
    
    Parameters:
    - *predicates: boolean value expressions
    
    Returns:
    Boolean expression representing AND of all predicates
    """

def or_(*predicates):
    """
    Logical OR of boolean expressions.
    
    Parameters:
    - *predicates: boolean value expressions
    
    Returns:
    Boolean expression representing OR of all predicates  
    """

Usage Examples:

# Complex conditions
condition = ibis.and_(
    table.age >= 18,
    table.status == 'active',
    table.balance > 0
)

alternative = ibis.or_(
    table.vip == True,
    table.years_member > 5
)

Deferred Expressions

Use deferred expression builder for complex transformations.

_ = Deferred()  # Deferred expression builder

deferred = _  # Alias for the deferred builder (same as _)

Usage Examples:

from ibis import _

# Use in aggregations
result = (
    table
    .group_by(_.department)
    .aggregate(avg_salary=_.salary.mean())
)

# Use in selections
result = table.select(
    _.name,
    age_next_year=_.age + 1,
    is_senior=_.age > 50
)

Random Values

Generate random values and UUIDs.

def random():
    """
    Generate random number between 0 and 1.
    
    Returns:
    Random float expression
    """

def uuid():
    """
    Generate UUID string.
    
    Returns:
    UUID string expression
    """

Usage Examples:

# Add random column
result = table.mutate(
    random_value=ibis.random(),
    id=ibis.uuid()
)

Mathematical Constants

Pre-defined mathematical constants.

e: Scalar  # Mathematical constant e (2.718...)
pi: Scalar  # Mathematical constant π (3.14159...)

Usage Example:

# Use constants in calculations
area = ibis.pi * table.radius ** 2
exponential = ibis.e ** table.x

Install with Tessl CLI

npx tessl i tessl/pypi-ibis-framework

docs

aggregation-windows.md

backends.md

configuration.md

expressions.md

index.md

selectors.md

sql-integration.md

table-construction.md

table-operations.md

temporal.md

udfs.md

tile.json