Data Factory V2查询Azure表存储,但使用查找值

时间:2019-03-08 09:00:15

标签: azure nosql azure-table-storage lookup-tables azure-data-factory-2

我有一个SQL水印表,其中包含目标表中的最后一个日期

我的源数据来自Azure存储表,日期时间是一个字符串

我在水印表中设置了日期时间以匹配Azure表存储中的格式

我创建一个查找和复制任务 enter image description here

如果我将日期硬编码到Query for source中并运行,则可以正常运行CreatedAt ge'2019-03-06T14:03:11.000Z'

但是显然我不想硬编码这个值。我想使用查询中的日期

但是当我将硬编码日期替换为查找值

CreatedAt ge'activity('LookupWatermarkOld')。output'

我遇到错误

{“ errorCode”:“ 2200”,“ message”:“ ErrorCode = FailedStorageOperation,'Type = Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message = A  存储操作失败,并显示以下错误“远程服务器返回错误:(400)错误的请求。”。,Source =,''Type = Microsoft.WindowsAzure.Storage.StorageException,Message =远程服务器返回错误:(400 )错误的请求。,Source = Microsoft.WindowsAzure.Storage,StorageExtendedMessage =语法  \ nRequestId:8c65ced9-b002-0051-79d9-d41d49000000 \ n时间:2019-03-07T11:35:39.0640233Z,``类型= System.Net.WebException,消息=远程服务器返回错误:(400)错误的请求。,源= Microsoft.WindowsAzure.Storage,'“,  “ failureType”:“ UserError”,“ target”:“ CopyMentions”}

有人可以帮我吗?如何在Azure表查询中使用Lookup值?

3 个答案:

答案 0 :(得分:0)

检查一下:

1)查找活动。查询字段:

  

从TableName中选择MAX(WatermarkColumnName)作为LastId;

此外,请确保选中“仅第一行”选项。

2)在“复制数据”活动中使用查询。查询字段:

  

@concat('SELECT * FROM TableName as s.WatermarkColumnName>''',activity('LookupActivity')。output.firstRow.LastID,'''')

答案 1 :(得分:0)

最后我得到了一些帮助,它可以与

一起使用

CreatedAt gt'@ {activity('LookupWatermarkOld')。output.firstRow.WaterMarkValue}'

WaterarkValue是SQL查找表中的列名

查找将创建一个数组,因此您必须从该数组中指定FirstRow

然后将''换行,然后将其用作字符串值

答案 2 :(得分:0)

--对于最近的 ADFv2

在参数中使用水印/查找/输出值。

示例: ParamUserCount = @{activity('LookupActivity').output.count}

或用于输出功能

https://i.stack.imgur.com/opFWS.png

你可以在查询中使用它

示例: "select * from userDetails where usercount = {$ParamUserCount}"

确保将查询括在“”中以设置为字符串,并且查询中的参数应括在{}

enter image description here