聚合减少#
- group aggregation_reduction
-
函数
-
std::unique_ptr<scalar> reduce(column_view const &col, reduce_aggregation const &agg, data_type output_dtype, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
计算列中所有行的值的归约。
此函数不会检测归约中的溢出。当
output_dtype与col.type()不匹配时,它们的值可能会提升为int64_t或double以进行计算聚合,然后在返回之前转换为output_dtype。仅支持对非算术类型(例如时间戳或字符串)进行
min和max操作的归约。任何空值在操作中都会被跳过。
如果列为空或包含所有空条目
col.size()==col.null_count(),对于归约类型any,输出标量值将为false,对于归约类型all,输出标量值将为true。对于所有其他归约,输出标量将返回is_valid()==false。如果输入列是算术类型,
output_dtype可以是任何算术类型。如果输入列是非算术类型(例如时间戳或字符串),output_dtype必须与col.type()匹配。如果归约类型是any或all,output_dtype必须是 BOOL8 类型。如果归约失败,输出标量将返回
is_valid()==false。- Throws:
cudf::logic_error – 如果对非算术输出类型调用归约操作,并且操作符不是
min和max。cudf::logic_error – 如果输入列的数据类型无法转换为
output_dtype。cudf::logic_error – 如果调用了
min或max归约操作,并且输出类型与输入列的数据类型不匹配。cudf::logic_error – 如果调用了
any或all缩减操作,并且输出类型不是 BOOL8。cudf::logic_error – 如果调用了
mean、var或std缩减操作,并且output_dtype不是浮点类型。
- Parameters:
col – 输入列视图
agg – 由归约操作应用的聚合运算符
output_dtype – 输出的标量类型
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回标量的设备内存的设备内存资源
- Returns:
输出带有reduce结果的标量
-
std::unique_ptr<scalar> reduce(column_view const &col, reduce_aggregation const &agg, data_type output_dtype, std::optional<std::reference_wrapper<scalar const>> init, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
计算列中所有行的值的缩减,使用初始值。
仅支持
sum、product、min、max、any和all的归约操作。- Throws:
cudf::logic_error – 如果归约操作不是
sum,product,min,max,any, 或all并且指定了init。- Parameters:
col – 输入列视图
agg – 由归约操作应用的聚合运算符
output_dtype – 输出标量类型
init – 归约的初始值
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回标量的设备内存的设备内存资源
- Returns:
输出带有reduce结果的标量
-
std::unique_ptr<column> segmented_reduce(column_view const &segmented_values, device_span<size_type const> offsets, segmented_reduce_aggregation const &agg, data_type output_dtype, null_policy null_handling, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
计算输入列中每个段的减少量。
此函数不会检测归约中的溢出。当
output_dtype与segmented_values.type()不匹配时,它们的值可能会提升为int64_t或double以进行计算聚合,然后在返回之前转换为output_dtype。在归约过程中,空值被视为标识。
如果段为空,则对应于段结果的行为空。
如果
offsets中的任何索引超出了segmented_values的范围,行为是未定义的。如果输入列具有算术类型,
output_dtype可以是任何算术类型。如果输入列具有非算术类型,例如时间戳,则必须指定相同的输出类型。如果输入不为空,结果始终可为空。
- Throws:
cudf::logic_error – 如果对非算术输出类型调用归约操作,并且操作符不是
min和max。cudf::logic_error – 如果输入列的数据类型无法转换为
output_dtype类型。cudf::logic_error – 如果调用了
min或max归约操作,并且output_dtype与输入列的数据类型不匹配。cudf::logic_error – 如果调用了
any或all缩减操作,并且output_dtype不是 BOOL8。
- Parameters:
segmented_values – 分段输入的列视图
offsets – 每个段在
segmented_values中的偏移量。一个大小为num_segments + 1的偏移量列表。第i个段的大小为offsets[i+1] - offsets[i]。agg – 由归约操作应用的聚合运算符
output_dtype – 输出列的类型
null_handling – 如果
INCLUDE,则当段中的所有元素都有效时,归约有效,否则为 null。如果EXCLUDE,则当段中的任何元素有效时,归约有效,否则为 null。stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回标量的设备内存的设备内存资源
- Returns:
输出列,包含分段缩减的结果
-
std::unique_ptr<column> segmented_reduce(column_view const &segmented_values, device_span<size_type const> offsets, segmented_reduce_aggregation const &agg, data_type output_dtype, null_policy null_handling, std::optional<std::reference_wrapper<scalar const>> init, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
使用初始值计算输入列中每个段的减少量。仅支持SUM、PRODUCT、MIN、MAX、ANY和ALL聚合。
- Parameters:
segmented_values – 分段输入的列视图
offsets – 每个段在
segmented_values中的偏移量。一个大小为num_segments + 1的偏移量列表。第i个段的大小为offsets[i+1] - offsets[i]。agg – 由归约操作应用的聚合运算符
output_dtype – 输出列的类型
null_handling – 如果
INCLUDE,则当段中的所有元素都有效时,归约有效,否则为 null。如果EXCLUDE,则当段中的任何元素有效时,归约有效,否则为 null。init – 归约的初始值
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回标量的设备内存的设备内存资源
- Returns:
输出列,显示分段缩减的结果。
-
std::unique_ptr<column> scan(column_view const &input, scan_aggregation const &agg, scan_type inclusive, null_policy null_handling = null_policy::EXCLUDE, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
计算列的扫描。
操作中会跳过空值,如果输入元素在
i处为空,则输出元素在i处也将为空。- Throws:
cudf::logic_error – 如果列数据类型不是数值类型。
- Parameters:
input – [in] 用于扫描的输入列视图
agg – [in] 指向由扫描应用聚合运算符的 unique_ptr
inclusive – [in] 标志,如果 scan_type::INCLUSIVE 则应用包含扫描,如果 scan_type::EXCLUSIVE 则应用排除扫描。
null_handling – [in] 如果 null_policy::EXCLUDE,则在计算结果时排除空值。如果 null_policy::INCLUDE,则包含空值。任何与空值的操作都会导致结果为 null。
stream – [in] 用于设备内存操作和内核启动的CUDA流
mr – [in] 用于分配返回标量的设备内存的设备内存资源
- Returns:
扫描的输出列
-
std::pair<std::unique_ptr<scalar>, std::unique_ptr<scalar>> minmax(column_view const &col, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#
确定列的最小值和最大值。
- Parameters:
col – 用于计算最小最大值的列
stream – 用于设备内存操作和内核启动的CUDA流
mr – 用于分配返回列的设备内存的设备内存资源
- Returns:
一个 std::pair 的标量,其中第一个标量是输入列的最小值,第二个标量是输入列的最大值。
-
std::unique_ptr<scalar> reduce(column_view const &col, reduce_aggregation const &agg, data_type output_dtype, rmm::cuda_stream_view stream = cudf::get_default_stream(), rmm::device_async_resource_ref mr = cudf::get_current_device_resource_ref())#