簡體   English   中英

Azure數據工廠僅從Blob存儲中檢索新的Blob文件

[英]Azure Data Factory Only Retrieve New Blob files from Blob Storage

我目前正在將Blob文件從Azure Blob存儲復制到Azure SQL數據庫。 它計划每15分鍾運行一次,但是每次運行它都會重復導入所有blob文件。 我想對其進行配置,以使其僅在任何新文件到達Blob存儲中時才導入。 要注意的一件事是文件沒有日期時間戳。 所有文件都存在於單個Blob容器中。 新文件將添加到相同的Blob容器中。 你知道如何配置嗎?

我想在這個答案的開頭加上您的方法可能會有所變化...

鑒於您所描述的,您在選擇權上相當有限。 一種方法是讓計划的作業了解已存儲在SQL數據庫中的內容。 您遍歷容器中的所有項目,並檢查容器是否已處理。

容器有一個ListBlobs方法可以解決這個問題。 參考: https : //azure.microsoft.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs/

foreach (var item in container.ListBlobs(null, true))
{
   // Check if it has already been processed or not
}

請注意,此方法可能會引起容器中斑點的數量。 如果太大,請考慮每小時/每天/每周/等創建一個新容器來容納blob,前提是您可以控制它。

請使用CloudBlobContainer。 ListBlobs (null,true, BlobListingDetails .Metadata)並檢查CloudBlob。 屬性 每個列出的Blob的LastModified

我將使用Azure Data Factory中的自定義DotNet活動而不是復制活動,並使用Blob存儲API(此處的某些答案描述了此API的用法)和Azure SQL API僅執行新文件的副本。

但是,隨着時間的流逝,您的Blob位置將有很多文件,因此,希望您的工作將開始花費越來越長的時間(一個點花費的時間超過15分鍾),因為它將每次遍歷每個文件。

您能否進一步說明您的情況? 您是否有理由要每15分鍾將數據添加到SQL表中? 您可以增加它以每小時復制一次數據嗎? 另外,這些數據如何進入Blob存儲? 是另一個Azure服務將其放置在那里還是外部應用程序? 如果這是另一項服務,請考慮將其直接移到Azure SQL中,並切斷Blob存儲。

另一個建議是創建間隔為15分鍾的文件夾,例如hhmm。 因此,例如,示例文件夾將被稱為“ 0515”。 您甚至可以為年,月和日創建一個父文件夾。 這樣,您可以將數據插入Blob存儲中的這些文件夾中。 Data Factory能夠讀取日期和時間文件夾,並標識進入日期/時間文件夾的新文件。

我希望這有幫助! 如果您可以提供有關您的問題的更多信息,我們很樂意為您提供進一步的幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM