Oracle для определения десятичных знаков в фабрике данных Azure теряет всю точность и масштаб

#oracle #azure #apache-spark #azure-data-factory #databricks

Вопрос:

Я пытаюсь извлечь данные с помощью фабрики данных Azure из Oracle в Parquet в ADLS. Проблема у меня такая: что бы я ни пытался, десятичный тип данных(p,s) в Oracle всегда будет меняться на десятичный(38,18) в моем файле parquet.

Я попытался динамически сопоставить столбец в меню сопоставления в фабрике данных Azure:

введите описание изображения здесь

Однако мой тип данных в файле parquet по-прежнему будет 38,18:

введите описание изображения здесь

Я пробовал использовать сервер MSSQL в качестве источника, и это отлично работает.

Вот как выглядит мое отображение в ADF (но я пробовал разные варианты/значения):

  "translator": {
                    "type": "TabularTranslator",
                    "mappings": [
                        {
                            "source": {
                                "name": "COLUMN",
                                "type": "Decimal",
                                "physicalType": "decimal",
                                "scale": 1,
                                "precision": 4
                            },
                            "sink": {
                                "name": "COLUMN",
                                "type": "Decimal",
                                "physicalType": "DECIMAL",
                                "scale": 1,
                                "precision": 4
                            }
                        }
                    ],
                    "typeConversion": true,
                    "typeConversionSettings": {
                        "allowDataTruncation": false,
                        "treatBooleanAsNumber": false
                    }
                }
 

У кого-нибудь есть решение для этого?

Ответ №1:

Вы можете преобразовать десятичную шкалу и точность в Derived column преобразовании в действии Фабрики данных Azure dataflow .

В моем примере я добавляю выражение, чтобы получить точность 7 и масштаб 1 для столбца зарплата.

введите описание изображения здесь

Предварительный просмотр раковины:

введите описание изображения здесь

Комментарии:

1. Спасибо. Я также обошел этот обходной путь, но, к сожалению, это не вариант, так как потоки данных не имеют oracle в качестве опции для источника. Я, конечно, могу выполнить предварительную обработку и использовать потоки данных позже, но было бы очень сложно добавлять производные столбцы для каждого столбца. И поскольку мы уже используем базы данных, мы, вероятно, собираемся провести там типизацию. Я связался с Microsoft, и команда ADF собирается разобраться в этой проблеме.

2. Вы получали какие-либо обновления по этой проблеме от Microsoft @JVGBI ??

3. @JavierdelaIglesia У меня есть, они ответили, что в настоящее время для этого нет исправления :(.