API
Docs

Get

Function to get the value of a given field from a struct.

Parameters

field:str

The name of the field that needs to be obtained from the struct. Note that this must be a literal string, not an expression.

1from fennel.expr import col
2from fennel.dtypes import struct
3
4@struct
5class MyStruct:
6    f1: int
7    f2: bool
8
9expr = col("x").struct.get("f1")
10assert expr.typeof(schema={"x": MyStruct}) == int
11
12# error to get a field that does not exist
13expr = col("x").struct.get("z")
14with pytest.raises(ValueError):
15    expr.typeof(schema={"x": MyStruct})
16
17# can be evaluated with a dataframe
18df = pd.DataFrame(
19    {
20        "x": [MyStruct(1, True), MyStruct(2, False), None],
21    }
22)
23schema = {"x": Optional[MyStruct]}
24expr = col("x").struct.get("f1")
25assert expr.eval(df, schema=schema).tolist() == [1, 2, pd.NA]
Get a field from a struct

python

Returns

Expr

Returns an expression object denoting the result of the get operation. If the corresponding field in the struct is of type T, the resulting expression is of type T or Optional[T] depending on the struct itself being nullable.

Errors

Use of invalid types:

The struct namespace must be invoked on an expression that evaluates to struct.

Invalid field name:

Compile error is raised when trying to get a field that doesn't exist on the struct.