跳到内容

open_dataset 的一个包装器,它显式地包含镜像 read_csv_arrow()read_delim_arrow()read_tsv_arrow() 的参数,以便轻松地在用于打开单个文件的函数和用于打开数据集的函数之间进行切换。

用法

open_delim_dataset(
  sources,
  schema = NULL,
  partitioning = hive_partition(),
  hive_style = NA,
  unify_schemas = NULL,
  factory_options = list(),
  delim = ",",
  quote = "\"",
  escape_double = TRUE,
  escape_backslash = FALSE,
  col_names = TRUE,
  col_types = NULL,
  na = c("", "NA"),
  skip_empty_rows = TRUE,
  skip = 0L,
  convert_options = NULL,
  read_options = NULL,
  timestamp_parsers = NULL,
  quoted_na = TRUE,
  parse_options = NULL
)

open_csv_dataset(
  sources,
  schema = NULL,
  partitioning = hive_partition(),
  hive_style = NA,
  unify_schemas = NULL,
  factory_options = list(),
  quote = "\"",
  escape_double = TRUE,
  escape_backslash = FALSE,
  col_names = TRUE,
  col_types = NULL,
  na = c("", "NA"),
  skip_empty_rows = TRUE,
  skip = 0L,
  convert_options = NULL,
  read_options = NULL,
  timestamp_parsers = NULL,
  quoted_na = TRUE,
  parse_options = NULL
)

open_tsv_dataset(
  sources,
  schema = NULL,
  partitioning = hive_partition(),
  hive_style = NA,
  unify_schemas = NULL,
  factory_options = list(),
  quote = "\"",
  escape_double = TRUE,
  escape_backslash = FALSE,
  col_names = TRUE,
  col_types = NULL,
  na = c("", "NA"),
  skip_empty_rows = TRUE,
  skip = 0L,
  convert_options = NULL,
  read_options = NULL,
  timestamp_parsers = NULL,
  quoted_na = TRUE,
  parse_options = NULL
)

参数

sources

下列之一

  • 包含数据文件的目录的字符串路径或 URI

  • 引用包含数据文件的目录的 FileSystem (例如 s3_bucket() 返回的)

  • 单个文件的字符串路径或 URI

  • 指向各个数据文件的路径或 URI 的字符向量

  • 此函数创建的 Dataset 对象列表

  • dataset_factory() 创建的 DatasetFactory 对象列表。

sources 是文件 URI 的向量时,它们必须都使用相同的协议,并且指向位于相同文件系统并且具有相同格式的文件。

schema

DatasetSchema。如果为 NULL (默认值),则将从数据源推断模式。

partitioning

sources 是目录路径/URI 时,下列之一

  • 一个 Schema,在这种情况下,将解析相对于 sources 的文件路径,并且路径段将与模式字段匹配。

  • 一个字符向量,用于定义与这些路径段相对应的字段名称 (也就是说,您正在提供与 Schema 对应的名称,但类型将自动检测)

  • 一个 PartitioningPartitioningFactory,例如 hive_partition() 返回的

  • NULL 表示不进行分区

默认设置为自动检测 Hive 风格的分区,除非 hive_style = FALSE。有关详细信息,请参见“分区”部分。当 sources 不是目录路径/URI 时,将忽略 partitioning

hive_style

逻辑值: partitioning 是否应解释为 Hive 风格? 默认值为 NA,这意味着检查文件路径中的 Hive 风格分区并相应地执行操作。

unify_schemas

逻辑值: 是否应扫描所有数据片段 (文件,Dataset) 以便从中创建统一的模式? 如果为 FALSE,则只会检查第一个片段的模式。当您知道并且信任所有片段都具有相同的模式时,请使用此快速路径。从目录路径/URI 或文件路径/URI 向量创建数据集时,默认值为 FALSE (因为可能有很多文件,并且扫描可能会很慢),但是当 sourcesDataset 的列表时,默认值为 TRUE (因为列表中应该只有少量 Dataset,并且它们的 Schema 已经在内存中)。

