提问人:SusanD 提问时间:10/25/2023 更新时间:10/25/2023 访问量:55
Azure 数据工厂:在筛选日期列的动态查询中传递数组变量失败,并进行数据类型转换
Azure Data Factory: Passing array variable in dynamic query that filters Date column fails with data type conversion
问:
我是 ADF 的新手,我正在尝试构建一个将记录从源表复制到目标表的管道。 源表:
编号 | snapshot_date |
---|---|
2 | 2023-10-11 |
3 | 2023-10-12 |
4 | 2023-10-13 |
目标表:
编号 | snapshot_date |
---|---|
1 | 2023-10-10 |
我一次只想写一个快照的记录。因此,我添加了一个 Lookup,用于捕获 Target 表中的最新snapshot_date。然后,添加了一个新的 Lookup 活动,以捕获 Source 表中所有 snapshot_date 值的数组,这些值必须复制到 Target 表。将此 Lookup 活动的结果传递给 Variable。 然后,将其连接到 ForEach 活动,以循环访问变量并将每个快照复制到 Target 表。但是我收到此错误“从字符串转换日期和/或时间时转换失败”
下面是变量结果的 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\"}'"
谁能帮我弄清楚如何将数组变量结果传递给此查询?
答:
0赞
Rakesh Govindula
10/25/2023
#1
上述错误是由于您使用的查询而产生的。在 ForEach 中,您在查询中使用,这是每次迭代中的 JSON 对象。@{item()}
要克服该错误,您需要在查询中给出每个项目,如下所示。snapshot_date
select ID, snapshot_date from source_table where snapshot_date = '@{item().snapshot_date}';
对于示例,我采用了查找活动而不是复制活动,并且与您的查询类似。您的查询需要如下所示。
评论