24 #include <cudf/utilities/export.hpp>
35 namespace CUDF_EXPORT
cudf {
38 namespace hashing::detail {
99 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
100 std::unique_ptr<rmm::device_uvector<size_type>>>
141 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
142 std::unique_ptr<rmm::device_uvector<size_type>>>
182 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
183 std::unique_ptr<rmm::device_uvector<size_type>>>
354 [[nodiscard]] std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
355 std::unique_ptr<rmm::device_uvector<size_type>>>
357 std::optional<std::size_t> output_size = {},
379 [[nodiscard]] std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
380 std::unique_ptr<rmm::device_uvector<size_type>>>
382 std::optional<std::size_t> output_size = {},
404 [[nodiscard]] std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
405 std::unique_ptr<rmm::device_uvector<size_type>>>
407 std::optional<std::size_t> output_size = {},
464 std::unique_ptr<impl_type const> _impl;
509 [[nodiscard]] std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
510 std::unique_ptr<rmm::device_uvector<size_type>>>
532 [[nodiscard]] std::unique_ptr<rmm::device_uvector<size_type>>
left_join(
538 using impl_type = cudf::detail::distinct_hash_join;
540 std::unique_ptr<impl_type> _impl;
579 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
580 std::unique_ptr<rmm::device_uvector<size_type>>>
584 std::optional<std::size_t> output_size = {},
626 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
627 std::unique_ptr<rmm::device_uvector<size_type>>>
631 std::optional<std::size_t> output_size = {},
671 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
672 std::unique_ptr<rmm::device_uvector<size_type>>>
716 std::optional<std::size_t> output_size = {},
757 std::optional<std::size_t> output_size = {},
808 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
809 std::unique_ptr<rmm::device_uvector<size_type>>>
870 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
871 std::unique_ptr<rmm::device_uvector<size_type>>>
932 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
933 std::unique_ptr<rmm::device_uvector<size_type>>>
在创建时构建哈希表并在后续的 *_join 成员函数中探测结果的去重哈希连接...
std::unique_ptr< rmm::device_uvector< size_type > > left_join(cudf::table_view const &probe, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref()) const
返回可用于构建左连接结果的构建表索引...
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > inner_join(cudf::table_view const &probe, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref()) const
返回可用于构造指定表之间内连接结果的行索引对...
distinct_hash_join(cudf::table_view const &build, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream())
构造用于后续探测调用的去重哈希连接对象。
在创建时构建哈希表并在后续的 *_join 成员函数中探测结果的哈希连接...
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > left_join(cudf::table_view const &probe, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref()) const
hash_join(cudf::table_view const &build, nullable_join has_nulls, null_equality compare_nulls, rmm::cuda_stream_view stream=cudf::get_default_stream())
构造用于后续探测调用的哈希连接对象。
typename cudf::detail::hash_join< cudf::hashing::detail::MurmurHash3_x86_32< cudf::hash_value_type > > impl_type
实现类型。
std::size_t left_join_size(cudf::table_view const &probe, rmm::cuda_stream_view stream=cudf::get_default_stream()) const
std::size_t inner_join_size(cudf::table_view const &probe, rmm::cuda_stream_view stream=cudf::get_default_stream()) const
hash_join(cudf::table_view const &build, null_equality compare_nulls, rmm::cuda_stream_view stream=cudf::get_default_stream())
构造用于后续探测调用的哈希连接对象。
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > inner_join(cudf::table_view const &probe, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref()) const
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > full_join(cudf::table_view const &probe, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref()) const
std::size_t full_join_size(cudf::table_view const &probe, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref()) const
我们 Murmur Hash 3 实现的前向声明。
一组大小相同的 cudf::column_view。
std::unique_ptr< rmm::device_uvector< size_type > > mixed_left_anti_join(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一个索引向量,对应于左表中不存在匹配行的所有行...
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > conditional_full_join(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间满足条件的行对...
std::size_t conditional_inner_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
执行指定表之间的条件内连接时,返回精确的匹配数(行数)。..
std::size_t conditional_left_semi_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
执行指定表之间的条件左半连接时,返回精确的匹配数(行数)。..
std::pair< std::size_t, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_inner_join_size(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
执行指定表之间的混合内连接时,返回精确的匹配数(行数)。..
std::unique_ptr< rmm::device_uvector< size_type > > mixed_left_semi_join(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一个索引向量,对应于左表中满足相等列和...
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > left_join(cudf::table_view const &left_keys, cudf::table_view const &right_keys, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间的左连接。
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > full_join(cudf::table_view const &left_keys, cudf::table_view const &right_keys, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间的全连接。
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_full_join(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, std::optional< std::pair< std::size_t, device_span< size_type const >>> output_size_data={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间满足条件的行对...
std::unique_ptr< rmm::device_uvector< size_type > > left_anti_join(cudf::table_view const &left_keys, cudf::table_view const &right_keys, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一个行索引向量,对应于指定表之间的左反连接。
std::unique_ptr< rmm::device_uvector< size_type > > left_semi_join(cudf::table_view const &left_keys, cudf::table_view const &right_keys, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一个行索引向量,对应于指定表之间的左半连接。
std::size_t conditional_left_anti_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
执行指定表之间的条件左反连接时,返回精确的匹配数(行数)。..
std::unique_ptr< rmm::device_uvector< size_type > > conditional_left_semi_join(table_view const &left, table_view const &right, ast::expression const &binary_predicate, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一个索引向量,对应于左表中存在某个行的所有行...
std::pair< std::size_t, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_left_join_size(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
执行指定表之间的混合左连接时,返回精确的匹配数(行数)。..
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_inner_join(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, std::optional< std::pair< std::size_t, device_span< size_type const >>> output_size_data={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间满足条件的行对...
nullable_join
枚举类,指定任何输入连接表(构建表和任何后续探测表)是否具有...
std::size_t conditional_left_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
执行指定表之间的条件左连接时,返回精确的匹配数(行数)。..
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > inner_join(cudf::table_view const &left_keys, cudf::table_view const &right_keys, null_equality compare_nulls=null_equality::EQUAL, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回与指定表之间内部连接相对应的行索引向量对。
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > conditional_inner_join(table_view const &left, table_view const &right, ast::expression const &binary_predicate, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间满足条件的行对...
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_left_join(table_view const &left_equality, table_view const &right_equality, table_view const &left_conditional, table_view const &right_conditional, ast::expression const &binary_predicate, null_equality compare_nulls=null_equality::EQUAL, std::optional< std::pair< std::size_t, device_span< size_type const >>> output_size_data={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间满足条件的行对...
std::pair< std::unique_ptr< rmm::device_uvector< size_type > >, std::unique_ptr< rmm::device_uvector< size_type > > > conditional_left_join(table_view const &left, table_view const &right, ast::expression const &binary_predicate, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回一对行索引向量,对应于指定表之间满足条件的行对...
std::unique_ptr< cudf::table > cross_join(cudf::table_view const &left, cudf::table_view const &right, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
对两个表(左表、右表)执行交叉连接
std::unique_ptr< rmm::device_uvector< size_type > > conditional_left_anti_join(table_view const &left, table_view const &right, ast::expression const &binary_predicate, std::optional< std::size_t > output_size={}, rmm::cuda_stream_view stream=cudf::get_default_stream(), rmm::device_async_resource_ref mr=cudf::get_current_device_resource_ref())
返回对应于左表中所有行的索引向量,对于这些行,右表中不存在...
rmm::cuda_stream_view const get_default_stream()
获取当前默认流。
rmm::device_async_resource_ref get_current_device_resource_ref()
获取当前设备内存资源引用。
cuda::mr::async_resource_ref< cuda::mr::device_accessible > device_async_resource_ref
null_equality
枚举类型,用于指定两个 null 值是否被视为相等或不相等。
bool has_nulls(table_view const &view)
如果表在其任一列中包含 null 值,则返回 True。
C++20 std::span 的设备版本,功能集有所精简。
(mutable)_table_view 的类定义