Performs join/merge for disk.frames

# S3 method for disk.frame
anti_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  ...,
  outdir = tempfile("tmp_disk_frame_anti_join"),
  merge_by_chunk_id = FALSE,
  overwrite = TRUE,
  .progress = FALSE
)

# S3 method for disk.frame
full_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  ...,
  outdir = tempfile("tmp_disk_frame_full_join"),
  overwrite = TRUE,
  merge_by_chunk_id,
  .progress = FALSE
)

# S3 method for disk.frame
inner_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  ...,
  outdir = tempfile("tmp_disk_frame_inner_join"),
  merge_by_chunk_id = NULL,
  overwrite = TRUE,
  .progress = FALSE
)

# S3 method for disk.frame
left_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  ...,
  outdir = tempfile("tmp_disk_frame_left_join"),
  merge_by_chunk_id = FALSE,
  overwrite = TRUE,
  .progress = FALSE
)

# S3 method for disk.frame
semi_join(
  x,
  y,
  by = NULL,
  copy = FALSE,
  ...,
  outdir = tempfile("tmp_disk_frame_semi_join"),
  merge_by_chunk_id = FALSE,
  overwrite = TRUE,
  .progress = FALSE
)

Arguments

x

a disk.frame

y

a data.frame or disk.frame. If data.frame then returns lazily; if disk.frame it performs the join eagerly and return a disk.frame

by

join by

copy

same as dplyr::anti_join

...

same as dplyr's joins

outdir

output directory for disk.frame

merge_by_chunk_id

the merge is performed by chunk id

overwrite

overwrite output directory

.progress

Show progress or not. Defaults to FALSE

Value

disk.frame or data.frame/data.table

Examples

df.df = as.disk.frame(data.frame(x = 1:3, y = 4:6), overwrite = TRUE) df2.df = as.disk.frame(data.frame(x = 1:2, z = 10:11), overwrite = TRUE) anti_joined.df = anti_join(df.df, df2.df)
#> Warning: merge_by_chunk_id = FALSE. This will take significantly longer and the preparations needed are performed eagerly which may lead to poor performance. Consider making y a data.frame or set merge_by_chunk_id = TRUE for better performance.
#> Hashing...
#> Hashing...
#> Hashing...
#> Appending disk.frames:
#> Hashing...
#> Hashing...
#> Appending disk.frames:
anti_joined.df %>% collect
#> x y #> 1: 3 6
anti_joined.data.frame = anti_join(df.df, data.frame(x = 1:2, z = 10:11))
#> Joining, by = "x"
#> Joining, by = "x"
#> Joining, by = "x"
# clean up delete(df.df) delete(df2.df) delete(anti_joined.df) cars.df = as.disk.frame(cars) join.df = full_join(cars.df, cars.df, merge_by_chunk_id = TRUE) # clean up cars.df delete(cars.df) delete(join.df) cars.df = as.disk.frame(cars) join.df = inner_join(cars.df, cars.df, merge_by_chunk_id = TRUE) # clean up cars.df delete(cars.df) delete(join.df) cars.df = as.disk.frame(cars) join.df = left_join(cars.df, cars.df)
#> Warning: merge_by_chunk_id = FALSE. This will take significantly longer and the preparations needed are performed eagerly which may lead to poor performance. Consider making y a data.frame or set merge_by_chunk_id = TRUE for better performance.
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Appending disk.frames:
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Appending disk.frames:
# clean up cars.df delete(cars.df) delete(join.df) cars.df = as.disk.frame(cars) join.df = semi_join(cars.df, cars.df)
#> Warning: merge_by_chunk_id = FALSE. This will take significantly longer and the preparations needed are performed eagerly which may lead to poor performance. Consider making y a data.frame or set merge_by_chunk_id = TRUE for better performance.
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Appending disk.frames:
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Hashing...
#> Appending disk.frames:
# clean up cars.df delete(cars.df) delete(join.df)