文件元數據列

筆記

在Databricks運行時10.5及以上可用。

您可以獲取有關輸入文件的元數據信息_metadata柱子。這_metadata列是列,可用於所有輸入文件格式。包括_metadata返回的數據框中的列,您必須在查詢中明確將其引用。

如果數據源包含一個名稱的列_metadata,查詢將從數據源返回列,而不是文件元數據。

警告

新字段可能會添加到_metadata未來版本中的專欄。為了防止模式演變錯誤,如果_metadata已更新列,Databricks建議您從查詢中的列中選擇特定字段。看例子

支持的元數據

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

姓名

類型

描述

例子

文件路徑

細繩

輸入文件的文件路徑。

文件:/tmp/f0.csv

文件名

細繩

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

f0.csv

文件大小

輸入文件的長度,字節。

628

file_modification_time

時間戳

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

2021-12-2020:05:21

例子

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

DF=火花\ \格式((“ CSV”\ \模式((模式\ \加載((“ dbfs:/tmp/*”\ \選擇((“*”,,,,“ _metadata”展示((DF'''結果:+----------+-----+-----------------------------------------------------------------------------------------------------+|名稱|年齡|_metadata |+==============================================================================+|||{||||“ file_path”:“ dbfs:/tmp/f0.csv”,||黛比|18 |“ file_name”:“ f0.csv”,||||“ file_size”:12,||||“ file_modification_time”:“ 2021-07-02 01:05:21” ||||} |+----------+-----+-----------------------------------------------------------------------------------------------------+|||{||||“ file_path”:“ dbfs:/tmp/f1.csv”,||弗蘭克|24 |“ file_name”:“ f1.csv”,||||“ file_size”:12,||||“ file_modification_time”:“ 2021-12-20 02:06:21” ||||} |+----------+-----+-----------------------------------------------------------------------------------------------------+'''
瓦爾DF=火花格式((“ CSV”模式((模式加載((“ dbfs:/tmp/*”選擇((“*”,,,,“ _metadata”展示((DF_POPULUTION/* 結果:+----------+-----+-----------------------------------------------------------------------------------------------------+|名稱|年齡|_metadata |+==============================================================================+|||{||||“ file_path”:“ dbfs:/tmp/f0.csv”,||黛比|18 |“ file_name”:“ f0.csv”,||||“ file_size”:12,||||“ file_modification_time”:“ 2021-07-02 01:05:21” ||||} |+----------+-----+-----------------------------------------------------------------------------------------------------+|||{||||“ file_path”:“ dbfs:/tmp/f1.csv”,||弗蘭克|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”))

在複製中使用

複製進入my_delta_table((選擇*,,,,_metadata's3:// my-bucket/csvdata'文件格式=CSV

在自動加載機中使用

火花readstream\ \格式((“ Cloudfiles”\ \選項((“ cloudfiles.format”,,,,“ CSV”\ \模式((模式\ \加載((“ s3:// my-bucket/csvdata”\ \選擇((“*”,,,,“ _metadata”\ \writestream\ \格式((“三角洲”\ \選項((“ checkpointlocation”,,,,checkpointLocation\ \開始((目標台
火花readstream格式((“ Cloudfiles”選項((“ cloudfiles.format”,,,,“ CSV”模式((模式加載((“ s3:// my-bucket/csvdata”選擇((“*”,,,,“ _metadata”writestream格式((“三角洲”選項((“ checkpointlocation”,,,,checkpointLocation開始((目標台