azure - Azure 数据工厂 CopyData 活动问题,错误代码 2200
问题描述
我即将使用 Azure 数据工厂安排数据库插入。
我有 1 个复制数据和 2 个查找 1. 目标表中插入的最大 ID(json 代码中的 LastValue) 2. 源表中的最大 ID(最大)。
为了在复制数据中获取查找值,我编写了一个如下所述的查询,但仍然出现错误,并且无法在选择查询中获取查找值。
select * from customer
where created_at>=curdate()-30 and id > @{activity('CDNOps_LastUpdateValue').output.firstRow.LastValue} and id <= @{activity('Source_MaxValue').output.firstRow.Max limit 20000 }
请帮我解决这个问题。
我在安排数据时收到的错误消息是,
"errorCode": "2200", "message": "'Source' 端发生故障。ErrorCode=UserErrorOdbcOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=ERROR [42000] [Microsoft][MariaDB]您的 SQL 语法有错误;请查看与您的 MariaDB 服务器版本相对应的手册,以在第 2 行的 '"LastValue":540418183}\n 和 id<={"Max":546239715}' 附近使用正确的语法…………
解决方案
下面的语法应该是正确的:
select * from customer where created_at>=curdate()-30 and id > @{activity('CDNOps_LastUpdateValue').output.firstRow.LastValue} and id <= @{activity('Source_MaxValue').output.firstRow.Max} limit 20000
请注意,当您将查找活动输出包装到@{} 中时,这意味着您正在尝试在运行时动态评估该值,因此将不属于查找输出的“limit 20000”放入@{ }导致错误。还要确保@{activity('CDNOps_LastUpdateValue').output.firstRow.LastValue}
and@{activity('Source_MaxValue').output.firstRow.Max}
将被评估为与表中的列 id 可比较的值(至少相同类型)。一个调试小技巧,你可以在 UI 的 copy Activity 中创建一个用户属性来主动检查评估的查询结果是否是你想要的,见下图:
推荐阅读
- javascript - 如何在 set() Object.create 中赋值
- django - 如何使 django 上的超级用户和普通用户的网页不同?
- python - Python Pandas:找到第n大并在平局的情况下计数
- node.js - npm 从 git repo 安装单个包不起作用
- c# - 仅负数的总和
- c++ - 如何更改SDL for c ++的坐标系
- c++ - boost::async_write 导致错误 远程主机强行关闭了现有连接
- python - 如何比较 json 和 CSV 文件
- excel - 使用VBA将图像保存在excel中
- vue.js - 带有 vue-dragscroll 的 nuxt:未定义窗口