Я работаю над конвейером Фабрики данных Azure и заметил, что когда я использую приемник паркета для ADLS Gen 2, некоторые десятичные дроби усекаются и возвращают результаты, не соответствующие источнику данных. Из ADLS эти данные передаются в блоки данных для аналитики, где изначально была обнаружена ошибка.
Пример: Исходный источник данных: 861.099901397946075. В Паркете: 86199901397946075 В DataBricks: 86.199901397946075.
Тип данных в источнике данных — Decimal(35,15), и при сохранении данных в виде паркета в десятичном формате удаляется начальный «0», что приводит к смещению десятичной части числа.
Я также заметил, что это происходит не с каждой десятичной записью, которую я принимаю, а только с теми, у которых в этом десятичном месте стоят ведущие нули.
Кто-нибудь сталкивался с этим и знает, как это исправить? Спасибо.
Попробовал - загрузил данные через Parquet. Загрузка этих данных в DataBricks. Ожидаемые результаты, соответствующие источнику данных. Я пробовал Parquet без/с разными видами сжатия, но безуспешно.
Я использовал раковину CSV вместо паркета, и данные заполнились правильно. Хотя в моем случае я предпочитаю паркет.
@Aswin Я копирую его с помощью команды копирования и SQL-запроса. Никакого преобразования не делается, запрос просто SELECT * FROM... WHERE... Я просматривал паркет в VSCode через расширение, но также заметил эту ошибку после переноса данных в DataBricks
Это было связано с десятичным типом Decimal(35,15). Parquet в ADF поддерживает только десятичное число (28, ), поэтому тип данных пришлось изменить для правильной обработки.
Как вы копируете данные в файл паркета? Вы делаете какие-то трансформации? Как вы просматривали данные в файле паркета?