我正在尝试使用"查找活动"返回行计数。我可以做到这一点,但一旦我做到了,我想对它运行一个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这样的函数对此很满意。直到你尝试做一些类似于更大的事情,在那里它寻找数值,它才会窒息。