大家好,
我想大部分從SQL server數據庫表加載到ADLS鋪文件,然後這些文件加載到三角洲表(生/銅)。我做了一個曆史/基本負荷但我後續增量加載(日期重疊與曆史負荷)產生重複。一些閱讀到目前為止我所做的是指出使用本機python代碼,如“為”循環不建議在磚——我可以解決這個附加的所有SQL語句合並在一起並執行單個語句,但想知道如果這是這樣,為什麼?謝謝你!
更新:我已經刪除了代碼for循環和嚐試執行的一個表,看來問題不是“為”循環。如果記錄在曆史負荷和再次發生在增量加載負載但行並沒有改變——仍然被加載到表作為一個重複的行。做增量加載文件需要互斥的不含任何重疊與先前的文件行嗎?
代碼如下:
火花。sql(“使用原料;”)文件= dbutils.fs.ls (landingZoneLocation) fi的文件:如果fi。isFile: delta_table_name = " crm_ " + fi.name.split (“。”) [0] .lower () deltaTableCopyIntoSQL = "複製到三角洲。dbfs: / mnt /生/“+ delta_table_name +”從“dbfs: / mnt /著陸/ crm /“+ processDate +”/“+ fi.name +”FILEFORMAT =拚花;“打印(deltaTableCopyIntoSQL) spark.sql (deltaTableCopyIntoSQL)
文件明確指出,“這是一個retriable和冪等operation-files已經加載的源位置是跳過。”What it doesn't say is that this file load history is apparently specific to the COPY INTO operation--so in practice loading even the very first batch of data with COPY INTO is necessary to have a complete loading history and avoid reloading on subsequent runs.
但我將愉快地使用合並,盡管我還沒有找到正確的語法來加載,鑲花的,你能分享示例代碼使用並入和拚花?