@Bennett蘭伯特:
是的,它是可以自動從青銅表刪除記錄源文件被刪除時,沒有做一個完整的刷新。實現這一目標的一個方法是利用變化數據捕獲(CDC)功能在磚三角洲。
δ疾控中心跟蹤更改表和生成一個變化表,記錄插入、更新和刪除操作在桌子上。您可以使用CDC表來跟蹤變化時銅表和刪除相應的記錄源文件被刪除。
使CDC三角洲表,您需要生成一個疾控中心使用三角洲表。日誌API。這裏有一個例子如何生成一個疾控中心表:
從pyspark.sql。進口current_timestampδ函數。表導入DeltaTable bronze_table_path =“/ mnt / s3 / /銅源”cdc_table_path =“/ mnt / s3 / /美國疾病控製與預防中心源”#為青銅表DeltaTable啟用疾控中心。forPath(火花,bronze_table_path) .generate (deltaPath = cdc_table_path) #得到表cdc_table = DeltaTable疾控中心。forPath(火花,cdc_table_path) #刪除記錄從青銅表刪除源文件時bronze_table = DeltaTable。forPath(火花,bronze_table_path) bronze_table.alias (b)。合並(cdc_table.alias (“c”),“b。<主鍵列> = c。< >主鍵列和c。= ' D '行動”).whenMatchedDelete () . execute () # CDC表的最新更新時間戳cdc_table.alias (“c”)。合並(bronze_table.alias (b))。whenMatchedUpdate(設置={“時間戳”:current_timestamp ()})。whenNotMatchedInsert(值={“時間戳”:current_timestamp ()}) . execute ()
在這個例子中,我們首先使CDC的青銅表通過生成一個疾控中心表。然後我們得到CDC表和使用它來從青銅表刪除相應的記錄刪除操作時檢測到。最後,我們更新CDC表最新的時間戳。
您可以運行這段代碼作為磚工作或管道自動化生成的過程的一部分CDC表從青銅表和刪除記錄。