【问题标题】:Azure logic apps Odata filter query with if statment on two columnsAzure 逻辑应用 Odata 筛选查询,在两列上使用 if 语句
【发布时间】:2021-08-10 13:25:39
【问题描述】:

早上好,

我有一个独特的要求,我必须根据条件从 Azure 表中对“获取实体”应用过滤器,过滤器来自 HTTP 获取请求。

有两个过滤器 - a 和 b。

如果传递给流的两个过滤器均为空,则不应用过滤器。 如果任一过滤器不为空,则必须将过滤器应用于该列。 如果两个过滤器都不为空,则过滤器必须应用于两列。

是否可以在 ODATA 过滤器查询中应用 If 语句? 我似乎找不到一个好的答案。

【问题讨论】:

    标签: if-statement get odata azure-logic-apps azure-tablequery


    【解决方案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(单击我的答案旁边的复选标记,将其从灰色切换为已填充)。提前致谢。
    猜你喜欢
    • 1970-01-01
    • 2017-06-27
    • 2021-10-13
    • 2017-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多