expr

package
v0.1.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 16, 2025 License: Apache-2.0, MIT Imports: 4 Imported by: 0

Documentation

Overview

Package expr provides expression evaluation for DataFrame operations

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type AggregationExpr

type AggregationExpr struct {
	// contains filtered or unexported fields
}

AggregationExpr represents an aggregation function over a column

func Count

func Count(column Expr) *AggregationExpr

Count creates a count aggregation expression

func Max

func Max(column Expr) *AggregationExpr

Max creates a max aggregation expression

func Mean

func Mean(column Expr) *AggregationExpr

Mean creates a mean aggregation expression

func Min

func Min(column Expr) *AggregationExpr

Min creates a min aggregation expression

func Sum

func Sum(column Expr) *AggregationExpr

Sum creates a sum aggregation expression

func (*AggregationExpr) AggType

func (a *AggregationExpr) AggType() AggregationType

func (*AggregationExpr) Alias

func (a *AggregationExpr) Alias() string

func (*AggregationExpr) As

func (a *AggregationExpr) As(alias string) *AggregationExpr

As sets an alias for the aggregation expression

func (*AggregationExpr) Column

func (a *AggregationExpr) Column() Expr

func (*AggregationExpr) String

func (a *AggregationExpr) String() string

func (*AggregationExpr) Type

func (a *AggregationExpr) Type() ExprType

type AggregationType

type AggregationType int

AggregationType represents the type of aggregation function

const (
	AggSum AggregationType = iota
	AggCount
	AggMean
	AggMin
	AggMax
)

type BinaryExpr

type BinaryExpr struct {
	// contains filtered or unexported fields
}

BinaryExpr represents a binary operation

func (*BinaryExpr) Abs

func (b *BinaryExpr) Abs() *FunctionExpr

Abs creates an absolute value function expression

func (*BinaryExpr) Add

func (b *BinaryExpr) Add(other Expr) *BinaryExpr

Add creates an addition expression

func (*BinaryExpr) And

func (b *BinaryExpr) And(other Expr) *BinaryExpr

And creates a logical AND expression

func (*BinaryExpr) Ceil

func (b *BinaryExpr) Ceil() *FunctionExpr

Ceil creates a ceil function expression

func (*BinaryExpr) Cos

func (b *BinaryExpr) Cos() *FunctionExpr

Cos creates a cosine function expression

func (*BinaryExpr) Div

func (b *BinaryExpr) Div(other Expr) *BinaryExpr

Div creates a division expression

func (*BinaryExpr) Floor

func (b *BinaryExpr) Floor() *FunctionExpr

Floor creates a floor function expression

func (*BinaryExpr) Left

func (b *BinaryExpr) Left() Expr

func (*BinaryExpr) Log

func (b *BinaryExpr) Log() *FunctionExpr

Log creates a natural logarithm function expression

func (*BinaryExpr) Mul

func (b *BinaryExpr) Mul(other Expr) *BinaryExpr

Mul creates a multiplication expression

func (*BinaryExpr) Op

func (b *BinaryExpr) Op() BinaryOp

func (*BinaryExpr) Or

func (b *BinaryExpr) Or(other Expr) *BinaryExpr

Or creates a logical OR expression

func (*BinaryExpr) Right

func (b *BinaryExpr) Right() Expr

func (*BinaryExpr) Round

func (b *BinaryExpr) Round() *FunctionExpr

Round creates a round function expression

func (*BinaryExpr) RoundTo

func (b *BinaryExpr) RoundTo(precision Expr) *FunctionExpr

RoundTo creates a round function expression with precision

func (*BinaryExpr) Sin

func (b *BinaryExpr) Sin() *FunctionExpr

Sin creates a sine function expression

func (*BinaryExpr) Sqrt

func (b *BinaryExpr) Sqrt() *FunctionExpr

Sqrt creates a square root function expression

func (*BinaryExpr) String

func (b *BinaryExpr) String() string

func (*BinaryExpr) Sub

func (b *BinaryExpr) Sub(other Expr) *BinaryExpr

Sub creates a subtraction expression

func (*BinaryExpr) Type

func (b *BinaryExpr) Type() ExprType

type BinaryOp

type BinaryOp int

BinaryOp represents binary operations

const (
	OpAdd BinaryOp = iota
	OpSub
	OpMul
	OpDiv
	OpEq
	OpNe
	OpLt
	OpLe
	OpGt
	OpGe
	OpAnd
	OpOr
)

type CaseExpr

