Фабрика данных не загружает большой столбец

#azure #azure-data-factory #azure-synapse

#azure #azure-data-factory #azure-synapse

Вопрос:

У нас есть таблица SQL Azure, которую я переношу из традиционной базы данных в таблицу Azure Synapse Analytics (DW) для долгосрочного хранения, и поэтому ее можно удалить из нашей рабочей базы данных. Это системная таблица для устаревшей системы, которую мы использовали (Salesforce). У меня есть столбец в этой таблице в БД, который является переменной (max), и он массивный. Максимальное значение (LEN(FIELD) равно 1585521. Я пытался использовать фабрику данных для перемещения таблицы в DW, но в этом массивном столбце произошел сбой. Я смоделировал таблицу DW как зеркало рабочей таблицы DB, но она не загружается и пыталась несколько раз. Я изменил столбец DW, который не работает, на nvarchar (max), но он по-прежнему не работает (думал, что причиной сбоя может быть не юникод). Есть идеи? Это сбивает меня с толку, потому что данные существуют в нашей производственной базе данных, но не будут приятными и мирно перемещаются в наш DW.

Я пробовал несколько раз и получал эти сообщения об ошибках (второе после изменения столбца DW с varchar (max) на nvarchar (max)):

 HadoopSqlException: Arithmetic overflow error converting expression to data type NVARCHAR."}

HadoopExecutionException: Too long string in column [-1]: Actual len = [4977]. MaxLEN=[4000]
  

Ответ №1:

В настоящее время использование Polybase имеет это ограничение в 1 МБ, а длина столбца больше. Обходной путь заключается в использовании массовой вставки при копировании ADF или разбиении исходных данных на 8 тыс. столбцов и загрузке в целевую промежуточную таблицу также с 8 тыс. столбцов. Проверьте этот документ для получения более подробной информации об этом ограничении.

Если вы используете внешние таблицы PolyBase для загрузки своих таблиц, определенная длина строки таблицы не может превышать 1 МБ. Если строка с данными переменной длины превышает 1 МБ, вы можете загрузить строку с помощью BCP, но не с помощью PolyBase.

Это сработало для меня, когда я использовал опцию «массовая вставка» в конвейере ADF.