#azure-data-factory-2
#azure-data-factory
Вопрос:
С 3 или 4 дней у меня возникают проблемы с записью десятичных значений в формате файла parquet с Azure Data Factory V2.
Шаги воспроизведения довольно просты: из источника SQL, содержащего числовое значение, я сопоставляю его с файлом parquet, используя операцию копирования.
Во время выполнения выдается следующее исключение:
{
"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) тип.
Я думаю, что проблема связана с приемником parquet, потому что изменение формата назначения на csv приводит к успешному конвейеру.
Есть предложения?
Основываясь на ответе Джея, вот весь набор данных :
SELECT
[ADDRESSLATITUDE]
FROM
[dbo].[MyTable]
Ответ №1:
На основе типов SQL для логических типов Parquet и сопоставления типов данных для файлов Parquet в операции копирования фабрики данных, он поддерживает Decimal
тип данных.Десятичные данные преобразуются в двоичный тип данных.
Вернемся к вашему сообщению об ошибке:
Сбой произошел на стороне «источника». Код ошибки=UserErrorParquetTypeNotSupported, ‘Тип=Microsoft.Передача данных.Общий.Общий доступ.Исключение HybridDeliveryException, сообщение = Информация о десятичной точности или масштабе не найдена в схеме для столбца: Длительность адреса, источник = Microsoft.передача данных.Richfile.ParquetTransferPlugin, «Тип = System.Исключение InvalidCastException, сообщение = Объект не может быть преобразован из DBNull в другие типы.,Источник = mscorlib,’
Если ваши числовые данные имеют null
значение, они будут преобразованы в Int
тип данных без какой-либо информации о десятичной точности или масштабе.
В формате Csv отсутствует этот процесс преобразования, поэтому вы могли бы установить значение по умолчанию для своих числовых данных.
Комментарии:
1. Спасибо за твой ответ, Джей. Означает ли это, что десятичная дробь с нулевым значением не поддерживается? нахх .. не могу в это поверить!!
2. @FabriceMichellonet Не могли бы вы просто извлечь несколько образцов данных, чтобы выполнить тот же тест?
3. Более того, в моем примере нет нулевых значений. ВЫБЕРИТЕ [ШИРОТУ АДРЕСА] ИЗ [dbo]. [MyTable] возвращает 3 ненулевые строки, точное значение равно 0.000000.
4. @FabriceMichellonet Пытается воспроизвести вашу проблему, любой прогресс будет обновлен в моем ответе. Спасибо.