type CaseExpr struct {
	// contains filtered or unexported fields
}

CaseExpr represents a CASE expression with multiple WHEN clauses

func Case

func Case() *CaseExpr

Case creates a new CASE expression

func (*CaseExpr) Else

func (c *CaseExpr) Else(value Expr) *CaseExpr

Else sets the default value for the case expression

func (*CaseExpr) ElseValue

func (c *CaseExpr) ElseValue() Expr

func (*CaseExpr) String

func (c *CaseExpr) String() string

func (*CaseExpr) Type

func (c *CaseExpr) Type() ExprType

func (*CaseExpr) When

func (c *CaseExpr) When(condition, value Expr) *CaseExpr

When adds a condition-value pair to the case expression

func (*CaseExpr) Whens

func (c *CaseExpr) Whens() []CaseWhen

type CaseWhen

type CaseWhen struct {
	// contains filtered or unexported fields
}

CaseWhen represents a condition and value pair in CASE expression

type ColumnExpr

type ColumnExpr struct {
	// contains filtered or unexported fields
}

ColumnExpr represents a column reference

func Col

func Col(name string) *ColumnExpr

Col creates a column expression

func (*ColumnExpr) Abs

func (c *ColumnExpr) Abs() *FunctionExpr

Abs creates an absolute value function expression

func (*ColumnExpr) Add

func (c *ColumnExpr) Add(other Expr) *BinaryExpr

Add creates an addition expression

func (*ColumnExpr) CastToBool

func (c *ColumnExpr) CastToBool() *FunctionExpr

CastToBool creates a cast to bool function expression

func (*ColumnExpr) CastToFloat64

func (c *ColumnExpr) CastToFloat64() *FunctionExpr

CastToFloat64 creates a cast to float64 function expression

func (*ColumnExpr) CastToInt64

func (c *ColumnExpr) CastToInt64() *FunctionExpr

CastToInt64 creates a cast to int64 function expression

func (*ColumnExpr) CastToString

func (c *ColumnExpr) CastToString() *FunctionExpr

CastToString creates a cast to string function expression

func (*ColumnExpr) Ceil

func (c *ColumnExpr) Ceil() *FunctionExpr

Ceil creates a ceil function expression

func (*ColumnExpr) Cos

func (c *ColumnExpr) Cos() *FunctionExpr

Cos creates a cosine function expression

func (*ColumnExpr) Count

func (c *ColumnExpr) Count() *AggregationExpr

Count creates a count aggregation of this column

func (*ColumnExpr) Div

func (c *ColumnExpr) Div(other Expr) *BinaryExpr

Div creates a division expression

func (*ColumnExpr) Eq

func (c *ColumnExpr) Eq(other Expr) *BinaryExpr

Eq creates an equality expression

func (*ColumnExpr) Floor

func (c *ColumnExpr) Floor() *FunctionExpr

Floor creates a floor function expression

func (*ColumnExpr) Ge

func (c *ColumnExpr) Ge(other Expr) *BinaryExpr

Ge creates a greater-than-or-equal expression

func (*ColumnExpr) Gt

func (c *ColumnExpr) Gt(other Expr) *BinaryExpr

Gt creates a greater-than expression

func (*ColumnExpr) Le

func (c *ColumnExpr) Le(other Expr) *BinaryExpr

Le creates a less-than-or-equal expression

func (*ColumnExpr) Length

func (c *ColumnExpr) Length() *FunctionExpr

Length creates a LENGTH function expression

func (*ColumnExpr) Log

func (c *ColumnExpr) Log() *FunctionExpr

Log creates a natural logarithm function expression

func (*ColumnExpr) Lower

func (c *ColumnExpr) Lower() *FunctionExpr

Lower creates a LOWER function expression

func (*ColumnExpr) Lt

func (c *ColumnExpr) Lt(other Expr) *BinaryExpr

Lt creates a less-than expression

func (*ColumnExpr) Max

func (c *ColumnExpr) Max() *AggregationExpr

Max creates a max aggregation of this column

func (*ColumnExpr) Mean

func (c *ColumnExpr) Mean() *AggregationExpr

Mean creates a mean aggregation of this column

func (*ColumnExpr) Min

func (c *ColumnExpr) Min() *AggregationExpr

Min creates a min aggregation of this column

func (*ColumnExpr) Mul

func (c *ColumnExpr) Mul(other Expr) *BinaryExpr

Mul creates a multiplication expression

func (*ColumnExpr) Name

func (c *ColumnExpr) Name() string

