Проблемы паркета с десятичной дробью в Azure Data Factory V2 - PullRequest
0 голосов
/ 19 марта 2019

Уже 3 или 4 дня у меня возникают проблемы с записью десятичных значений в формате файла паркета с помощью фабрики данных Azure V2.

Шаги воспроизведения довольно просты, из источника SQL, содержащего числовое значение, которое я отображаюэто в файл паркета с использованием операции копирования.

Во время выполнения выдается следующее исключение:

{
    "errorCode": "2200",
    "message": "Failure happened on 'Source' side. ErrorCode=UserErrorParquetTypeNotSupported,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Decimal Precision or Scale information is not found in schema for column: ADDRESSLONGITUDE,Source=Microsoft.DataTransfer.Richfile.ParquetTransferPlugin,''Type=System.InvalidCastException,Message=Object cannot be cast from DBNull to other types.,Source=mscorlib,'",
    "failureType": "UserError",
    "target": "Copy Data"
}

В источнике столбец жалобы определен как числовой (32,6) тип.

Я думаю, что проблема описана в мойке паркета, потому что изменение формата назначения на csv приводит к успешному конвейеру.

Любые предложения?

Основываясь на ответе Джея, здесьвесь набор данных:

SELECT 
    [ADDRESSLATITUDE]
FROM 
    [dbo].[MyTable]

query result

1 Ответ

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

На основе типов SQL для паркетных логических типов и Отображение типов данных для файлов паркета в операции копирования фабрики данных поддерживает Decimal тип данных. Десятичные данные преобразуются вдвоичный тип данных.

enter image description here

Вернуться к сообщению об ошибке:

Ошибка произошла со стороны «Источник».ErrorCode = UserErrorParquetTypeNotSupported, 'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException, Message = Десятичная точность или информация о масштабе не найдены в схеме для столбца: ADDRESSLONGITUDE, Source = Microsoft.DataTransfer.Richfile.PginT. System.ParquetT.InvalidCastException, Message = Object нельзя преобразовать из DBNull в другие типы., Source = mscorlib, '

Если числовые данные имеют значение null, они будут преобразованы в тип данных Int безлюбая десятичная точность или информация о масштабе.

enter image description here

В формате CSV отсутствует этот процесс преобразования, поэтому вы можете установить значение по умолчанию для числовых данных.

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