首页 文章

使用Azure Data Factory v2中启用的polybase将空小数值传输到Azure数据仓库时出错

提问于
浏览
1

我们有Azure Data Factory v2管道,它使用polybase启用将数据从Azure SQL数据库传输到Azure数据仓库 .

源表包含空十进制值,但是当ADF尝试处理空值时,它会给出错误:

,错误= [{Class = 16,Number = 107090,State = 1,Message = Query aborted - 从外部源读取时达到最大拒绝阈值(0行):处理的总共1行中有1行被拒绝 . \ n(/24b40621-2542-4406-8f32-7854fe030292/Polybase/data_24b40621-2542-4406-8f32-7854fe030292_b592f424-dd7b-47af-925f-a2934aea4b67.txt)列序数:7,预期数据类型:DECIMAL(18, 3),违规值:\ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \ u0000 \

我们可以通过在源查询中使用ISNULL(COLUMNNAME,0)轻松解决此错误,但我们不希望这样做 .

在Azure官方反馈网站上,这个问题似乎正在审查中 . https://feedback.azure.com/forums/307516-sql-data-warehouse/suggestions/10600192-polybase-fix-file-format-type-default-for-decima

1 回答

  • 1

    奇怪的是,当源是数据湖存储或blob存储时,文档会讨论很多关于空值的文档,但是当源是另一个数据库时,文档没有说明 . 读取polybase文档显示不支持Azure SQL数据库:https://docs.microsoft.com/en-us/sql/relational-databases/polybase/polybase-guide?view=sql-server-2017

    我会尝试禁用polybase,看看这是否解决了这个问题 . 如果确实如此,性能会下降,但可能足以满足您的需求 .

    使用polybase的另一种方法是在Sql Data Warehouse中创建一个存储过程,该存储过程使用polybase查询另一个数据库并使用Data Factory调用它,这样您就可以更好地控制polybase正在执行的操作 .

    希望这有帮助! :)

相关问题