聚合减少#

group aggregation_reduction

枚举

enum class scan_type : bool#

枚举用于描述扫描操作类型。

值:

enumerator INCLUSIVE#
enumerator EXCLUSIVE#

函数

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_dtypecol.type()不匹配时,它们的值可能会提升为int64_tdouble以进行计算聚合,然后在返回之前转换为output_dtype

仅支持对非算术类型(例如时间戳或字符串)进行minmax操作的归约。

任何空值在操作中都会被跳过。

如果列为空或包含所有空条目 col.size()==col.null_count(),对于归约类型 any,输出标量值将为 false,对于归约类型 all,输出标量值将为 true。对于所有其他归约,输出标量将返回 is_valid()==false

如果输入列是算术类型,output_dtype 可以是任何算术类型。如果输入列是非算术类型(例如时间戳或字符串),output_dtype 必须与 col.type() 匹配。如果归约类型是 anyalloutput_dtype 必须是 BOOL8 类型。

如果归约失败,输出标量将返回is_valid()==false

Throws:
  • cudf::logic_error – 如果对非算术输出类型调用归约操作,并且操作符不是 minmax

  • cudf::logic_error – 如果输入列的数据类型无法转换为 output_dtype

  • cudf::logic_error – 如果调用了 minmax 归约操作,并且输出类型与输入列的数据类型不匹配。

  • cudf::logic_error – 如果调用了 anyall 缩减操作,并且输出类型不是 BOOL8。

  • cudf::logic_error – 如果调用了 meanvarstd 缩减操作,并且 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())#

计算列中所有行的值的缩减,使用初始值。

仅支持sumproductminmaxanyall的归约操作。

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_dtypesegmented_values.type()不匹配时,它们的值可能会提升为int64_tdouble以进行计算聚合,然后在返回之前转换为output_dtype

在归约过程中,空值被视为标识。

如果段为空,则对应于段结果的行为空。

如果offsets中的任何索引超出了segmented_values的范围,行为是未定义的。

如果输入列具有算术类型,output_dtype 可以是任何算术类型。如果输入列具有非算术类型,例如时间戳,则必须指定相同的输出类型。

如果输入不为空,结果始终可为空。

Throws:
  • cudf::logic_error – 如果对非算术输出类型调用归约操作,并且操作符不是 minmax

  • cudf::logic_error – 如果输入列的数据类型无法转换为 output_dtype 类型。

  • cudf::logic_error – 如果调用了 minmax 归约操作,并且 output_dtype 与输入列的数据类型不匹配。

  • cudf::logic_error – 如果调用了 anyall 缩减操作,并且 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 的标量,其中第一个标量是输入列的最小值,第二个标量是输入列的最大值。