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
Dataset
的 Schema。如果為NULL
(預設值),則將從資料來源推斷 schema。- partitioning
當
sources
是目錄路徑/URI 時,以下其中一項Schema
,在這種情況下,將會剖析相對於sources
的檔案路徑,並且路徑區段將會與 schema 欄位比對。定義與這些路徑區段相對應的欄位名稱的字元向量 (也就是說,您正在提供與
Schema
相對應的名稱,但類型將會自動偵測)Partitioning
或PartitioningFactory
,例如hive_partition()
所傳回的內容NULL
表示沒有分割
預設值是自動偵測 Hive 樣式分割,除非
hive_style = FALSE
。請參閱 "Partitioning" 區段以取得詳細資訊。當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)