Фабрика данных Azure - как читать только новые файлы из хранилища BLOB-объектов

В моем Application Insights есть процесс «Непрерывный экспорт», который создает новые файлы на основе моих новых Insights.

Кроме того, у меня есть процесс, использующий фабрику данных Azure, для загрузки одной таблицы SQL с данными хранилища BLOB-объектов.

Проблема: я не могу читать из A.D.F., только новые файлы из хранилища BLOB-объектов, и я всегда обрабатываю одни и те же данные. В настоящий момент я игнорирую повторяющиеся данные после процесса загрузки в хранимой процедуре SQL, но я хочу сделать этот процесс более эффективным, читая только новые данные из хранилища BLOB-объектов, могу ли я сделать это из A.D.F.? Может кто-нибудь мне помочь? Какие альтернативы для этого?

С уважением, Руи Фернандес


person Rui Fernandes    schedule 26.06.2017    source источник
comment
Фабрика данных хорошо работает с папками на основе времени и имеет функции, помогающие в этом - см. здесь.   -  person wBob    schedule 27.06.2017


Ответы (2)


Какие альтернативы для этого?

Если WebJob приемлем, мы могли бы легко сделать это с помощью триггера большого двоичного объекта WebJob. Мы могли бы получить дополнительную информацию о триггере веб-задания из Azure официальный документ.

Ниже приведен демонстрационный код:

 public static void ProcessBlobTrigger([BlobTrigger("containername/{name}")] TextReader input, TextWriter log)
        {
            // your logic to process data
        }
person Tom Sun - MSFT    schedule 27.06.2017
comment
Я пытался избежать этого варианта, но я последовал ему, потому что это единственный способ достичь того, чего я хотел. Спасибо Том - person Rui Fernandes; 13.07.2017

Я рекомендую вам архивировать старые капли программно (настраиваемый конвейер), переименовав их в «Archive / oldBlobName»! После этого, при повторении результата сегментированного большого двоичного объекта в следующий раз (список больших двоичных объектов, содержащихся в контейнере, который вы указали в наборе данных) в коде, просто избегайте тех, имя которых начинается с «Архив».

        foreach (IListBlobItem listBlobItem in blobList.Results)
        {
            CloudBlockBlob inputBlob = listBlobItem as CloudBlockBlob;

            // Take all blobs from container that are not in "Archive"
            if ((inputBlob == null) || string.IsNullOrEmpty(inputBlob.Name)
                            || inputBlob.Name.ToLower().StartsWith("Archive"))
            {
                continue;
            }
                     ...
person zoxparty    schedule 13.07.2017