factory_options

可选 FileSystemFactoryOptions 的列表

  • partition_base_dir: 字符串路径段前缀,在使用 DirectoryPartitioning 发现分区信息时忽略。对于 HivePartitioning 没有意义 (忽略并发出警告),并且在提供文件路径向量时无效。

  • exclude_invalid_files: 逻辑值: 是否应排除不是有效数据文件的文件? 默认值为 FALSE,因为预先检查所有文件会产生 I/O,因此速度会较慢,尤其是在远程文件系统上。如果为 false 并且存在无效文件,则在扫描时会发生错误。这是唯一有效的 FileSystemFactoryOption,既适用于提供目录路径以在其中发现文件,也适用于提供文件路径向量。

  • selector_ignore_prefixes: 在目录中发现文件时要忽略的文件前缀的字符向量。如果可以通过这种方式通过常见的文件名前缀排除无效文件,则可以避免 exclude_invalid_files 的 I/O 成本。在提供文件路径向量时无效 (但是如果您正在提供文件列表,则可以自己过滤无效文件)。

delim

用于分隔记录中字段的单个字符。

quote

用于引用字符串的单个字符。

escape_double

该文件是否通过将引号加倍来转义引号?即,如果此选项为 TRUE,则值 """" 表示单个引号,\"

escape_backslash

该文件是否使用反斜杠来转义特殊字符?这比 escape_double 更通用,因为反斜杠可用于转义分隔符字符、引号字符或添加特殊字符,如 \\n

col_names

如果为 TRUE,则输入的首行将用作列名,并且不会包含在数据框中。如果为 FALSE,则列名将由 Arrow 生成,从“f0”、“f1”、...、“fN”开始。或者,您可以指定列名的字符向量。

col_types

列类型的紧凑字符串表示形式,Arrow SchemaNULL (默认值) 以从数据推断类型。

na

要解释为缺失值的字符串的字符向量。

skip_empty_rows

是否应完全忽略空白行?如果为 TRUE,则根本不会表示空白行。如果为 FALSE,则将用缺失值填充它们。

skip

读取数据之前要跳过的行数。

convert_options

请参阅 CSV 转换选项

read_options

请参阅 CSV 读取选项

timestamp_parsers

用户定义的时间戳解析器。如果指定了多个解析器,则 CSV 转换逻辑将尝试从该向量的开头开始解析值。可能的值为

  • NULL:默认值,使用 ISO-8601 解析器

  • strptime 解析字符串的字符向量

  • TimestampParser 对象的列表

quoted_na

引号内的缺失值应被视为缺失值 (默认设置) 还是字符串。(请注意,这与相应转换选项的 Arrow C++ 默认值 strings_can_be_null 不同。)

parse_options

请参阅 CSV 解析选项。如果给出,这将覆盖在其他参数中提供的任何解析选项 (例如,delimquote 等)。

read_delim_arrow() 当前支持但此处不支持的选项

  • file (请在 sources 中指定文件)

  • col_select (在数据集创建后,请子集列)

  • as_data_frame (在数据集创建后,请转换为数据框)

  • parse_options

另请参阅

示例

# Set up directory for examples
tf <- tempfile()
dir.create(tf)
df <- data.frame(x = c("1", "2", "NULL"))

file_path <- file.path(tf, "file1.txt")
write.table(df, file_path, sep = ",", row.names = FALSE)

read_csv_arrow(file_path, na = c("", "NA", "NULL"), col_names = "y", skip = 1)
#> # A tibble: 3 x 1
#>       y
#>   <int>
#> 1     1
#> 2     2
#> 3    NA
open_csv_dataset(file_path, na = c("", "NA", "NULL"), col_names = "y", skip = 1)
#> FileSystemDataset with 1 csv file
#> 1 columns
#> y: int64

unlink(tf)