SharePoint Online, экспорт списков SharePoint

#sql #ssis #sharepoint-online

#sql #ssis #sharepoint-online

Вопрос:

tl; dr — Не используйте список SharePoint для хранения каких-либо данных, которые могут потребоваться для автоматического экспорта, а Power automate не хватает даже на половину. То, что следует, может быть полезно для тех, кто делает то же самое, что я пробовал, но только если в списке SharePoint хранится очень небольшой объем данных.

Мой вариант использования прост: регулярно извлекать содержимое списка SharePoint, чтобы загружать их в базу данных azure. Все просто, оказывается, это далеко не так.

Похоже, это хороший вариант использования для служб SSIS, и это первая проблема. Вы видите, что служба ssis не имеет соединителя для списка sharepoint, поэтому он должен быть скриптовым источником, что делает его действительно хрупким. Таким образом, вместо этого это выглядит как задание для power automate. Он рекламируется в sharepoint online, имеет встроенную функцию получения элементов для списка SharePoint, кажется приятным и простым.

Следующий вопрос, который стоит перед вами, — какой пункт назначения вы хотите, изначально я хотел создать плоский файл в локальной папке, чтобы таким образом я мог использовать SSIS для импорта данных как часть более крупного задания, которое будет использовать эти данные. Однако для этого вам необходимо установить локальный шлюз внутри вашей сети, и прямая цитата из моего ИТ-отдела поддержки после изучения требований к программному обеспечению была «Нет, черт возьми, нет». Я не могу удалить файл в SharePoint, потому что мне все равно не нужно автоматически получать его из SharePoint. После краткого рассмотрения FTP я решил просто использовать опцию sql insert, которая является премиум-функцией стоимостью 15 долларов в месяц. Спойлер, это не стоит 15 долларов в месяц, это очень очевидно на ранней стадии разработки.

Я немного потрудился, чтобы настроить это, поскольку документации по power automate за пределами документации boiler plate MS практически нет. Оказывается, шаг вставки неспособен даже к незначительным преобразованиям, поэтому мне пришлось изменить таблицу, чтобы она соответствовала типам данных в SharePoint, и, не имея ни малейшего представления о том, что это за типы данных, было несколько проб и ошибок, чтобы типы данных таблиц sql соответствовали типам данных SharePoint. Однако всякий раз, когда происходит изменение базовой таблицы sql, необходимо удалить и заново создать виджет вставки строк, поскольку нет способа обновить сохраненную информацию схемы. Это нигде не задокументировано, и я понял это методом проб и ошибок.

В конце концов я получаю свой первый успешный запуск потока. Замечательно, я проверяю таблицу в базе данных Azure, и там всего 100 строк. Странно, в списке около 50 тысяч строк. Оказывается, что для виджета get items по умолчанию скрыто значение 100, это нигде не объясняется, вам не выдается никаких предупреждений, поэтому мне пришлось погуглить. Чтобы обойти это, вы должны включить разбивку на страницы и установить ограничение строки, превышающее значение, которое, по вашему мнению, может когда-либо достичь список.

Теперь, понимая, что данных много, я пытаюсь настроить фильтр, чтобы я мог извлекать только данные за предыдущий месяц. Оказывается, вы не можете использовать выражения в предложении filter (предполагаю, что это функция tbd), вы должны использовать фиксированные значения, что делает предыдущий месяц не стартовым, поскольку это задание должно выполняться по расписанию.

Затем я пытаюсь использовать опцию сортировки в столбце «Создано» (примечание для читателя, все это чувствительно к регистру, что раздражает, но управляемо) и верхний фильтр, чтобы получить несколько тысяч строк самых последних данных. Оказывается, если в вашем списке более 5000 строк, шаг получения элементов завершится ошибкой. Вы можете обойти это, создав индекс в столбце, по которому вы планируете сортировать, уловка 22, вы не можете создать индекс в таблице с более чем 20 тыс. строк. Поскольку у меня 50 тысяч строк, этот метод для меня совершенно нефункциональен.

Очень близко к концу моей веревки я думаю: «Хорошо, я просто возьму все строки». Оказывается, виджет «Получить элементы» работает медленно, очень медленно. Цель состояла в том, чтобы запустить это в нерабочее время, так что само по себе это не нарушает условия сделки, хотя 10-минутный тайм-аут для каждого шага в потоке был. Это небольшой набор данных, состоящий всего из 50 тысяч строк, и для извлечения данных требуется более 10 минут.

Поэтому, пожалуйста, учитесь на моей боли, избегайте SharePoint list и power automate, как наполовину испеченные денежные захваты. Если вы видите, что я что-то сделал не так, я хотел бы это услышать.

Комментарии:

1. Действительно ли этот вопрос связан с языком <sql>? » Ответы на вопросы, помеченные SQL, должны использовать стандартный SQL ISO / IEC».

2. Я мог бы включить изменения структуры данных, вызванные этим, но местом назначения является база данных sql, и без этого все это не имеет особого смысла.

3. Спецификация SQL ISO / ANSI даже не имеет дело с индексами. Похоже, что у вас возникли проблемы с одной СУБД SQL, а не с самим языком.