Azure 逻辑应用 Odata 筛选查询,在两列上使用 if 语句
Posted
技术标签:
【中文标题】Azure 逻辑应用 Odata 筛选查询,在两列上使用 if 语句【英文标题】:Azure logic apps Odata filter query with if statment on two columns 【发布时间】:2021-08-10 13:25:39 【问题描述】:早上好,
我有一个独特的要求,我必须根据条件从 Azure 表中对“获取实体”应用过滤器,过滤器来自 HTTP 获取请求。
有两个过滤器 - a 和 b。
如果传递给流的两个过滤器均为空,则不应用过滤器。 如果任一过滤器不为空,则必须将过滤器应用于该列。 如果两个过滤器都不为空,则过滤器必须应用于两列。
是否可以在 ODATA 过滤器查询中应用 If 语句? 我似乎找不到一个好的答案。
【问题讨论】:
【参考方案1】:对于这个需求,我们可以在逻辑应用中使用“Condition”来实现它。这不是一个聪明的解决方案,但它确实有效。
首先我使用两个变量来模拟来自 http 请求的两个过滤器。
然后使用另一个变量来存储结果过滤器。
现在添加一个“条件”来判断filter1
是否不等于“空”。
如果为真,则添加另一个条件“条件2”判断filter2
是否不等于“空”,并设置filterResult
的值。
如果为false,还添加另一个条件“条件3”判断filter2
是否不等于“空”,并设置filterResult
的值。注意:在“设置变量4”中使用表达式string(' ')
,否则我们将无法保存逻辑应用。
之后,我们可以在“获取实体”中使用filterResult
。下面截图中的表达式是trim(variables('filterResult'))
。
【讨论】:
是否可以在获取过滤器查询中使用 Odata 在获取实体操作中实现此逻辑?感谢您的帮助 @rados233 可以通过长表达式实现:if(equals(variables('filter1'), ''), if(equals(variables('filter2'), ''), '', variables('filter2')), if(equals(variables('filter2'), ''), variables('filter1'), concat(variables('filter1'), ' and ', variables('filter2'))))
在“获取实体”过滤查询中。
@rados233 如果对您的问题有帮助,请accept it as answer(单击我的答案旁边的复选标记,将其从灰色切换为已填充)。提前致谢。以上是关于Azure 逻辑应用 Odata 筛选查询,在两列上使用 if 语句的主要内容,如果未能解决你的问题,请参考以下文章
什么是 django 查询来查找搜索日期在两列之间的记录不是?
Azure 逻辑应用 - 解析 JSON 架构失败“对象中缺少必需的属性”