#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 У меня есть, они ответили, что в настоящее время для этого нет исправления :(.