共用方式為


read_files table-valued 函式

適用於:核取記號為「是」 Databricks SQL 核取記號為「是」 Databricks Runtime 13.3 LTS 和更新版本

讀取所提供位置下的檔案,並以表格式格式傳回數據。

支援讀取 JSONCSVXML、、BINARYFILETEXTPARQUET、、、AVROORC 檔案格式。 可以自動偵測檔格式,並推斷所有檔案的統一架構。

語法

read_files(path [, option_key => option_value ] [...])

引數

此函式需要 選項索引鍵的具名參數調用

  • pathSTRING:具有資料位置 URI 的 。 支援從 Azure Data Lake Storage Gen2 ('abfss://')、S3 (s3://) 和 Google Cloud Storage ('gs://') 讀取。 可以包含 Glob。 如需詳細資訊,請參閱 檔案探索
  • option_key:要設定的選項名稱。 您需要針對包含點 () 的選項使用反引號 (.')。
  • option_value:要設定選項的常數表達式。 接受常值和純量函式。

傳回

數據表,其中包含在指定 path底下讀取之檔案的數據。

檔案探索

read_files 可以讀取個別檔案或讀取所提供目錄下的檔案。 read_files除非提供 glob,否則會以遞歸方式探索所提供目錄下的所有檔案,這會指示read_files遞歸至特定的目錄模式。

使用 Glob 模式篩選目錄或檔案

Glob 模式可用於在路徑中提供時篩選目錄和檔案。

模式 描述
? 比對任何單一字元
* 比對零或多個字元
[abc] 比對字元集 {a,b,c} 的單一字元。
[a-z] 比對字元範圍 {a... 中的單一字元...z}.
[^a] 比對不是字元集或範圍 {a} 的單一字元。 請注意, ^ 字元必須緊接在左括弧右邊。
{ab,cd} 比對字串集 {ab, cd} 中的字串。
{ab,c{de, fh}} 比對字串集 {ab, cde, cfh} 中的字串。

read_files 在探索具有 glob 的檔案時,會使用自動載入器嚴格的 Globber。 此選項已設定 useStrictGlobber 。 停用嚴格的 globber 時,會捨棄尾端斜線 (/) 和星形圖樣,例如 /*/ 可以展開至探索多個目錄。 請參閱下列範例,以查看行為的差異。

模式 檔案路徑 已停用 Strict globber 已啟用 Strict globber
/a/b /a/b/c/file.txt
/a/b /a/b_dir/c/file.txt
/a/b /a/b.txt
/a/b/ /a/b.txt
/a/*/c/ /a/b/c/file.txt
/a/*/c/ /a/b/c/d/file.txt
/a/*/d/ /a/b/c/d/file.txt
/a/*/c/ /a/b/x/y/c/file.txt
/a/*/c /a/b/c_file.txt
/a/*/c/ /a/b/c_file.txt
/a/*/c /a/b/cookie/file.txt
/a/b* /a/b.txt
/a/b* /a/b/file.txt
/a/{0.txt,1.txt} /a/0.txt
/a/*/{0.txt,1.txt} /a/0.txt
/a/b/[cde-h]/i/ /a/b/c/i/file.txt

結構描述推斷

您可以使用 選項明確提供read_filesschema檔案的架構。 未提供架構時, read_files 會嘗試跨探索到的檔案推斷統一架構,除非使用 語句,否則 LIMIT 需要讀取所有檔案。 即使使用 LIMIT 查詢,可能也會讀取比所需的更大的檔案集,以傳回更代表性的數據架構。 如果使用者未提供查詢,Databricks 會自動新增 LIMIT 筆記本和 SQL 編輯器中的查詢語句 SELECT

schemaHints選項可用來修正推斷架構的子集。 如需詳細資訊,請參閱使用架構提示覆寫架構推斷。

預設會提供 , rescuedDataColumn 以營救不符合架構的任何數據。 如需詳細資訊,請參閱什麼是獲救的數據行? 您可以藉由設定 選項schemaEvolutionMode => 'none'來卸載 rescuedDataColumn

數據分割架構推斷

read_files如果檔案儲存在Hive樣式的分割目錄下,也可以推斷資料分割資料行,也就是/column_name=column_value/ schema如果提供 ,則探索到的數據分割數據行會使用 中schema提供的型別。 如果分割區數據行不屬於提供的 schema,則會忽略推斷的數據分割數據行。

如果數據行同時存在於數據分割架構和數據行中,則會使用從數據分割值讀取的值,而不是數據值。 如果您想要忽略來自目錄並使用資料行的值,您可以使用 選項,在逗號分隔清單中提供資料分割資料行的清單 partitionColumns

partitionColumns選項也可以用來指示read_files哪些探索到的數據行要包含在最終推斷的架構中。 提供空字串會忽略所有數據分割數據行。

schemaHints您也可以提供 選項來覆寫資料分割數據行的推斷架構。

TEXTBINARYFILE 格式具有固定的架構,但也read_files會儘可能嘗試推斷這些格式的數據分割。

串流數據表中的使用量

read_files 可用於串流數據表,將檔案內嵌至 Delta Lake。 read_files 在串流數據表查詢中使用時,會利用自動載入器。 您必須搭配 STREAM 使用 關鍵詞。read_files 如需詳細資訊,請參閱什麼是自動載入器?

在串流查詢中使用時, read_files 會使用數據的範例來推斷架構,並在處理更多數據時演進架構。 如需詳細資訊,請參閱 在自動載入器 中設定架構推斷和演進。

選項。

基本選項

選項
format

類型:String (英文)

來源路徑中的資料檔案格式。 如果未提供,則自動推斷。 允許的值包括:

- avroAvro 檔案
- binaryFile二進位檔案
- csv讀取 CSV 檔案
- jsonJSON 檔案
- orcORC 檔案
- parquet使用 Azure Databricks 讀取 Parquet 檔案
- text文字檔
- xml讀取和寫入 XML 檔案

預設值:無
inferColumnTypes

類型:Boolean (英文)

在利用結構描述推斷時,是否推斷確切的資料行類型。 根據預設,在推斷 JSON 和 CSV 數據集時,會推斷數據行。 如需詳細資料,請參閱結構描述推斷。 請注意,這與自動載入器的默認相反。

預設值:true
partitionColumns

類型:String (英文)

您要從檔案目錄結構推斷的 Hive 樣式分割資料行逗號分隔清單。 Hive 樣式數據分割數據行是由等號結合的索引鍵/值組
<base-path>/a=x/b=1/c=y/file.format. 在此範例中,分割資料行為 abc。 根據預設,如果您使用的是結構描述推斷並提供可從中載入資料的 <base-path>,則這些資料行將自動新增至結構描述中。 如果您提供結構描述,自動載入器會預期這些資料行包含在結構描述中。 如果不希望這些資料行成為結構描述的一部分,您可以指定 "" 以略過這些資料行。 此外,當您希望將資料行推斷為複雜目錄結構中的檔案路徑時,可以使用此選項,如下列範例所示:

<base-path>/year=2022/week=1/file1.csv
<base-path>/year=2022/month=2/day=3/file2.csv
<base-path>/year=2022/month=2/day=4/file3.csv

如果將 cloudFiles.partitionColumns 指定為 year,month,day,則
針對 year=2022,將傳回 file1.csv,但 monthday 資料行將為 null
對於 file2.csvfile3.csv,將正確剖析 monthday

預設值:無
schemaHints

類型:String (英文)

您在結構描述推斷期間提供給自動載入器的結構描述資訊。 如需詳細資料,請參閱結構描述提示

預設值:無
useStrictGlobber

類型:Boolean (英文)

是否使用與 Apache Spark 中其他檔案來源的預設萬用字元行為相符的嚴格萬用字元。 如需詳細資料,請參閱常見資料載入模式。 在 Databricks Runtime 12.2 LTS 和更新版本中可用。 請注意,這與自動載入器的默認相反。

預設值:true

泛型選項

下列選項適用於所有檔案格式。

選項
ignoreCorruptFiles

類型:Boolean (英文)

是否要略過損毀的檔案。 如果為 true,則 Spark 作業會在遇到損毀的檔案時繼續執行,而且仍然會傳回已讀取的內容。 可觀測到,如 numSkippedCorruptFiles 中所示
Delta Lake 歷程記錄的 operationMetrics 資料行。 在 Databricks Runtime 11.3 LTS 和更新版本中可用。

預設值:false
ignoreMissingFiles

類型:Boolean (英文)

是否略過遺漏的檔案。 如果為 true,則 Spark 作業會在遇到遺漏的檔案時繼續執行,而且仍然會傳回已讀取的內容。 在 Databricks Runtime 11.3 LTS 和更新版本中可用。

預設值:false (對於 trueCOPY INTO)
modifiedAfter

類型:Timestamp String,例如 2021-01-01 00:00:00.000000 UTC+0

一個選用時間戳記,用於擷取其修改時間戳記晚於所提供時間戳記的檔案。

預設值:無
modifiedBefore

類型:Timestamp String,例如 2021-01-01 00:00:00.000000 UTC+0

一個選用時間戳記,用於擷取其修改時間戳記早於所提供時間戳記的檔案。

預設值:無
pathGlobFilterfileNamePattern

類型:String (英文)

提供用於選擇檔案的一種潛在 Glob 模式。 相當於
COPY INTO 中的 PATTERNfileNamePattern 可以在 read_files 中使用。

預設值:無
recursiveFileLookup

類型:Boolean (英文)

是否在結構描述推斷期間略過分割推斷。 這不會影響載入的檔案。

預設值:false

JSON 選項

選項
allowBackslashEscapingAnyCharacter

類型:Boolean (英文)

是否允許反斜線逸出其後面的任何字元。 如果未啟用,則只能逸出 JSON 規格明確列出的字元。

預設值:false
allowComments

類型:Boolean (英文)

是否允許在剖析的內容中使用 Java、C 和 C++ 樣式註解 ('/''*''//' 變體)。

預設值:false
allowNonNumericNumbers

類型:Boolean (英文)

是否允許將非數字 (NaN) 權杖集用作合法浮點數值。

預設值:true
allowNumericLeadingZeros

類型:Boolean (英文)

是否允許整數以附加的 (可略過的) 零開頭 (例如 000001)。

預設值:false
allowSingleQuotes

類型:Boolean (英文)

是否允許使用單引號 (撇號字元 '\') 來引用字串 (名稱和字串值)。

預設值:true
allowUnquotedControlChars

類型:Boolean (英文)

是否允許 JSON 字串包含未逸出的控制字元 (值小於 32 的 ASCII 字元,包括定位字元和換行字元)。

預設值:false
allowUnquotedFieldNames

類型:Boolean (英文)

是否允許使用未加上引號的欄位名稱 (JavaScript 允許,但 JSON 規格不允許)。

預設值:false
badRecordsPath

類型:String (英文)

用於記錄有關錯誤 JSON 記錄的資訊的檔案儲存路徑。

預設值:無
columnNameOfCorruptRecord

類型:String (英文)

儲存格式錯誤且無法剖析的記錄的資料行。 如果用於剖析的 mode 設定為 DROPMALFORMED,則此資料行將為空。

預設值:_corrupt_record
dateFormat

類型:String (英文)

用於剖析日期字串的格式。

預設值:yyyy-MM-dd
dropFieldIfAllNull

類型:Boolean (英文)

是否要在結構描述推斷期間略過所有 Null 值或空陣列和結構的資料行。

預設值:false
encodingcharset

類型:String (英文)

JSON 檔案編碼的名稱。 如需選項清單,請參閱 java.nio.charset.Charset。 當 multilinetrue 時,您無法使用 UTF-16UTF-32

預設值:UTF-8
inferTimestamp

類型:Boolean (英文)

是否嘗試將時間戳記字串推斷為 TimestampType。 設定為
true 時,結構描述推斷可能需要明顯更長的時間。 您必須啟用 cloudFiles.inferColumnTypes,才能與自動載入器搭配使用。

預設值:false
lineSep

類型:String (英文)

兩筆連續 JSON 記錄之間的字串。

預設值:無,其中涵蓋 \r\r\n\n
locale

類型:String (英文)

java.util.Locale 識別碼。 影響 JSON 內的預設日期、時間戳記和十進位剖析。

預設值:US
mode

類型:String (英文)

圍繞處理格式錯誤的記錄的剖析器模式。 下列其中一項:'PERMISSIVE'
'DROPMALFORMED''FAILFAST'

預設值:PERMISSIVE
multiLine

類型:Boolean (英文)

JSON 記錄是否跨越多行。

預設值:false
prefersDecimal

類型:Boolean (英文)

如果可能,嘗試將字串推斷為 DecimalType 而不是浮點型或雙精確度型。 還必須透過啟用以下項來使用結構描述推斷:
inferSchema 或將 cloudFiles.inferColumnTypes 與自動載入器搭配使用。

預設值:false
primitivesAsString

類型:Boolean (英文)

是否將數字和布林值等基本類型推斷為 StringType

預設值:false
readerCaseSensitive

類型:Boolean (英文)

指定啟用 rescuedDataColumn 時區分大小寫的行為。 如果為 true,則修復名稱因大小寫而與結構描述不同的資料行;否則,請以不區分大小寫的方式讀取資料。 在 Databricks Runtime
13.3 和更新版本中可用。

預設值:true
rescuedDataColumn

類型:String (英文)

是否將因資料類型不符或結構描述不符 (包括資料行大小寫) 而無法剖析的所有資料收集至個別資料行。 使用自動載入器時,預設包含此資料行。 如需詳細資料,請參閱什麼是修復的資料行?

預設值:無
singleVariantColumn

類型:String (英文)

是否擷取整個 JSON 文件,將其剖析為以指定字串作為資料行名稱的單一 Variant 資料行。 如果停用,JSON 欄位將會擷取至自己的資料行。

預設值:無
timestampFormat

類型:String (英文)

用於剖析時間戳記字串的格式。

預設值:yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
timeZone

類型:String (英文)

剖析時間戳記和日期時要使用的 java.time.ZoneId

預設值:無

CSV 選項

選項
badRecordsPath

類型:String (英文)

用於記錄有關錯誤 CSV 記錄的資訊的檔案儲存路徑。

預設值:無
charToEscapeQuoteEscaping

類型:Char (英文)

用於對逸出引號的字元進行逸出的字元。 例如,對於下列記錄:[ " a\\", b ]

- 如果未定義用於逸出 '\' 的字元,則不會剖析記錄。 剖析器會將字元讀取為 [a],[\],["],[,],[ ],[b],並擲回錯誤,因為它找不到右引號。
- 如果要逸出 '\' 的字元定義為 '\',則讀取的記錄會帶有 2 個值:[a\][b]

預設值:'\0'
columnNameOfCorruptRecord

> [!NOTE] >> 支援自動載入器。 不支援 COPY INTO

類型:String (英文)

儲存格式錯誤且無法剖析的記錄的資料行。 如果用於剖析的 mode 設定為 DROPMALFORMED,則此資料行將為空。

預設值:_corrupt_record
comment

類型:Char (英文)

定義表示行註解的字元 (位於文字行的開頭時)。 使用 '\0' 來停用註解略過。

預設值:'\u0000'
dateFormat

類型:String (英文)

用於剖析日期字串的格式。

預設值:yyyy-MM-dd
emptyValue

類型:String (英文)

空值的字串表示法。

預設值:""
encodingcharset

類型:String (英文)

CSV 檔案編碼的名稱。 如需選項清單,請參閱 java.nio.charset.Charset。 當 UTF-16true 時,不能使用 multilineUTF-32

預設值:UTF-8
enforceSchema

類型:Boolean (英文)

是否將指定的或推斷的結構描述強制套用於 CSV 檔案。 如果啟用此選項,則會略過 CSV 檔案的標頭。 根據預設,當使用自動載入器來修復資料並允許結構描述演進時,會略過此選項。

預設值:true
escape

類型:Char (英文)

剖析資料時要使用的逸出字元。

預設值:'\'
header

類型:Boolean (英文)

CSV 檔案是否包含標頭。 自動載入器在推斷結構描述時,假設檔案具有標頭。

預設值:false
ignoreLeadingWhiteSpace

類型:Boolean (英文)

是否略過每個所剖析值的前置空白字元。

預設值:false
ignoreTrailingWhiteSpace

類型:Boolean (英文)

是否略過每個所剖析值的後置空白字元。

預設值:false
inferSchema

類型:Boolean (英文)

是推斷所剖析 CSV 記錄的資料類型,還是假設所有資料行都是 StringType。 如果設定為 true,則需要對資料進行另一輪作業。 針對 [自動載入器],請改用 cloudFiles.inferColumnTypes

預設值:false
lineSep

類型:String (英文)

兩筆連續 CSV 記錄之間的字串。

預設值:無,其中涵蓋 \r\r\n\n
locale

類型:String (英文)

java.util.Locale 識別碼。 影響 CSV 內的預設日期、時間戳記和十進位剖析。

預設值:US
maxCharsPerColumn

類型:Int (英文)

要剖析的值預期包含的字元數上限。 可用於避免記憶體錯誤。 預設為 -1,這表示無限制。

預設值:-1
maxColumns

類型:Int (英文)

記錄可以包含的資料行數的硬性限制。

預設值:20480
mergeSchema

類型:Boolean (英文)

是否要跨多個檔案推斷結構描述,以及合併每個檔案的結構描述。 已預設在推斷結構描述時為自動載入器啟用。

預設值:false
mode

類型:String (英文)

圍繞處理格式錯誤的記錄的剖析器模式。 下列其中一項:'PERMISSIVE'
'DROPMALFORMED''FAILFAST'

預設值:PERMISSIVE
multiLine

類型:Boolean (英文)

CSV 記錄是否跨多行。

預設值:false
nanValue

類型:String (英文)

剖析 FloatTypeDoubleType 資料行時,非數值的字串表示法。

預設值:"NaN"
negativeInf

類型:String (英文)

剖析 FloatTypeDoubleType 資料行時,負無限大的字串表示法。

預設值:"-Inf"
nullValue

類型:String (英文)

Null 值的字串表示法。

預設值:""
parserCaseSensitive (已取代)

類型:Boolean (英文)

讀取檔案時,將標頭中宣告的資料行與結構描述對齊時是否區分大小寫。 對於自動載入器,此選項預設為 true。 如果啟用,則會在 rescuedDataColumn 中修復大小寫不同的資料行。 此選項已取代為 readerCaseSensitive

預設值:false
positiveInf

類型:String (英文)

剖析 FloatTypeDoubleType 資料行時,正無限大的字串表示法。

預設值:"Inf"
preferDate

類型:Boolean (英文)

如果可能,嘗試將字串推斷為日期而不是時間戳記。 還必須透過啟用 inferSchema 或將
cloudFiles.inferColumnTypes 與自動載入器搭配使用來使用結構描述推斷。

預設值:true
quote

類型:Char (英文)

當欄位分隔符號是值的一部分時用於逸出值的字元。

預設值:"
readerCaseSensitive

類型:Boolean (英文)

指定啟用 rescuedDataColumn 時區分大小寫的行為。 如果為 true,則修復名稱因大小寫而與結構描述不同的資料行;否則,請以不區分大小寫的方式讀取資料。

預設值:true
rescuedDataColumn

類型:String (英文)

是否將因資料類型不符和結構描述不符 (包括資料行大小寫) 而無法剖析的所有資料收集至個別資料行。 使用自動載入器時,預設包含此資料行。 如需詳細資料,請參閱什麼是修復的資料行?

預設值:無
sepdelimiter

類型:String (英文)

資料行之間的分隔符號字串。

預設值:","
skipRows

類型:Int (英文)

CSV 檔案開頭應略過的資料列數 (包括註解資料列和空資料列)。 如果 header 為 true,則標頭將是第一個未略過和未註解的資料列。

預設值:0
timestampFormat

類型:String (英文)

用於剖析時間戳記字串的格式。

預設值:yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]
timeZone

類型:String (英文)

剖析時間戳記和日期時要使用的 java.time.ZoneId

預設值:無
unescapedQuoteHandling

類型:String (英文)

處理未逸出引號的策略。 允許的選項:

- STOP_AT_CLOSING_QUOTE:如果在輸入中發現了未逸出的引號,則會累積引號字元並繼續將值剖析為帶引號的值,直至找到右引號。
- BACK_TO_DELIMITER:如果在輸入中發現了未逸出的引號,則會將此值視為未加上引號的值。 這會使剖析器累積目前剖析值的所有字元,直到找到 sep 定義的分隔符號。 如果在值中找不到分隔符號,剖析器會繼續從輸入累積字元,直至找到分隔符號或行尾結束符號為止。
- STOP_AT_DELIMITER:如果在輸入中發現了未逸出的引號,則會將此值視為未加上引號的值。 這會使剖析器累積所有字元,直至在輸入中找到 sep 定義的分隔符號或找到行尾結束符號。
- SKIP_VALUE:如果在輸入中發現未逸出的引號,則將略過針對指定值剖析的內容 (直至找到下一個分隔符號),並將改為產生 nullValue 中設定的值。
- RAISE_ERROR:如果在輸入中發現未逸出的引號,則會擲回
TextParsingException

預設值:STOP_AT_DELIMITER

XML 選項

選項 描述 範圍
rowTag 要視為資料列的 XML 檔案的資料列標籤。 在範例 XML <books> <book><book>...<books> 中,適當的值為 book。 這是必要選項。 已讀
samplingRatio 定義用於結構描述推斷的資料列的一部分。 XML 內建函數會略過此選項。 預設值:1.0 已讀
excludeAttribute 是否要排除元素中的屬性。 預設值:false 已讀
mode 在剖析期間處理損毀記錄的模式。

PERMISSIVE:對於損毀的記錄,將格式錯誤的字串放入由 columnNameOfCorruptRecord 設定的欄位中,並將格式錯誤的欄位設定為 null。 若要保留損毀的記錄,您可以在使用者定義的結構描述中設定名為 stringcolumnNameOfCorruptRecord 類型欄位。 如果結構描述沒有欄位,剖析期間會捨棄損毀的記錄。 推斷結構描述時,剖析器會隱含地在輸出結構描述中新增 columnNameOfCorruptRecord 欄位。

DROPMALFORMED:略過損毀的記錄。 XML 內建函數不支援此模式。

FAILFAST:剖析器遇到損毀的記錄時擲回例外狀況。
已讀
inferSchema 如果為 true,則嘗試推斷每個產生的 DataFrame 資料行的適當類型。 如果為 false,則所有產生的資料行都是 string 類型。 預設:
true. XML 內建函數會略過此選項。
已讀
columnNameOfCorruptRecord 允許重新命名包含由
PERMISSIVE 模式建立的格式錯誤的字串的新欄位。 預設值:spark.sql.columnNameOfCorruptRecord
已讀
attributePrefix 屬性的前置詞,用於區分屬性與元素。 這將是欄位名稱的前置詞。 預設值為 _。 讀取 XML 時可以為空,但寫入時不能為空。 讀取、寫入
valueTag 此標籤用於同時具有屬性的元素或子元素的元素內的字元資料。 使用者可以在結構描述中指定 valueTag 欄位,或者當字元資料存在於具有其他元素或屬性的元素中時,該欄位將在結構描述推斷期間自動新增。 預設:_VALUE 讀取、寫入
encoding 對於讀取,請依指定的編碼類型解碼 XML 檔案。 對於寫入,請指定已儲存 XML 檔案的編碼 (字元集)。 XML 內建函數會略過此選項。 預設值:UTF-8 讀取、寫入
ignoreSurroundingSpaces 定義是否應略過正在讀取的值周圍的空白字元。 預設值:true。 將略過只有空白字元的字元資料。 已讀
rowValidationXSDPath 選用 XSD 檔案的路徑,用於個別驗證每個資料列的 XML。 無法驗證的資料列視為上述剖析錯誤。 XSD 不會以其他方式影響提供或推斷的結構描述。 已讀
ignoreNamespace 如果為 true,則略過 XML 元素和屬性上的命名空間前置詞。 例如,標籤 <abc:author><def:author> 視為兩者都只是 <author>。 無法略過 rowTag 元素上的命名空間,只略過其讀取子元素。 即使為 false,XML 剖析也不會識別命名空間。 預設值:false 已讀
timestampFormat 遵循日期時間模式格式的自訂時間戳記格式字串。 這適用於 timestamp 類型。 預設值:yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX] 讀取、寫入
timestampNTZFormat 遵循日期時間模式格式的不帶時區的自訂時間戳記格式字串。 這適用於 TimestampNTZType 類型。 預設:
yyyy-MM-dd'T'HH:mm:ss[.SSS]
讀取、寫入
dateFormat 遵循日期時間模式格式的自訂日期格式字串。 這適用於日期類型。 預設值:yyyy-MM-dd 讀取、寫入
locale 將地區設定設為 IETF BCP 47 格式的語言標籤。 例如,在剖析日期和時間戳記時使用 locale。 預設值:en-US 已讀
rootTag XML 檔案的根標籤。 例如,在 <books> <book><book>...</books> 中,適當的值為 books。 您可以透過指定類似 books foo="bar" 的值來包含基本屬性。 預設值:ROWS write
declaration 要在每個輸出 XML 檔案的開頭 (在 rootTag 之前) 寫入的 XML 宣告內容。 例如,foo 的值會導致寫入 <?xml foo?>。 設定空字串以隱藏。 預設值:version="1.0"
encoding="UTF-8" standalone="yes".
write
arrayElementName 寫入時將陣列值資料行的每個元素括起來的 XML 元素的名稱。 預設值:item write
nullValue 設定 null 值的字串表示法。 預設值:字串 null。 當這是 null 時,剖析器不會為欄位寫入屬性和元素。 讀取、寫入
compression 儲存至檔案時使用的壓縮碼。 這可以是已知不區分大小寫的縮寫名稱之一 (nonebzip2gziplz4snappy
deflate). XML 內建函數會略過此選項。 預設值:none
write
validateName 如果為 true,則當 XML 元素名稱驗證失敗時擲回錯誤。 例如,SQL 欄位名稱可以有空格,但 XML 元素名稱不能有空格。 預設值:
true.
write
readerCaseSensitive 指定啟用 rescuedDataColumn 時區分大小寫的行為。 如果為 true,則修復名稱因大小寫而與結構描述不同的資料行;否則,請以不區分大小寫的方式讀取資料。 預設值:true 已讀
rescuedDataColumn 是否將因資料類型不符和結構描述不符 (包括資料行大小寫) 而無法剖析的所有資料收集至個別資料行。 使用自動載入器時,預設包含此資料行。 如需詳細資料,請參閱什麼是修復的資料行?。 預設值:無。 已讀

PARQUET 選項

選項
datetimeRebaseMode

類型:String (英文)

控制 DATE 和 TIMESTAMP 值在凱撒曆與前西曆之間的重訂基底。 允許的值:EXCEPTIONLEGACY
CORRECTED.

預設值:LEGACY
int96RebaseMode

類型:String (英文)

控制 INT96 時間戳記值在凱撒曆與前西曆之間的重訂基底。 允許的值:EXCEPTIONLEGACY
CORRECTED.

預設值:LEGACY
mergeSchema

類型:Boolean (英文)

是否要跨多個檔案推斷結構描述,以及合併每個檔案的結構描述。

預設值:false
readerCaseSensitive

類型:Boolean (英文)

指定啟用 rescuedDataColumn 時區分大小寫的行為。 如果為 true,則修復名稱因大小寫而與結構描述不同的資料行;否則,請以不區分大小寫的方式讀取資料。

預設值:true
rescuedDataColumn

類型:String (英文)

是否將因資料類型不符和結構描述不符 (包括資料行大小寫) 而無法剖析的所有資料收集至個別資料行。 使用自動載入器時,預設包含此資料行。 如需詳細資料,請參閱什麼是修復的資料行?

預設值:無

AVRO 選項

選項
avroSchema

類型:String (英文)

使用者以 Avro 格式提供的選用結構描述。 讀取 Avro 時,可以將此選項設定為一個演進的結構描述,該結構描述與實際 Avro 結構描述相容但不同。 還原序列化結構描述會與演進的結構描述保持一致。 例如,如果您設定的演進結構描述包含一個具有預設值的其他資料行,則讀取結果也會包含該新資料行。

預設值:無
datetimeRebaseMode

類型:String (英文)

控制 DATE 和 TIMESTAMP 值在凱撒曆與前西曆之間的重訂基底。 允許的值:EXCEPTIONLEGACY
CORRECTED.

預設值:LEGACY
mergeSchema

類型:Boolean (英文)

是否要跨多個檔案推斷結構描述,以及合併每個檔案的結構描述。
Avro 的 mergeSchema 不會放寬資料類型。

預設值:false
readerCaseSensitive

類型:Boolean (英文)

指定啟用 rescuedDataColumn 時區分大小寫的行為。 如果為 true,則修復名稱因大小寫而與結構描述不同的資料行;否則,請以不區分大小寫的方式讀取資料。

預設值:true
rescuedDataColumn

類型:String (英文)

是否將因資料類型不符和結構描述不符 (包括資料行大小寫) 而無法剖析的所有資料收集至個別資料行。 使用自動載入器時,預設包含此資料行。 如需詳細資料,請參閱什麼是修復的資料行?

預設值:無

BINARYFILE 選項

二進位檔案沒有任何額外的組態選項。

TEXT 選項

選項
encoding

類型:String (英文)

TEXT 檔案編碼的名稱。 如需選項清單,請參閱 java.nio.charset.Charset

預設值:UTF-8
lineSep

類型:String (英文)

兩筆連續 TEXT 記錄之間的字串。

預設值:無,其中涵蓋 \r\r\n\n
wholeText

類型:Boolean (英文)

是否要將檔案讀取為單一記錄。

預設值:false

ORC 選項

選項
mergeSchema

類型:Boolean (英文)

是否要跨多個檔案推斷結構描述,以及合併每個檔案的結構描述。

預設值:false

串流選項

這些選項適用於在串流數據表或串流查詢內使用read_files時。

選項
allowOverwrites

類型:Boolean (英文)

是否要重新處理探索後已修改的檔案。 自上次成功重新整理查詢開始時間之後,檔案的最新可用版本將會在重新整理期間處理。

預設值:false
includeExistingFiles

類型:Boolean (英文)

是包含串流處理輸入路徑中的現有檔案,還是僅處理初始設定後到達的新檔案。 僅在您第一次啟動串流時會評估此選項。 在重新啟動串流後變更此選項沒有任何作用。

預設值:true
maxBytesPerTrigger

類型:Byte String (英文)

每個觸發程序中要處理的新位元組數目上限。 您可以指定位元組字串 (例如 10g),將每個微批次限制為 10 GB 資料。 這是軟最大值。 如果每個檔案為 3 GB,則 Azure Databricks 在一個微批次中可以處理 12 GB。 與 maxFilesPerTrigger 一起使用時,Azure Databricks 最多將消耗 maxFilesPerTriggermaxBytesPerTrigger 的下限 (以先達到者為准)。

注意:對於在無伺服器 SQL 倉儲上建立的串流數據表,此選項 maxFilesPerTrigger 不應設定為利用動態許可控制,這會依工作負載大小和無伺服器計算資源進行調整,以提供最佳的延遲和效能。

預設值:無
maxFilesPerTrigger

類型:Integer (英文)

每個觸發程序中要處理的新檔案數目上限。 與 maxBytesPerTrigger 一起使用時,Azure Databricks 最多將消耗 maxFilesPerTriggermaxBytesPerTrigger 的下限 (以先達到者為准)。

注意:對於在無伺服器 SQL 倉儲上建立的串流數據表,此選項 maxBytesPerTrigger 不應設定為利用動態許可控制,這會依工作負載大小和無伺服器計算資源進行調整,以提供最佳的延遲和效能。

預設值:1000
schemaEvolutionMode

類型:String (英文)

在資料中探索新資料行時,結構描述演進的模式。 根據預設,在推斷 JSON 資料集時,資料行會推斷為字串。 如需詳細資料,請參閱結構描述演進。 此選項不適用於 textbinaryFile 檔案。

預設值:未提供結構描述時為 "addNewColumns"
否則為 "none"
schemaLocation

類型:String (英文)

儲存推斷結構描述和後續變更的位置。 如需詳細資料,請參閱結構描述推斷。 在串流數據表查詢中使用時,不需要架構位置。

預設值:無

範例

-- Reads the files available in the given path. Auto-detects the format and schema of the data.
> SELECT * FROM read_files('abfss://container@storageAccount.dfs.core.windows.net/base/path');

-- Reads the headerless CSV files in the given path with the provided schema.
> SELECT * FROM read_files(
    's3://bucket/path',
    format => 'csv',
    schema => 'id int, ts timestamp, event string');

-- Infers the schema of CSV files with headers. Because the schema is not provided,
-- the CSV files are assumed to have headers.
> SELECT * FROM read_files(
    's3://bucket/path',
    format => 'csv')

-- Reads files that have a csv suffix.
> SELECT * FROM read_files('s3://bucket/path/*.csv')

-- Reads a single JSON file
> SELECT * FROM read_files(
    'abfss://container@storageAccount.dfs.core.windows.net/path/single.json')

-- Reads JSON files and overrides the data type of the column `id` to integer.
> SELECT * FROM read_files(
    's3://bucket/path',
    format => 'json',
    schemaHints => 'id int')

-- Reads files that have been uploaded or modified yesterday.
> SELECT * FROM read_files(
    'gs://my-bucket/avroData',
    modifiedAfter => date_sub(current_date(), 1),
    modifiedBefore => current_date())

-- Creates a Delta table and stores the source file path as part of the data
> CREATE TABLE my_avro_data
  AS SELECT *, _metadata.file_path
  FROM read_files('gs://my-bucket/avroData')

-- Creates a streaming table that processes files that appear only after the table's creation.
-- The table will most likely be empty (if there's no clock skew) after being first created,
-- and future refreshes will bring new data in.
> CREATE OR REFRESH STREAMING TABLE avro_data
  AS SELECT * FROM STREAM read_files('gs://my-bucket/avroData', includeExistingFiles => false);