func (*ColumnExpr) Ne

func (c *ColumnExpr) Ne(other Expr) *BinaryExpr

Ne creates a not-equal expression

func (*ColumnExpr) Neg

func (c *ColumnExpr) Neg() *UnaryExpr

Neg creates a negation (unary minus) expression

func (*ColumnExpr) Not

func (c *ColumnExpr) Not() *UnaryExpr

Not creates a logical NOT expression

func (*ColumnExpr) Round

func (c *ColumnExpr) Round() *FunctionExpr

Round creates a round function expression

func (*ColumnExpr) RoundTo

func (c *ColumnExpr) RoundTo(precision Expr) *FunctionExpr

RoundTo creates a round function expression with precision

func (*ColumnExpr) Sin

func (c *ColumnExpr) Sin() *FunctionExpr

Sin creates a sine function expression

func (*ColumnExpr) Sqrt

func (c *ColumnExpr) Sqrt() *FunctionExpr

Sqrt creates a square root function expression

func (*ColumnExpr) String

func (c *ColumnExpr) String() string

func (*ColumnExpr) Sub

func (c *ColumnExpr) Sub(other Expr) *BinaryExpr

Sub creates a subtraction expression

func (*ColumnExpr) Substring

func (c *ColumnExpr) Substring(start, length Expr) *FunctionExpr

Substring creates a SUBSTRING function expression

func (*ColumnExpr) Sum

func (c *ColumnExpr) Sum() *AggregationExpr

Sum creates a sum aggregation of this column

func (*ColumnExpr) Trim

func (c *ColumnExpr) Trim() *FunctionExpr

Trim creates a TRIM function expression

func (*ColumnExpr) Type

func (c *ColumnExpr) Type() ExprType

func (*ColumnExpr) Upper

func (c *ColumnExpr) Upper() *FunctionExpr

Upper creates an UPPER function expression

type Evaluator

type Evaluator struct {
	// contains filtered or unexported fields
}

Evaluator evaluates expressions against Arrow arrays

func NewEvaluator

func NewEvaluator(mem memory.Allocator) *Evaluator

NewEvaluator creates a new expression evaluator

func (*Evaluator) Evaluate

func (e *Evaluator) Evaluate(expr Expr, columns map[string]arrow.Array) (arrow.Array, error)

Evaluate evaluates an expression that returns a value array (numeric, string, etc.)

func (*Evaluator) EvaluateBoolean

func (e *Evaluator) EvaluateBoolean(expr Expr, columns map[string]arrow.Array) (arrow.Array, error)

EvaluateBoolean evaluates an expression that should return a boolean array

type Expr

type Expr interface {
	Type() ExprType
	String() string
}

Expr represents an expression that can be evaluated lazily

type ExprType

type ExprType int

ExprType represents the type of expression

const (
	ExprColumn ExprType = iota
	ExprLiteral
	ExprBinary
	ExprUnary
	ExprFunction
	ExprAggregation
	ExprCase
	ExprInvalid
)

type FunctionExpr

type FunctionExpr struct {
	// contains filtered or unexported fields
}

FunctionExpr represents a function call expression

func Coalesce

func Coalesce(exprs ...Expr) *FunctionExpr

Coalesce creates a COALESCE function expression

func Concat

func Concat(exprs ...Expr) *FunctionExpr

Concat creates a CONCAT function expression

func If

func If(condition, thenValue, elseValue Expr) *FunctionExpr

If creates an IF function expression

func (*FunctionExpr) Abs

func (f *FunctionExpr) Abs() *FunctionExpr

Abs creates an absolute value function expression

func (*FunctionExpr) Add

func (f *FunctionExpr) Add(other Expr) *BinaryExpr

Add creates an addition expression for function expressions

func (*FunctionExpr) And

func (f *FunctionExpr) And(other Expr) *BinaryExpr

func (*FunctionExpr) Args

func (f *FunctionExpr) Args() []Expr

func (*FunctionExpr) CastToBool

func (f *FunctionExpr) CastToBool() *FunctionExpr

func (*FunctionExpr) CastToFloat64

func (f *FunctionExpr) CastToFloat64() *FunctionExpr

func (*FunctionExpr) CastToInt64

func (f *FunctionExpr) CastToInt64() *FunctionExpr

func (*FunctionExpr) CastToString

func (f *FunctionExpr) CastToString() *FunctionExpr

CastToString creates a string casting function expression

func (*FunctionExpr) Ceil

