在Azure数据工厂中将行计数转换为INT



我正在尝试使用"查找活动"返回行计数。我可以做到这一点,但一旦我做到了,我想对它运行一个If语句,如果计数返回的行数超过20MIL,我想执行一个额外的管道来进行进一步的表操作。然而,问题是我无法将返回的值与静态整数进行比较。下面是我对这个If语句的当前动态表达式:

@更大(int(activity('COUNT_RL_WK_GRBY_LOOKUP'(.output(,20000000(

当触发时,将返回以下错误:{"errorCode":"InvalidTemplate","message":"使用无效参数调用了函数'int'。无法将该值转换为目标类型","failureType":"UserError","target":"If Condition1","详细信息":"}

是否可以将此返回值转换为整数以进行比较?如果没有,有没有可能的工作来实现我想要的结果?

看起来问题出在动态表达式上。请更正与下面类似的动态表达式,然后重试。

  • 如果firstRowOnly设置为true:@greater(int(activity('COUNT_RL_WK_GRBY_LOOKUP').output.firstRow.propertyname),20000000)

  • 如果firstRowOnly设置为false:@greater(int(activity('COUNT_RL_WK_GRBY_LOOKUP').output.value[zero based index].propertyname),20000000)

  • 查找结果将在活动运行结果的output部分中返回。

  • firstRowOnly设置为true(默认值(时,输出格式如以下代码所示。查找结果位于固定的firstRow键下。要在后续活动中使用结果,请使用@{activity('MyLookupActivity').output.firstRow.TableName}模式。示例输出JSON代码如下:
{
"firstRow":
{
"Id": "1",
"TableName" : "Table1"
}
}
  • firstRowOnly设置为false时,输出格式如以下代码所示。计数字段指示返回的记录数。详细值显示在固定值数组下。在这种情况下,Lookup活动后面跟着Foreach活动。使用@activity('MyLookupActivity').output.value模式将值数组传递给ForEach活动项字段。要访问值数组中的元素,请使用以下语法:@{activity('lookupActivity').output.value[zero based index].propertyname}@{activity('lookupActivity').output.value[0].tablename}就是一个例子。示例输出JSON代码如下:
{
"count": "2",
"value": [
{
"Id": "1",
"TableName" : "Table1"
},
{
"Id": "2",
"TableName" : "Table2"
}
]
}

希望这能有所帮助。

这样做-运行调试器时,查看查找的输出。它将提供一个json字符串,其中包括查询结果的别名。如果不是第一行集合,则得到一个表。但首先你会得到输出,然后是firstRow,然后是你的别名。所以这就是你指定的。

例如。。。如果您将计数的别名设置为Row_Cnt,则。。。@较大(活动('COUNT_RL_WK_GRBY_LOOKUP'(.output.firstRow.Row_Cnt,20000000(

您不需要int函数。你试图这么做(就像我一样!(因为它在抱怨数据类型。这是因为您返回了一堆json文本作为输出,而不是您想要的值。在你意识到它是如何工作的之后,它就完全有意义了。但它并不直观,因为它返回的是数据,而是json中的字符串,而不是您想要的值。像equals这样的函数对此很满意。直到你尝试做一些类似于更大的事情,在那里它寻找数值,它才会窒息。

相关内容

  • 没有找到相关文章

最新更新