Загрузите файлы из последней папки из хранилища BLOB-объектов Azure в хранилище данных Azure

Я новичок в Azure и каждый день получаю 150 файлов CSV через SFTP в хранилище BLOB-объектов, и они каждый день хранятся в отдельных контейнерах. Контейнеры пронумерованы как 0000,00001,00002 с ежедневными файлами. Как загрузить файлы из последней папки в хранилище данных Azure. Как мне указать, чтобы действие копирования динамически указывало на последнюю папку. Как лучше всего это сделать? Большое спасибо за вашу помощь.


person sparc    schedule 22.02.2020    source источник
comment
К сожалению, этот вопрос слишком общий (и я не уверен, о каком копировании вы говорите). То, как вы загружаете данные в свое хранилище данных, действительно зависит от вас (нет единого способа), но, чтобы узнать о новом контенте, поступающем в BLOB-объекты, вы можете посмотреть в Event Grid, который имеет возможность отправлять уведомления. когда появится новый контент. Об этом написана документация.   -  person David Makogon    schedule 23.02.2020
comment
Еще один вопрос, который у меня есть, заключается в том, что новый контейнер больших двоичных объектов создается каждый день для поступающих файлов. В этом случае контейнер больших двоичных объектов нельзя назвать датой (конечно, в соответствии с соглашением об именах), поэтому что их легче идентифицировать.   -  person Gaurav Mantri    schedule 23.02.2020
comment
@Gaurav - Да, контейнер больших двоичных объектов создается каждый день для входящих файлов. Я не могу изменить имена контейнеров. Мне нужен доступ к самому последнему контейнеру. Есть ли какая-нибудь функция max в метаданных для получения последней версии контейнера? Как я могу это сделать? пожалуйста, порекомендуйте   -  person sparc    schedule 23.02.2020
comment
Всегда ли контейнеры называются в последовательном порядке? Например, если контейнер, созданный сегодня, будет иметь имя 0000, будет ли имя контейнера, созданного завтра, быть 0001? Или это могло быть совершенно случайно?   -  person Gaurav Mantri    schedule 23.02.2020
comment
Привет, Гуарав, да, они называются всегда по порядку.   -  person sparc    schedule 23.02.2020


Ответы (1)


К сожалению, прямого способа найти последний контейнер больших двоичных объектов нет.

Учитывая, что новый контейнер больших двоичных объектов создается каждый день, а имя контейнера больших двоичных объектов находится в последовательном порядке, единственный способ найти последний контейнер больших двоичных объектов - это перечислить все контейнеры больших двоичных объектов в учетной записи хранения, либо взять последний контейнер больших двоичных объектов в наборе результатов, либо отсортировать результат в порядке убывания и возьмите первый, чтобы найти последний контейнер больших двоичных объектов.

В контейнере больших двоичных объектов есть свойство Last Modified Date, но, опять же, оно меняется каждый раз при изменении контейнера больших двоичных объектов, поэтому вы не можете надежно использовать его для поиска последней версии контейнера больших двоичных объектов. Опять же, для этого вам нужно будет перечислить контейнеры больших двоичных объектов (вы просто не можете избежать этого шага).

person Gaurav Mantri    schedule 23.02.2020
comment
Спасибо, Гаурав. Как получить список контейнеров с SQL-сервера? Есть простой способ? Пожалуйста, не могли бы вы посоветовать. Спасибо. - person sparc; 24.02.2020
comment
Вы храните эту информацию в SQL Server? Это действительно облегчило бы работу. Я исходил из предположения, что вы просто отправляете данные из SFTP в хранилище BLOB-объектов. Вы должны использовать List Containers операцию API (docs.microsoft.com/en -us / rest / api / storageservices /), чтобы вывести список контейнеров. Можете ли вы отредактировать свой вопрос и включить весь процесс? Возможно, мне придется изменить свой ответ. - person Gaurav Mantri; 24.02.2020
comment
Извини, Гаурав за путаницу. Я не храню эту информацию на сервере SQL. Мы получаем данные из SFTP в хранилище BLOB-объектов и сохраняем их в папках в последовательном порядке, и мне нужно взять файлы из последнего контейнера и загрузить их в хранилище данных. Это мое требование. Я не уверен, как лучше и проще это сделать. Пожалуйста, проигнорируйте мой предыдущий вопрос. Как вы предложили, как мне перечислить контейнеры в порядке убывания и взять верхнюю 1. Пожалуйста, посоветуйте. - person sparc; 24.02.2020
comment
Для этого вам нужно будет написать код. Вы можете использовать любой из доступных SDK Storage Client. Ищите ListContainers или аналогичный метод. Это даст вам список контейнеров больших двоичных объектов в учетной записи хранения. Как только вы получите список, вам просто нужно отсортировать их в порядке убывания или взять последний элемент в этом списке. - person Gaurav Mantri; 24.02.2020