join.hpp
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2019-2022, NVIDIA CORPORATION.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 #pragma once
18 
19 #include <cudf/ast/expressions.hpp>
20 #include <cudf/hashing.hpp>
22 #include <cudf/types.hpp>
23 #include <cudf/utilities/span.hpp>
24 
25 #include <rmm/cuda_stream_view.hpp>
26 #include <rmm/device_uvector.hpp>
27 
28 #include <optional>
29 #include <utility>
30 #include <vector>
31 
32 namespace cudf {
33 
34 // forward declaration
35 namespace detail {
36 template <typename T>
38 
39 template <typename T>
40 class hash_join;
41 } // namespace detail
42 
81 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
82  std::unique_ptr<rmm::device_uvector<size_type>>>
83 inner_join(cudf::table_view const& left_keys,
84  cudf::table_view const& right_keys,
85  null_equality compare_nulls = null_equality::EQUAL,
86  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
87 
125 std::unique_ptr<cudf::table> inner_join(
126  cudf::table_view const& left,
127  cudf::table_view const& right,
128  std::vector<cudf::size_type> const& left_on,
129  std::vector<cudf::size_type> const& right_on,
130  null_equality compare_nulls = null_equality::EQUAL,
131  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
132 
166 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
167  std::unique_ptr<rmm::device_uvector<size_type>>>
168 left_join(cudf::table_view const& left_keys,
169  cudf::table_view const& right_keys,
170  null_equality compare_nulls = null_equality::EQUAL,
171  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
172 
218 std::unique_ptr<cudf::table> left_join(
219  cudf::table_view const& left,
220  cudf::table_view const& right,
221  std::vector<cudf::size_type> const& left_on,
222  std::vector<cudf::size_type> const& right_on,
223  null_equality compare_nulls = null_equality::EQUAL,
224  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
225 
258 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
259  std::unique_ptr<rmm::device_uvector<size_type>>>
260 full_join(cudf::table_view const& left_keys,
261  cudf::table_view const& right_keys,
262  null_equality compare_nulls = null_equality::EQUAL,
263  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
264 
310 std::unique_ptr<cudf::table> full_join(
311  cudf::table_view const& left,
312  cudf::table_view const& right,
313  std::vector<cudf::size_type> const& left_on,
314  std::vector<cudf::size_type> const& right_on,
315  null_equality compare_nulls = null_equality::EQUAL,
316  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
317 
345 std::unique_ptr<rmm::device_uvector<size_type>> left_semi_join(
346  cudf::table_view const& left_keys,
347  cudf::table_view const& right_keys,
348  null_equality compare_nulls = null_equality::EQUAL,
349  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
350 
391 std::unique_ptr<cudf::table> left_semi_join(
392  cudf::table_view const& left,
393  cudf::table_view const& right,
394  std::vector<cudf::size_type> const& left_on,
395  std::vector<cudf::size_type> const& right_on,
396  null_equality compare_nulls = null_equality::EQUAL,
397  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
398 
424 std::unique_ptr<rmm::device_uvector<size_type>> left_anti_join(
425  cudf::table_view const& left_keys,
426  cudf::table_view const& right_keys,
427  null_equality compare_nulls = null_equality::EQUAL,
428  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
429 
473 std::unique_ptr<cudf::table> left_anti_join(
474  cudf::table_view const& left,
475  cudf::table_view const& right,
476  std::vector<cudf::size_type> const& left_on,
477  std::vector<cudf::size_type> const& right_on,
478  null_equality compare_nulls = null_equality::EQUAL,
479  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
480 
503 std::unique_ptr<cudf::table> cross_join(
504  cudf::table_view const& left,
505  cudf::table_view const& right,
506  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
507 
515 class hash_join {
516  public:
517  using impl_type =
519 
520  hash_join() = delete;
521  ~hash_join();
522  hash_join(hash_join const&) = delete;
523  hash_join(hash_join&&) = delete;
524  hash_join& operator=(hash_join const&) = delete;
525  hash_join& operator=(hash_join&&) = delete;
526 
538  null_equality compare_nulls,
539  rmm::cuda_stream_view stream = rmm::cuda_stream_default);
540 
556  std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
557  std::unique_ptr<rmm::device_uvector<size_type>>>
559  std::optional<std::size_t> output_size = {},
560  rmm::cuda_stream_view stream = rmm::cuda_stream_default,
561  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource()) const;
562 
578  std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
579  std::unique_ptr<rmm::device_uvector<size_type>>>
581  std::optional<std::size_t> output_size = {},
582  rmm::cuda_stream_view stream = rmm::cuda_stream_default,
583  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource()) const;
584 
600  std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
601  std::unique_ptr<rmm::device_uvector<size_type>>>
603  std::optional<std::size_t> output_size = {},
604  rmm::cuda_stream_view stream = rmm::cuda_stream_default,
605  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource()) const;
606 
617  [[nodiscard]] std::size_t inner_join_size(
618  cudf::table_view const& probe, rmm::cuda_stream_view stream = rmm::cuda_stream_default) const;
619 
630  [[nodiscard]] std::size_t left_join_size(
631  cudf::table_view const& probe, rmm::cuda_stream_view stream = rmm::cuda_stream_default) const;
632 
645  std::size_t full_join_size(
646  cudf::table_view const& probe,
647  rmm::cuda_stream_view stream = rmm::cuda_stream_default,
648  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource()) const;
649 
650  private:
651  const std::unique_ptr<const impl_type> _impl;
652 };
653 
689 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
690  std::unique_ptr<rmm::device_uvector<size_type>>>
692  table_view const& left,
693  table_view const& right,
694  ast::expression const& binary_predicate,
695  std::optional<std::size_t> output_size = {},
696  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
697 
735 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
736  std::unique_ptr<rmm::device_uvector<size_type>>>
738  table_view const& right,
739  ast::expression const& binary_predicate,
740  std::optional<std::size_t> output_size = {},
741  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
742 
778 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
779  std::unique_ptr<rmm::device_uvector<size_type>>>
781  table_view const& right,
782  ast::expression const& binary_predicate,
783  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
784 
817 std::unique_ptr<rmm::device_uvector<size_type>> conditional_left_semi_join(
818  table_view const& left,
819  table_view const& right,
820  ast::expression const& binary_predicate,
821  std::optional<std::size_t> output_size = {},
822  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
823 
856 std::unique_ptr<rmm::device_uvector<size_type>> conditional_left_anti_join(
857  table_view const& left,
858  table_view const& right,
859  ast::expression const& binary_predicate,
860  std::optional<std::size_t> output_size = {},
861  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
862 
909 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
910  std::unique_ptr<rmm::device_uvector<size_type>>>
912  table_view const& left_equality,
913  table_view const& right_equality,
914  table_view const& left_conditional,
915  table_view const& right_conditional,
916  ast::expression const& binary_predicate,
917  null_equality compare_nulls = null_equality::EQUAL,
918  std::optional<std::pair<std::size_t, device_span<size_type const>>> output_size_data = {},
919  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
920 
969 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
970  std::unique_ptr<rmm::device_uvector<size_type>>>
972  table_view const& left_equality,
973  table_view const& right_equality,
974  table_view const& left_conditional,
975  table_view const& right_conditional,
976  ast::expression const& binary_predicate,
977  null_equality compare_nulls = null_equality::EQUAL,
978  std::optional<std::pair<std::size_t, device_span<size_type const>>> output_size_data = {},
979  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
980 
1029 std::pair<std::unique_ptr<rmm::device_uvector<size_type>>,
1030  std::unique_ptr<rmm::device_uvector<size_type>>>
1032  table_view const& left_equality,
1033  table_view const& right_equality,
1034  table_view const& left_conditional,
1035  table_view const& right_conditional,
1036  ast::expression const& binary_predicate,
1037  null_equality compare_nulls = null_equality::EQUAL,
1038  std::optional<std::pair<std::size_t, device_span<size_type const>>> output_size_data = {},
1039  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1040 
1082 std::unique_ptr<rmm::device_uvector<size_type>> mixed_left_semi_join(
1083  table_view const& left_equality,
1084  table_view const& right_equality,
1085  table_view const& left_conditional,
1086  table_view const& right_conditional,
1087  ast::expression const& binary_predicate,
1088  null_equality compare_nulls = null_equality::EQUAL,
1089  std::optional<std::pair<std::size_t, device_span<size_type const>>> output_size_data = {},
1090  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1091 
1134 std::unique_ptr<rmm::device_uvector<size_type>> mixed_left_anti_join(
1135  table_view const& left_equality,
1136  table_view const& right_equality,
1137  table_view const& left_conditional,
1138  table_view const& right_conditional,
1139  ast::expression const& binary_predicate,
1140  null_equality compare_nulls = null_equality::EQUAL,
1141  std::optional<std::pair<std::size_t, device_span<size_type const>>> output_size_data = {},
1142  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1143 
1178 std::pair<std::size_t, std::unique_ptr<rmm::device_uvector<size_type>>> mixed_inner_join_size(
1179  table_view const& left_equality,
1180  table_view const& right_equality,
1181  table_view const& left_conditional,
1182  table_view const& right_conditional,
1183  ast::expression const& binary_predicate,
1184  null_equality compare_nulls = null_equality::EQUAL,
1185  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1186 
1221 std::pair<std::size_t, std::unique_ptr<rmm::device_uvector<size_type>>> mixed_left_join_size(
1222  table_view const& left_equality,
1223  table_view const& right_equality,
1224  table_view const& left_conditional,
1225  table_view const& right_conditional,
1226  ast::expression const& binary_predicate,
1227  null_equality compare_nulls = null_equality::EQUAL,
1228  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1229 
1264 std::pair<std::size_t, std::unique_ptr<rmm::device_uvector<size_type>>> mixed_left_semi_join_size(
1265  table_view const& left_equality,
1266  table_view const& right_equality,
1267  table_view const& left_conditional,
1268  table_view const& right_conditional,
1269  ast::expression const& binary_predicate,
1270  null_equality compare_nulls = null_equality::EQUAL,
1271  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1272 
1305 std::pair<std::size_t, std::unique_ptr<rmm::device_uvector<size_type>>> mixed_left_anti_join_size(
1306  table_view const& left_equality,
1307  table_view const& right_equality,
1308  table_view const& left_conditional,
1309  table_view const& right_conditional,
1310  ast::expression const& binary_predicate,
1311  null_equality compare_nulls = null_equality::EQUAL,
1312  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1313 
1332  table_view const& left,
1333  table_view const& right,
1334  ast::expression const& binary_predicate,
1335  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1336 
1355  table_view const& left,
1356  table_view const& right,
1357  ast::expression const& binary_predicate,
1358  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1359 
1378  table_view const& left,
1379  table_view const& right,
1380  ast::expression const& binary_predicate,
1381  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource());
1382 
1401  table_view const& left,
1402  table_view const& right,
1403  ast::expression const& binary_predicate,
1404  rmm::mr::device_memory_resource* mr = rmm::mr::get_current_device_resource()); // end of group
1406 } // namespace cudf
table_view.hpp
Class definitions for (mutable)_table_view
cudf::mixed_left_anti_join_size
std::pair< std::size_t, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_left_anti_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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a mixed left anti join between the specifi...
cudf::cross_join
std::unique_ptr< cudf::table > cross_join(cudf::table_view const &left, cudf::table_view const &right, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Performs a cross join on two tables (left, right)
cudf::hash_join::left_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=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource()) const
cudf::mixed_left_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to all pairs of rows between the specified tables w...
cudf::conditional_full_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to all pairs of rows between the specified tables w...
cudf::mixed_left_semi_join
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, std::optional< std::pair< std::size_t, device_span< size_type const >>> output_size_data={}, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns an index vector corresponding to all rows in the left tables where the columns of the equalit...
cudf::left_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 &left_keys, cudf::table_view const &right_keys, null_equality compare_nulls=null_equality::EQUAL, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to a left join between the specified tables.
cudf::hash_join::full_join_size
std::size_t full_join_size(cudf::table_view const &probe, rmm::cuda_stream_view stream=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource()) const
types.hpp
Type declarations for libcudf.
cudf::conditional_left_semi_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns an index vector corresponding to all rows in the left table for which there exists some row i...
cudf::left_anti_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a vector of row indices corresponding to a left anti join between the specified tables.
cudf::conditional_left_anti_join_size
std::size_t conditional_left_anti_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a conditional left anti join between the s...
rmm::cuda_stream_view
cudf::hash_join::full_join
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=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource()) const
cudf::detail::hash_join
Definition: join.hpp:40
cudf::mixed_left_join_size
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a mixed left join between the specified ta...
hashing.hpp
cudf::conditional_left_anti_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns an index vector corresponding to all rows in the left table for which there does not exist an...
cudf::mixed_inner_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to all pairs of rows between the specified tables w...
cudf::left_semi_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a vector of row indices corresponding to a left semi join between the specified tables.
cudf::conditional_inner_join_size
std::size_t conditional_inner_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a conditional inner join between the speci...
cudf::hash_join
Hash join that builds hash table in creation and probes results in subsequent *_join member functions...
Definition: join.hpp:515
cudf::ast::expression
A generic expression that can be evaluated to return a value.
Definition: expressions.hpp:40
cudf::conditional_left_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to all pairs of rows between the specified tables w...
cudf::table_view
A set of cudf::column_view's of the same size.
Definition: table_view.hpp:154
cudf::conditional_left_semi_join_size
std::size_t conditional_left_semi_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a conditional left semi join between the s...
cudf::conditional_left_join_size
std::size_t conditional_left_join_size(table_view const &left, table_view const &right, ast::expression const &binary_predicate, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a conditional left join between the specif...
cudf::mixed_full_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to all pairs of rows between the specified tables w...
cudf::hash_join::hash_join
hash_join(cudf::table_view const &build, null_equality compare_nulls, rmm::cuda_stream_view stream=rmm::cuda_stream_default)
Construct a hash join object for subsequent probe calls.
cudf
cuDF interfaces
Definition: aggregation.hpp:34
cudf::hash_join::inner_join_size
std::size_t inner_join_size(cudf::table_view const &probe, rmm::cuda_stream_view stream=rmm::cuda_stream_default) const
cudf::conditional_inner_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to all pairs of rows between the specified tables w...
cudf::detail::MurmurHash3_32
Definition: join.hpp:37
cudf::mixed_left_anti_join
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, std::optional< std::pair< std::size_t, device_span< size_type const >>> output_size_data={}, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns an index vector corresponding to all rows in the left tables for which there is no row in the...
cudf::full_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to a full join between the specified tables.
cudf::null_equality
null_equality
Enum to consider two nulls as equal or unequal.
Definition: types.hpp:148
rmm::mr::device_memory_resource
cudf::hash_join::left_join_size
std::size_t left_join_size(cudf::table_view const &probe, rmm::cuda_stream_view stream=rmm::cuda_stream_default) const
cudf::device_span
Definition: span.hpp:194
cudf::mixed_left_semi_join_size
std::pair< std::size_t, std::unique_ptr< rmm::device_uvector< size_type > > > mixed_left_semi_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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a mixed left semi join between the specifi...
cudf::mixed_inner_join_size
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns the exact number of matches (rows) when performing a mixed inner join between the specified t...
cudf::hash_join::inner_join
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=rmm::cuda_stream_default, rmm::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource()) const
cudf::inner_join
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::mr::device_memory_resource *mr=rmm::mr::get_current_device_resource())
Returns a pair of row index vectors corresponding to an inner join between the specified tables.