文件元數據列

請注意

在Databricks Runtime 10.5及以上版本中可用。

方法可以獲取輸入文件的元數據信息_metadata列。的_metadata列是隱藏的列,並且可用於所有輸入文件格式。要包括_metadata列,你必須顯式地引用它在你的查詢。

如果數據源包含名為_metadata,查詢將返回來自數據源的列,而不是文件元數據。

警告

屬性中可以添加新的字段_metadata專欄。來防止模式演變錯誤_metadata列更新時,Databricks建議從查詢中的列中選擇特定的字段。看到例子

支持元數據

_metadata列是結構體包含以下字段:

名字

類型

描述

例子

file_path

字符串

輸入文件的路徑。

文件:/ tmp / f0.csv

file_name

字符串

輸入文件的名稱及其擴展名。

f0.csv

file_size

輸入文件的長度,以字節為單位。

628

file_modification_time

時間戳

輸入文件的最後一次修改時間戳。

2021-12-2020:05:21

例子

在基本的基於文件的數據源閱讀器中使用

df火花格式“csv”模式模式負載“dbfs: / tmp / *”選擇“*”“_metadata”顯示df“‘結果:+---------+-----+----------------------------------------------------+| name | age | _metadata | .使用實例+=========+=====+====================================================+| | | {|| | | "file_path": "dbfs:/tmp/f0.csv", || Debbie | 18 | "file_name": "f0.csv", | .csv"| | | "file_size": 12, || | | "file_modification_time": "2021-07-02 01:05:21" | .| | |} |+---------+-----+----------------------------------------------------+| | | {|| | | "file_path": "dbfs:/tmp/f1.csv", | | | "file_path": "dbfs:/tmp/f1.csv| Frank | 24 | "file_name": "f1.csv", || | | "file_size": 12, || | | "file_modification_time": "2021-12-20 02:06:21" || | |} |+---------+-----+----------------------------------------------------+“‘
瓦爾df火花格式“csv”模式模式負載“dbfs: / tmp / *”選擇“*”“_metadata”顯示df_population/ *結果:+---------+-----+----------------------------------------------------+| name | age | _metadata | .使用實例+=========+=====+====================================================+| | | {|| | | "file_path": "dbfs:/tmp/f0.csv", || Debbie | 18 | "file_name": "f0.csv", | .csv"| | | "file_size": 12, || | | "file_modification_time": "2021-07-02 01:05:21" | .| | |} |+---------+-----+----------------------------------------------------+| | | {|| | | "file_path": "dbfs:/tmp/f1.csv", | | | "file_path": "dbfs:/tmp/f1.csv| Frank | 24 | "file_name": "f1.csv", || | | "file_size": 10, || | | "file_modification_time": "2021-12-20 02:06:21" || | |} |+---------+-----+----------------------------------------------------+* /

選擇特定字段

火花格式“csv”模式模式負載“dbfs: / tmp / *”選擇“_metadata.file_name”“_metadata.file_size”
火花格式“csv”模式模式負載“dbfs: / tmp / *”選擇“_metadata.file_name”“_metadata.file_size”

在過濾器中使用

火花格式“csv”模式模式負載“dbfs: / tmp / *”選擇“*”過濾器上校“_metadata.file_name”= =點燃“test.csv”))
火花格式“csv”模式模式負載“dbfs: / tmp / *”選擇“*”過濾器上校“_metadata.file_name”= = =點燃“test.csv”))

用於COPY INTO

複製my_delta_table選擇_metadata“gs: / /桶/ csvData”FILEFORMATCSV

在自動裝載機中使用

請注意

當寫_metadata列,我們將其重命名為source_metadata.寫成_metadata將使它無法訪問目標表中的元數據列,因為如果數據源包含一個名為_metadata,查詢將返回來自數據源的列,而不是文件元數據。

火花readStream格式“cloudFiles”選項“cloudFiles.format”“csv”模式模式負載“gs: / /桶/ csvData”selectExpr“*”"_metadata as source_metadata"writeStream格式“δ”選項“checkpointLocation”checkpointLocation開始targetTable
火花readStream格式“cloudFiles”選項“cloudFiles.format”“csv”模式模式負載“gs: / /桶/ csvData”selectExpr“*”"_metadata as source_metadata"writeStream格式“δ”選項“checkpointLocation”checkpointLocation開始targetTable