Преобразование даты фабрики данных Azure - PullRequest
0 голосов
/ 10 января 2019

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

Исходный столбец 3 CSV-файла содержит даты в формате MM/dd/yyyy, а в моей целевой таблице SQL DW этот столбец указан как дата.

Мой конвейер завершается ошибкой со следующей ошибкой, предположительно потому, что я не нахожусь в США, и поэтому неявное преобразование типов не будет работать:

Активность BlobToSQLDW завершилась неудачно: ErrorCode = FailedDbOperation, 'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message = Ошибка при загрузке данных в хранилище данных SQL., Source = Microsoft.DataTransfer.ClientLibrary,' 'Type = System .Data.SqlClient.SqlException, Message = HdfsBridge :: recordReaderFillBuffer - Обнаружена непредвиденная ошибка при заполнении буфера считывателя записей: HadoopSqlException: Ошибка преобразования типа данных VARCHAR в DATETIME., Источник = .Net SqlClient Поставщик данных, SqlErrorNumber = 1090, Ошибка 1670 = 1070 = -2146232060, State = 1, Errors = [{Class = 16, Number = 107090, State = 1, Message = HdfsBridge :: recordReaderFillBuffer - Обнаружена непредвиденная ошибка при заполнении буфера чтения записей: HadoopSqlException: Ошибка преобразования типа данных VARCHAR в DATETIME., }], '

Я попытался внести изменения в схему для источника BLOB-объекта, включая настройку формата и языка (см. Скриншот ниже), но пока безрезультатно.

Скриншот схемы хранилища BLOB-объектов Azure:

Azure Blob Storage Schema screenshot

Мне удалось обойти эту проблему, создав промежуточную таблицу в SQL DW со всеми столбцами, типизированными как varchar, и изменив конвейер ADF, указав вместо этого целевой объект, а затем я выполняю задачу в SQL DW, используя вставку T-SQL ( подготовка к цели) для преобразования типов.

Я уверен, что есть правильный способ сделать это в ADF. Кто-нибудь может посоветовать, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 28 марта 2019

Это потому, что ADF использует Polybase для загрузки данных файла в SQL DW. Согласно официальной документации, формат даты по умолчанию в Polybase - гггг-мм-дд. Я не нашел способа указать формат даты в свойствах ADF Copy Activity или свойствах исходного набора данных. Единственный вариант - отключить Polybase, и он будет работать. Снимите флажок «Разрешить Polybase» на вкладке «Мойка» в свойствах копирования.

0 голосов
/ 23 января 2019

Дата поддерживается только в источнике данных типа SQL (Azure SQL, сервер SQL). в другом наборе данных доступен только DateTime. Я не обнаружил, что в схеме набора данных BLOB-объектов есть опция даты, можете ли вы еще раз проверить, является ли она набором данных BLOB-объектов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...