func (f *FunctionExpr) Ceil() *FunctionExpr

func (*FunctionExpr) Cos

func (f *FunctionExpr) Cos() *FunctionExpr

func (*FunctionExpr) Div

func (f *FunctionExpr) Div(other Expr) *BinaryExpr

func (*FunctionExpr) Eq

func (f *FunctionExpr) Eq(other Expr) *BinaryExpr

func (*FunctionExpr) Floor

func (f *FunctionExpr) Floor() *FunctionExpr

func (*FunctionExpr) Ge

func (f *FunctionExpr) Ge(other Expr) *BinaryExpr

func (*FunctionExpr) Gt

func (f *FunctionExpr) Gt(other Expr) *BinaryExpr

func (*FunctionExpr) Le

func (f *FunctionExpr) Le(other Expr) *BinaryExpr

func (*FunctionExpr) Length

func (f *FunctionExpr) Length() *FunctionExpr

func (*FunctionExpr) Log

func (f *FunctionExpr) Log() *FunctionExpr

func (*FunctionExpr) Lower

func (f *FunctionExpr) Lower() *FunctionExpr

func (*FunctionExpr) Lt

func (f *FunctionExpr) Lt(other Expr) *BinaryExpr

func (*FunctionExpr) Mul

func (f *FunctionExpr) Mul(other Expr) *BinaryExpr

func (*FunctionExpr) Name

func (f *FunctionExpr) Name() string

func (*FunctionExpr) Ne

func (f *FunctionExpr) Ne(other Expr) *BinaryExpr

func (*FunctionExpr) Neg

func (f *FunctionExpr) Neg() *UnaryExpr

Neg creates a negation expression for function expressions

func (*FunctionExpr) Not

func (f *FunctionExpr) Not() *UnaryExpr

func (*FunctionExpr) Or

func (f *FunctionExpr) Or(other Expr) *BinaryExpr

func (*FunctionExpr) Round

func (f *FunctionExpr) Round() *FunctionExpr

func (*FunctionExpr) RoundTo

func (f *FunctionExpr) RoundTo(precision Expr) *FunctionExpr

func (*FunctionExpr) Sin

func (f *FunctionExpr) Sin() *FunctionExpr

func (*FunctionExpr) Sqrt

func (f *FunctionExpr) Sqrt() *FunctionExpr

func (*FunctionExpr) String

func (f *FunctionExpr) String() string

func (*FunctionExpr) Sub

func (f *FunctionExpr) Sub(other Expr) *BinaryExpr

func (*FunctionExpr) Substring

func (f *FunctionExpr) Substring(start, length Expr) *FunctionExpr

func (*FunctionExpr) Trim

func (f *FunctionExpr) Trim() *FunctionExpr

func (*FunctionExpr) Type

func (f *FunctionExpr) Type() ExprType

func (*FunctionExpr) Upper

func (f *FunctionExpr) Upper() *FunctionExpr

Upper creates an uppercase function expression

type InvalidExpr

type InvalidExpr struct {
	// contains filtered or unexported fields
}

InvalidExpr represents an invalid expression with an error message

func Invalid

func Invalid(message string) *InvalidExpr

Invalid creates an invalid expression with an error message

func (*InvalidExpr) Message

func (i *InvalidExpr) Message() string

func (*InvalidExpr) String

func (i *InvalidExpr) String() string

func (*InvalidExpr) Type

func (i *InvalidExpr) Type() ExprType

type LiteralExpr

type LiteralExpr struct {
	// contains filtered or unexported fields
}

LiteralExpr represents a literal value

func Lit

func Lit(value interface{}) *LiteralExpr

Lit creates a literal expression

func (*LiteralExpr) String

func (l *LiteralExpr) String() string

func (*LiteralExpr) Type

func (l *LiteralExpr) Type() ExprType

func (*LiteralExpr) Value

func (l *LiteralExpr) Value() interface{}

type UnaryExpr

type UnaryExpr struct {
	// contains filtered or unexported fields
}

UnaryExpr represents a unary operation

func (*UnaryExpr) Op

func (u *UnaryExpr) Op() UnaryOp

func (*UnaryExpr) Operand

func (u *UnaryExpr) Operand() Expr

func (*UnaryExpr) String

func (u *UnaryExpr) String() string

func (*UnaryExpr) Type

func (u *UnaryExpr) Type() ExprType

type UnaryOp

type UnaryOp int

UnaryOp represents unary operations

const (
	UnaryNeg UnaryOp = iota
	UnaryNot
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL