跳到內容

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 (預設值),則將從資料來源推斷 schema。

partitioning

sources 是目錄路徑/URI 時,以下其中一項

  • Schema,在這種情況下,將會剖析相對於 sources 的檔案路徑,並且路徑區段將會與 schema 欄位比對。

  • 定義與這些路徑區段相對應的欄位名稱的字元向量 (也就是說,您正在提供與 Schema 相對應的名稱,但類型將會自動偵測)

  • PartitioningPartitioningFactory,例如 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 (因為可能有很多檔案且掃描可能很慢),但當 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 Schema,或 NULL (預設值) 以從資料推斷類型。

na

要解譯為遺失值的字串的字元向量。

skip_empty_rows

是否應完全忽略空白列?如果為 TRUE,則完全不會表示空白列。如果為 FALSE,它們將會填入遺失值。

skip

讀取資料前要跳過的行數。

convert_options

請參閱 CSV 轉換選項

read_options

請參閱 CSV 讀取選項

timestamp_parsers

使用者定義的時間戳記剖析器。如果指定多個剖析器,CSV 轉換邏輯將會嘗試從此向量的開頭開始剖析值。可能的值為

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)