表达式求值#
- group expressions
枚举
-
enum class ast_operator : int32_t#
支持的运算符枚举。
值:
-
enumerator ADD#
运算符 +
-
enumerator SUB#
操作符 -
-
enumerator MUL#
操作符 *
-
enumerator DIV#
运算符 / 使用 lhs 和 rhs 的通用类型
-
enumerator TRUE_DIV#
在将类型提升为浮点数后的运算符 /
-
enumerator FLOOR_DIV#
操作符 / 在提升到64位浮点数后,然后对结果进行取整
-
enumerator MOD#
操作符 %
-
enumerator PYMOD#
运算符 % 使用 Python 的负数符号规则
-
enumerator POW#
lhs ^ rhs
-
enumerator EQUAL#
操作符 ==
-
enumerator NULL_EQUAL#
使用Spark规则的operator ==:NULL_EQUAL(null, null) 为真,NULL_EQUAL(null, valid) 为假,且 NULL_EQUAL(valid, valid) == EQUAL(valid, valid)
-
enumerator NOT_EQUAL#
运算符 !=
-
enumerator LESS#
操作符 <
-
enumerator GREATER#
操作符 >
-
enumerator LESS_EQUAL#
运算符 <=
-
enumerator GREATER_EQUAL#
操作符 >=
-
enumerator BITWISE_AND#
运算符 &
-
enumerator BITWISE_OR#
操作符 |
-
enumerator BITWISE_XOR#
运算符 ^
-
enumerator LOGICAL_AND#
运算符 &&
-
enumerator NULL_LOGICAL_AND#
运算符 && 在 Spark 规则下的行为:NULL_LOGICAL_AND(null, null) 为 null,NULL_LOGICAL_AND(null, true) 为 null,NULL_LOGICAL_AND(null, false) 为 false,且 NULL_LOGICAL_AND(valid, valid) == LOGICAL_AND(valid, valid)
-
enumerator LOGICAL_OR#
运算符 ||
-
enumerator NULL_LOGICAL_OR#
操作符 || 在Spark中的规则:NULL_LOGICAL_OR(null, null) 是 null,NULL_LOGICAL_OR(null, true) 是 true,NULL_LOGICAL_OR(null, false) 是 null,以及 NULL_LOGICAL_OR(valid, valid) == LOGICAL_OR(valid, valid)
-
enumerator IDENTITY#
身份函数。
-
enumerator IS_NULL#
检查操作数是否为null。
-
enumerator SIN#
三角正弦。
-
enumerator COS#
三角余弦。
-
enumerator TAN#
三角正切函数。
-
enumerator ARCSIN#
三角正弦反函数。
-
enumerator ARCCOS#
三角余弦反函数。
-
enumerator ARCTAN#
三角正切反函数。
-
enumerator SINH#
双曲正弦。
-
enumerator COSH#
双曲余弦。
-
enumerator TANH#
双曲正切。
-
enumerator ARCSINH#
双曲正弦反函数。
-
enumerator ARCCOSH#
双曲余弦反函数。
-
enumerator ARCTANH#
双曲正切反函数。
-
enumerator EXP#
指数(以e为底,欧拉数)
-
enumerator LOG#
自然对数(以e为底)
-
enumerator SQRT#
平方根 (x^0.5)
-
enumerator CBRT#
立方根 (x^(1.0/3))
-
enumerator CEIL#
不小于arg的最小整数值。
-
enumerator FLOOR#
不大于arg的最大整数值
-
enumerator ABS#
绝对值。
-
enumerator RINT#
将浮点参数 arg 四舍五入为整数值。
-
enumerator BIT_INVERT#
按位非 (~)
-
enumerator NOT#
逻辑非 (!)
-
enumerator CAST_TO_INT64#
将值转换为int64_t。
-
enumerator CAST_TO_UINT64#
将值转换为uint64_t。
-
enumerator CAST_TO_FLOAT64#
将值转换为double类型。
-
enumerator ADD#
-
struct expression#
- #include <expressions.hpp>
一个可以评估以返回值的通用表达式。
该类是“访问者”模式的一部分,与
expression_parser类一起使用。继承自该类的表达式可以接受解析器作为访问者。由 cudf::ast::column_name_reference, cudf::ast::column_reference, cudf::ast::literal, cudf::ast::operation 子类化
公共函数
-
virtual cudf::size_type accept(detail::expression_parser &visitor) const = 0#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
virtual std::reference_wrapper<expression const> accept(detail::expression_transformer &visitor) const = 0#
接受一个访问者类。
- Parameters:
访问者 – 转换此表达式树的
expression_transformer- Returns:
转换表达式的引用包装器
-
inline bool may_evaluate_null(table_view const &left, rmm::cuda_stream_view stream) const#
如果表达式可能评估为null,则返回true。
- Parameters:
left – 表达式的左操作数(与右操作数相同)
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
true如果表达式可能评估为 null,否则为 false
-
virtual bool may_evaluate_null(table_view const &left, table_view const &right, rmm::cuda_stream_view stream) const = 0#
如果表达式可能评估为null,则返回true。
- Parameters:
left – 表达式的左操作数
right – 表达式的右操作数
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
true如果表达式可能评估为 null,否则为 false
-
virtual cudf::size_type accept(detail::expression_parser &visitor) const = 0#
-
class generic_scalar_device_view : public cudf::detail::scalar_device_view_base#
- #include <expressions.hpp>
一种类型擦除的scalar_device_view,其中值是固定宽度类型或字符串。
公共函数
-
template<typename T>
inline T const value() const noexcept# 返回存储的值。
- Template Parameters:
T – 所需的类型
- Returns:
存储的值
-
template<typename T>
inline generic_scalar_device_view(numeric_scalar<T> &s)# 从数值标量构造一个新的通用标量设备视图对象。
- Parameters:
s – 用于构造的数值标量
-
template<typename T>
inline generic_scalar_device_view(timestamp_scalar<T> &s)# 从时间戳标量构造一个新的通用标量设备视图对象。
- Parameters:
s – 用于构造的时间戳标量
-
template<typename T>
inline generic_scalar_device_view(duration_scalar<T> &s)# 从持续时间标量构造一个新的通用标量设备视图对象。
- Parameters:
s – 用于构造的持续时间标量
-
inline generic_scalar_device_view(string_scalar &s)#
从字符串标量构造一个新的通用标量设备视图对象。
- Parameters:
s – 用于构造的字符串标量
-
template<typename T>
-
class literal : public cudf::ast::expression#
- #include <expressions.hpp>
在抽象语法树中使用的字面值。
公共函数
-
template<typename T>
inline literal(cudf::numeric_scalar<T> &value)# 构造一个新的字面量对象。
- Template Parameters:
T – 数值标量模板类型
- Parameters:
value – 一个数值标量值
-
template<typename T>
inline literal(cudf::timestamp_scalar<T> &value)# 构造一个新的字面量对象。
- Template Parameters:
T – 时间戳标量模板类型
- Parameters:
value – 一个时间戳标量值
-
template<typename T>
inline literal(cudf::duration_scalar<T> &value)# 构造一个新的字面量对象。
- Template Parameters:
T – 持续时间标量模板类型
- Parameters:
value – 一个持续时间标量值
-
inline literal(cudf::string_scalar &value)#
构造一个新的字面量对象。
- Parameters:
value – 一个字符串标量值
-
inline generic_scalar_device_view get_value() const#
获取值对象。
- Returns:
设备标量对象
-
virtual cudf::size_type accept(detail::expression_parser &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
virtual std::reference_wrapper<expression const> accept(detail::expression_transformer &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
inline virtual bool may_evaluate_null(table_view const &left, table_view const &right, rmm::cuda_stream_view stream) const override#
如果表达式可能评估为null,则返回true。
- Parameters:
left – 表达式的左操作数
right – 表达式的右操作数
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
true如果表达式可能评估为 null,否则为 false
-
inline bool is_valid(rmm::cuda_stream_view stream) const#
检查基础标量是否有效。
- Parameters:
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
如果基础标量有效,则为 true
-
template<typename T>
-
class column_reference : public cudf::ast::expression#
- #include <expressions.hpp>
一个表达式,引用表中某一列的数据。
公共函数
-
inline column_reference(cudf::size_type column_index, table_reference table_source = table_reference::LEFT)#
构造一个新的列引用对象。
- Parameters:
column_index – 该列在表中的索引(在表达式求值时提供)。
table_source – 在涉及两个表的情况下(例如连接)使用哪个表
-
inline table_reference get_table_source() const#
获取表格源。
- Returns:
table_reference 包含此列的表的引用
-
inline cudf::data_type get_data_type(table_view const &table) const#
获取数据类型。
- Parameters:
table – 用于确定类型的表
- Returns:
列的数据类型
-
inline cudf::data_type get_data_type(table_view const &left_table, table_view const &right_table) const#
获取数据类型。
- Parameters:
left_table – 用于确定类型的左表
right_table – 用于确定类型的右表
- Returns:
列的数据类型
-
virtual cudf::size_type accept(detail::expression_parser &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
virtual std::reference_wrapper<expression const> accept(detail::expression_transformer &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
inline virtual bool may_evaluate_null(table_view const &left, table_view const &right, rmm::cuda_stream_view stream) const override#
如果表达式可能评估为null,则返回true。
- Parameters:
left – 表达式的左操作数
right – 表达式的右操作数
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
true如果表达式可能评估为 null,否则为 false
-
inline column_reference(cudf::size_type column_index, table_reference table_source = table_reference::LEFT)#
-
class operation : public cudf::ast::expression#
- #include <expressions.hpp>
操作表达式包含一个操作符和零个或多个操作数。
公共函数
-
operation(ast_operator op, expression const &input)#
构造一个新的单目操作对象。
- Parameters:
op – 操作符
input – 输入表达式(操作数)
-
operation(ast_operator op, expression const &left, expression const &right)#
构造一个新的二元操作对象。
- Parameters:
op – 操作符
left – 左侧输入表达式(左操作数)
right – 右侧输入表达式(右操作数)
-
inline ast_operator get_operator() const#
获取操作符。
- Returns:
操作符
-
inline std::vector<std::reference_wrapper<expression const>> const &get_operands() const#
获取操作数。
- Returns:
操作数的向量
-
virtual cudf::size_type accept(detail::expression_parser &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
virtual std::reference_wrapper<expression const> accept(detail::expression_transformer &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
inline virtual bool may_evaluate_null(table_view const &left, table_view const &right, rmm::cuda_stream_view stream) const override#
如果表达式可能评估为null,则返回true。
- Parameters:
left – 表达式的左操作数
right – 表达式的右操作数
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
true如果表达式可能评估为 null,否则为 false
-
operation(ast_operator op, expression const &input)#
-
class column_name_reference : public cudf::ast::expression#
- #include <expressions.hpp>
一个表达式,引用表中某一列的数据。
公共函数
-
inline column_name_reference(std::string column_name)#
构造一个新的列名引用对象。
- Parameters:
column_name – 表元数据中此列的名称(在表达式求值时提供)。
-
inline std::string get_column_name() const#
获取列名。
- Returns:
此列引用的名称
-
virtual cudf::size_type accept(detail::expression_parser &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
virtual std::reference_wrapper<expression const> accept(detail::expression_transformer &visitor) const override#
接受一个访问者类。
- Parameters:
visitor – 解析此表达式树的
expression_parser- Returns:
此实例的设备数据参考索引
-
inline virtual bool may_evaluate_null(table_view const &left, table_view const &right, rmm::cuda_stream_view stream) const override#
如果表达式可能评估为null,则返回true。
- Parameters:
left – 表达式的左操作数
right – 表达式的右操作数
stream – 用于设备内存操作和内核启动的CUDA流
- Returns:
true如果表达式可能评估为 null,否则为 false
-
inline column_name_reference(std::string column_name)#
-
class tree#
- #include <expressions.hpp>
一个AST表达式树。它拥有并包含多个依赖的表达式。当树被销毁时,所有的表达式都会被销毁。
公共函数
-
tree() = default#
构造一个空的抽象语法树
-
template<typename Expr, typename ...Args>
inline Expr const &emplace(Args&&... args)# 向AST树添加一个表达式。
- Parameters:
args – 用于构造ast表达式的参数
- Returns:
对添加的表达式的引用
-
template<typename Expr>
inline Expr const &push(Expr expr)# 向AST树添加一个表达式。
- Parameters:
expr – 要添加的AST表达式
- Returns:
对添加的表达式的引用
-
inline expression const &front() const#
获取树中的第一个表达式
- Returns:
第一个插入到树中的表达式
-
inline expression const &back() const#
获取树中的最后一个表达式
- Returns:
插入树的最后一个表达式
-
inline size_t size() const#
获取添加到树中的表达式数量
- Returns:
添加到树中的表达式数量
-
inline expression const &at(size_t index)#
获取树中某个索引处的表达式。索引已检查。
- Parameters:
index – 表达式在抽象语法树(ast)中的索引
- Returns:
指定索引处的表达式
-
inline expression const &operator[](size_t index) const#
获取树中某个索引处的表达式。索引未检查。
- Parameters:
index – 表达式在抽象语法树(ast)中的索引
- Returns:
指定索引处的表达式
-
tree() = default#
-
enum class ast_operator : int32_t#