適用於:
Databricks SQL
執行時間 18 LTS 及以上
Important
這項功能位於 測試版 (Beta) 中。 工作區管理員可以從 「預覽 」頁面控制對此功能的存取。 請參閱 管理 Azure Databricks 預覽。
型 FILE 別代表對非結構化檔案及其元資料的參考。 利用它來管理和處理文件、影像、音訊,以及 Unity Catalog 中的結構化資料。
FILE 類型僅支援 Delta Lake 資料表。
Note
這種 FILE 類型在無伺服器筆記本上不支援。 它支援於連接到無伺服器 Databricks SQL 倉庫的筆記本上。
Syntax
{ FILE MANAGED | FILE EXTERNAL }
當你宣告一個帶有 的欄位時,請使用 FILE MANAGED 或 FILE EXTERNAL 作為欄位 CREATE TABLE類型。 你無法在不指定 MANAGED 或 EXTERNAL的情況下宣告 為 FILE 的表格欄位。
FILE 僅允許作為 UDF、儲存程序或鑄造時的參數或回傳型別。
關於與 FILE MANAGED的比較FILE EXTERNAL,包括架構圖,請參見 FILE EXTERNAL 與 FILE MANAGED。
Fields
一個 FILE 值包含以下欄位:
| Field | 類型 | Description |
|---|---|---|
uri |
STRING |
檔案的 URI。 這場不可能是 null。 |
offset |
BIGINT |
檔案的偏移量以位元組為單位。 |
size |
BIGINT |
檔案的大小 (以位元組為單位)。 |
content_type |
STRING |
檔案的 MIME 類型(已知時)。 |
checksum |
STRING |
檔案中位元組的完整性權杖,形式 <algorithm>:<digest>為 。 關於已識別的演算法,請參見 校驗和。 |
Limits
- 這種
FILE類型不保證一定會下單。 你不能用欄位FILE作為分割欄位、叢集欄位、MAP鍵、連接鍵或群組表達式。 要按檔案分組,改用其uri欄位分組。
Literals
要建立 FILE 一個值,請參考以下函式:
-
to_file函式 從路徑建立FILE參考。 -
try_to_filefunction 從路徑建立FILE參考,若檔案不存在則回傳NULL。 -
create_file函式 會將內容上傳到路徑並回傳FILE一個參考。 -
copy_file函式 將檔案複製到目標路徑並回傳FILE一個參考。
到 CAST a VARIANT 或 STRUCT 值為 FILE:
- A
STRUCT必須恰好擁有這些欄位,並擁有這些名稱和類型:struct<uri:string, offset:bigint, size:bigint, content_type:string, checksum:string>。 -
VARIANTA 必須包含uri場地。 其他欄位皆為可選,其他鍵則忽略。
將 投射到 FILE,而非 投射至 FILE EXTERNALFILE MANAGED或 。 目標欄位決定結果引用是外部參考還是管理參考。 當你寫入欄位的 FILE MANAGED 外部參考時,Databricks 會將其匯入管理儲存。
Notes
- 作為頂層表格欄位, 必須
FILE宣告為FILE MANAGED或FILE EXTERNAL。 其他情況下的使用FILE:- 作為 SQL、Python 和 Scala 使用者定義函式(UDF)以及 SQL 儲存程序中的參數或回傳類型。
- 作為 a
CASTVARIANT或STRUCT值的目標類型。 - 嵌套於
STRUCT、ARRAY、 中,則 的值MAP,或VARIANT。 在VARIANT.
- 要讀取檔案元資料,請使用
uri、offset、checksumsizecontent_type、 和 欄位並加上點符號,例如 。file_column.uri - 要從檔案中擷取結構化內容,請將一個
FILE值傳入ai_parse_document函式 函式。
Examples
要宣告一個帶有外部 FILE 欄位的表格:
CREATE TABLE attachments (id BIGINT, attachment FILE EXTERNAL);
要從已存在於某個磁碟區的檔案中填充它:
INSERT INTO attachments
SELECT row_number() OVER (ORDER BY file.uri), file
FROM read_files('/Volumes/my_catalog/my_schema/my_volume/', format => 'file');
使用點符號讀取檔案元資料:
SELECT attachment.uri, attachment.size, attachment.checksum
FROM attachments;
要從結構體構造一個 FILE 值:
SELECT named_struct(
'uri', '/Volumes/my_catalog/my_schema/my_volume/report.pdf',
'offset', null,
'size', CAST(19494 AS BIGINT),
'content_type', 'application/pdf',
'checksum', 'ETAG:v1')::FILE;