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 语句的主要内容,如果未能解决你的问题,请参考以下文章

AZURE 表存储、ODATA 和更友好的 URI 查询

什么是 django 查询来查找搜索日期在两列之间的记录不是?

Azure 逻辑应用 - 解析 JSON 架构失败“对象中缺少必需的属性”

Azure 搜索索引的 OData API 不返回元数据

在两列上使用 COUNT 和 GROUP BY 的 SQL 查询非常慢

使用 OData Web Api 对数据传输对象进行嵌套筛选