文件 | 函数
合并

文件

文件  merge.hpp
 

函数

std::unique_ptr< cudf::tablecudf::merge (std::vector< table_view > const &tables_to_merge, std::vector< cudf::size_type > const &key_cols, std::vector< cudf::order > const &column_order, std::vector< cudf::null_order > const &null_precedence={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
 合并一组已排序的表。 更多...
 

详细描述

函数文档

◆ merge()

std::unique_ptr<cudf::table> cudf::merge ( std::vector< table_view > const &  tables_to_merge,
std::vector< cudf::size_type > const &  key_cols,
std::vector< cudf::order > const &  column_order,
std::vector< cudf::null_order > const &  null_precedence = {},
rmm::cuda_stream_view  stream = cudf::get_default_stream(),
rmm::device_async_resource_ref  mr = cudf::get_current_device_resource_ref() 
)

合并一组已排序的表。

将已排序的表合并成一个包含所有表数据的已排序表。每个表的键列必须根据该列指定的参数(cudf::column_order 和 cudf::null_order)进行排序。

示例 1
输入
表 1 => 列 1 {0, 1, 2, 3}
列 2 {4, 5, 6, 7}
表 2 => 列 1 {1, 2}
列 2 {8, 9}
表 3 => 列 1 {2, 4}
列 2 {8, 9}
输出
表 => 列 1 {0, 1, 1, 2, 2, 2, 3, 4}
列 2 {4, 5, 8, 6, 8, 9, 7, 9}
示例 2
输入
表 1 => 列 0 {1, 0}
列 1 {'c', 'b'}
列 2 {RED, GREEN}
表 2 => 列 0 {1}
列 1 {'a'}
列 2 {NULL}
其中 key_cols[] = {0,1}
和 asc_desc[] = {ASC, ASC};
按列 {0,1} 进行字典序排序;因此,((L0 x L1) V (R0 x R1)) 的字典序排序结果是
(0,'b', GREEN), (1,'a', NULL), (1,'c', RED)
(第三列,即“颜色”列,只是“顺带”;
意味着它根据数据移动进行置换,这些移动由以下规则决定
列 0 和列 1 的字典序排列)
结果列为
Res0 = {0,1,1}
Res1 = {'b', 'a', 'c'}
Res2 = {GREEN, NULL, RED}
异常
cudf::logic_error如果 tables_to_merge 中的表列数不同
cudf::logic_error如果 tables_to_merge 中的表列类型不匹配
cudf::logic_error如果 key_cols 为空
cudf::logic_error如果 key_cols 的大小大于 tables_to_merge 中表的列数
cudf::logic_error如果 key_cols 大小与 column_order 大小不匹配
参数
[in]tables_to_merge待合并的非空表列表
[in]key_cols用于比较条件的 left_cols 和 right_cols 索引
[in]column_order由 key_cols 索引的列的排序顺序类型
[in]null_precedence指示索引列 (key_cols) 中 null 值相对于非 null 值的顺序的数组
stream用于设备内存操作和内核启动的 CUDA 流
mr用于分配返回表的设备内存的设备内存资源
返回值
一个包含所有输入表中的已排序数据的表