按键分组值并计算这些组上的聚合。 更多...
包含 <groupby.hpp>
类 | |
struct | groups |
与对一组值执行 groupby 操作对应的分组数据。 更多... | |
按键分组值并计算这些组上的聚合。
定义于文件 groupby.hpp 的 第 95 行。
|
explicit |
构造具有指定 keys
的 groupby 对象
如果 keys
已排序,则通过传递 keys_are_sorted == true
并分别在 column_order
和 null_precedence
中指示每列的升序/降序以及空值顺序,可以获得更好的性能。
keys
的生命周期。用户有责任确保 groupby
对象的生命周期不超过 keys
table_view
所查看的数据。keys | 其行作为 groupby 键的表 |
null_handling | 指示是否应包含 keys 中包含 NULL 值的行 |
keys_are_sorted | 指示 keys 中的行是否已排序 |
column_order | 如果 keys_are_sorted == YES ,指示每列是升序还是降序。如果为空,假定所有列都是升序。如果 keys_are_sorted == false ,则忽略。 |
null_precedence | 如果 keys_are_sorted == YES ,指示每列中空值的顺序。否则忽略。如果为空,假定所有列都使用 null_order::AFTER 。如果 keys_are_sorted == false ,则忽略。 |
std::pair<std::unique_ptr<table>, std::vector<aggregation_result> > cudf::groupby::groupby::aggregate | ( | host_span< aggregation_request const > | requests, |
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
对指定的值执行分组聚合。
要聚合的值和要执行的聚合在 aggregation_request
中指定。每个请求包含一个用于聚合值的 column_view
和一组对这些元素执行的 aggregation
。
对于请求中的每个 aggregation
,values[i]
与 keys
中行 i
和 j
相等的所有其他 values[j]
进行聚合。
请求列的 size()
必须等于 keys.num_rows()
。
对于每个 aggregation_request
,将返回一个 aggregation_result
。aggregation_result
包含对 request
的值执行的每个请求聚合的结果列。每个结果中的列顺序与请求中指定的顺序相同。
返回的 table
包含每个组的组标签,即来自 keys
的唯一行。所有聚合结果中的元素 i
属于组标签表中行 i
处的组。
组标签中行的顺序是任意的。此外,连续的 groupby::aggregate
调用可能会以不同的顺序返回结果。
cudf::logic_error | 如果 requests[i].values.size() != keys.num_rows() 。 |
示例
requests | 要聚合的列集合以及要执行的聚合 |
stream | 用于设备内存操作和内核启动的 CUDA 流。 |
mr | 用于分配返回的表和列的设备内存的设备内存资源 |
aggregation_results
向量的 Pair,向量中每个请求的结果顺序与 requests
中指定的顺序相同。groups cudf::groupby::groupby::get_groups | ( | cudf::table_view | values = {} , |
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
获取与对一组值执行 groupby 操作对应的分组键和值。
返回一个 groups
对象,表示分组的键和值。如果未提供 values,则只对键进行分组,groups
对象的 values
将为 nullptr
。
values | 表示要对其执行 groupby 操作的值的表 |
stream | 用于设备内存操作和内核启动的 CUDA 流。 |
mr | 用于在返回的 groups 中分配返回的表的设备内存的设备内存资源 |
groups
对象std::pair<std::unique_ptr<table>, std::unique_ptr<table> > cudf::groupby::groupby::replace_nulls | ( | table_view const & | values, |
host_span< cudf::replace_policy const > | replace_policies, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
对 value
执行分组的空值替换操作。
对于组 j
中每个 value[i] == NULL
,value[i]
将被替换为组 j
中在 value[i]
之前或之后找到的第一个非空值。如果在指定方向上未找到非空值,则 value[i]
仍为 NULL。
返回的 Pair 包含排序后的键列和结果列。在结果列中,同一组的值在连续的内存中。在每个组中,值的顺序保持其原始顺序。组的顺序不保证。
示例
[in] | values | 其列中空值将被替换的表 |
[in] | replace_policies | 指定替换值相对于空值的位置,每列一个 |
[in] | stream | 用于设备内存操作和内核启动的 CUDA 流。 |
[in] | mr | 用于分配返回列的设备内存的设备内存资源 |
std::pair<std::unique_ptr<table>, std::vector<aggregation_result> > cudf::groupby::groupby::scan | ( | host_span< scan_request const > | requests, |
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
对指定的值执行分组扫描。
要聚合的值和要执行的聚合在 aggregation_request
中指定。每个请求包含一个用于聚合值的 column_view
和一组对这些元素执行的 aggregation
。
对于请求中的每个 aggregation
,values[i]
与 keys
中行 i
和 j
相等的所有先前的 values[j]
进行扫描聚合。
请求列的 size()
必须等于 keys.num_rows()
。
对于每个 aggregation_request
,将返回一个 aggregation_result
。aggregation_result
包含对 request
的值执行的每个请求聚合的结果列。每个结果中的列顺序与请求中指定的顺序相同。
返回的 table
包含每行的组标签,即提供给 groupby 对象的 keys
。所有聚合结果中的元素 i
属于组标签表中行 i
处的组。
组标签中行的顺序是任意的。此外,连续的 groupby::scan
调用可能会以不同的顺序返回结果。
cudf::logic_error | 如果 requests[i].values.size() != keys.num_rows() 。 |
示例
requests | 要扫描的列集合以及要执行的扫描操作 |
stream | 用于设备内存操作和内核启动的 CUDA 流。 |
mr | 用于分配返回的表和列的设备内存的设备内存资源 |
aggregation_results
向量的 Pair,向量中每个请求的结果顺序与 requests
中指定的顺序相同。std::pair<std::unique_ptr<table>, std::unique_ptr<table> > cudf::groupby::groupby::shift | ( | table_view const & | values, |
host_span< size_type const > | offsets, | ||
std::vector< std::reference_wrapper< scalar const >> const & | fill_values, | ||
rmm::cuda_stream_view | stream = cudf::get_default_stream() , |
||
rmm::device_async_resource_ref | mr = cudf::get_current_device_resource_ref() |
||
) |
对指定的值执行分组移位操作。
在第 j
列中,对于每个组,第 i
个元素由组中的第 i - offsets[j]
个元素确定。如果 i - offsets[j] < 0 或 >= group_size
,则该值由 fill_values
[j] 确定。
i
对应于移位列中行 i
的组标签。每个组中的键顺序与输入顺序匹配。每个组的顺序是任意的。连续调用 groupby::shifts
时,组的顺序可能不同。示例
values | 其列要进行移位操作的表 |
offsets | 用于移位输入的偏移量 |
fill_values | 用于不确定输出的填充值 |
stream | 用于设备内存操作和内核启动的 CUDA 流。 |
mr | 用于分配返回的表和列的设备内存的设备内存资源 |
cudf::logic_error | 如果第 i 列的 fill_value [i] 数据类型与 values [i] 数据类型不匹配 |