一个围绕 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
Schema 用于
Dataset
。如果为NULL
(默认值),则将从数据源推断出 schema。- partitioning
当
sources
是目录路径/URI 时,以下之一一个
Schema
,在这种情况下,将解析相对于sources
的文件路径,并将路径段与 schema 字段匹配。一个字符向量,它定义与这些路径段相对应的字段名称(也就是说,您提供了与
Schema
相对应的名称,但类型将自动检测)一个
Partitioning
或PartitioningFactory
,例如由hive_partition()
返回NULL
表示没有分区
默认情况下,除非
hive_style = FALSE
,否则将自动检测 Hive 风格的分区。有关详细信息,请参阅“分区”部分。当sources
不是目录路径/URI 时,partitioning
将被忽略。- hive_style
逻辑:
partitioning
应该解释为 Hive 风格吗?默认值为NA
,这意味着检查文件路径以查找 Hive 风格的分区并相应地执行操作。- unify_schemas
逻辑:是否应该扫描所有数据片段(文件、
Dataset
)以从它们创建统一的 schema?如果为FALSE
,则只检查第一个片段的 schema。当您知道并相信所有片段都具有相同的 schema 时,请使用此快速路径。默认情况下,当从目录路径/URI 或文件路径/URI 向量创建数据集时,该值为FALSE
(因为可能存在许多文件,扫描可能很慢),但在sources
为Dataset
列表时,该值为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 Schema 或
NULL
(默认值)以从数据推断类型。- 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 解析选项。如果给出,这将覆盖其他参数中提供的任何解析选项(例如
delim
、quote
等)。
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)