我是 ADF 新手,我正在尝试构建一个将记录从源表复制到目标表的管道。 来源表:
身份证 | 快照_日期 |
---|---|
2 | 2023-10-11 |
3 | 2023-10-12 |
4 | 2023-10-13 |
目标表:
身份证 | 快照_日期 |
---|---|
1 | 2023-10-10 |
我只想一次只写入一个快照记录。因此,我添加了一个查找来捕获目标表中最新的 snapshot_date。然后添加一个新的 Lookup 活动,以捕获源表中所有必须复制到目标表的 snapshot_date 值的数组。将此 Lookup 活动的结果传递给变量。 然后将其连接到 ForEach 活动以循环访问变量并将每个快照复制到目标表。但我收到此错误“从字符串转换日期和/或时间时转换失败”
这是变量结果的 JSON 文件:
{
"variableName": "var_source_array_of_dates",
"value": [
{
"snapshot_date": "2023-10-11T00:00:00Z"
},
{
"snapshot_date": "2023-10-12T00:00:00Z"
},
{
"snapshot_date": "2023-10-13T00:00:00Z"
}
]
}
这是复制活动的 JSON 文件:
{
"source": {
"type": "SqlDWSource",
"sqlReaderQuery": "\nselect ID, snapshot_date from source_table where snapshot_date = '{\"snapshot_date\":\"2023-10-11T00:00:00\"}'",
"queryTimeout": "02:00:00",
"partitionOption": "None"
},
"sink": {
"type": "SqlDWSource",
"writeBehavior": "Insert",
"sqlWriterUseTableLock": false
},
"enableStaging": false,
"translator": {
"type": "TabularTranslator",
"typeConversion": true,
"typeConversionSettings": {
"allowDataTruncation": true,
"treatBooleanAsNumber": false
}
}
}
是因为它将这个变量结果传递给查询吗?
'{\"snapshot_date\":\"2023-10-11T00:00:00\"}'"
任何人都可以帮我弄清楚如何将数组变量结果传递给这个查询吗?
上述错误是由于您使用的查询而出现的。在 ForEach 内部,您在查询中使用
@{item()}
,它是每次迭代中的 JSON 对象。
要克服该错误,您需要给出查询中每个项目的
snapshot_date
,如下所示。
select ID, snapshot_date from source_table where snapshot_date = '@{item().snapshot_date}';
例如,我采取了查找活动而不是复制活动以及与您类似的查询。您的查询需要像这样。