【问题标题】:Logic apps replace "null" with "" or vica versa逻辑应用将“null”替换为“”,反之亦然
【发布时间】:2021-11-10 08:18:44
【问题描述】:

我正在尝试将 dataverse 中的数据与 Excel 文件进行比较,以查看是否需要更新 dataverse 行。

我在 dataverse 中的每个项目上使用 compose,并结合 compose、json parse 和 select 创建两个输出值,我可以比较它们是否匹配。我必须这样做,因为据我所知,Logic Apps 无法正常地比较数据。

输出按预期工作,唯一的问题是 dataverse 中没有值的字段显示为“name”:“null”,而没有值的 Excel 数据显示为“name”:“”,这导致了我的比较失败。

有没有可以用“”或“null”轻松替换所有“null”或“”?

Dataverse“输出”示例

[
  {
    "name": "john"
    "last": "doe"
    "address": "null"
  }
]

Excel“输出”示例

[
  {
    "name": "john"
    "last": "doe"
    "address": ""
  }
]

实际数据有更多字段,所以我宁愿以某种方式查看整个“输出”并匹配“”或“null”的任何内容并将其替换为某些内容,而不是逐个遍历每个可能的字段一个。

【问题讨论】:

  • 该值是实际的null 值,还是表示“null”的字符串?

标签: azure-logic-apps


【解决方案1】:

逻辑应用支持很多表达式。他们支持的一组表达式是字符串函数。其中一个功能是Replace(text, oldText, newText)

如果您要替换的值是一个实际的字符串,其值为“null”,请尝试使用此表达式将 null 替换为空字符串:

replace(output, 'null', '')

逻辑应用字符串函数

【讨论】:

  • 谢谢。不幸的是,这不起作用。如果字段类型为 Null,则似乎无法使用此函数。有没有办法“映射”字段类型?例如。告诉逻辑应用将空字段类型视为字符串字段?我是逻辑应用的新手,但与我习惯的相比,它的数据格式化功能对我来说似乎很差。
【解决方案2】:

由于您无论如何都在使用Compose 操作,而不是直接为您的地址字段获取动态内容,您可以在表达式中使用ifequals 函数,例如if(equals(__your_source_field__, 'null'), '', __your_source_field__)

那么Compose 操作的输出不会有“null”值,您可以根据需要进行比较。

【讨论】:

    【解决方案3】:

    我找到了一个“解决方案”。

    if(empty(items('myAction')?['myActionField']), '', items('myAction')?['myActionField'])
    

    这会检查该字段是否为空。如果它为空,则分配值 '' 从而创建一个(空)字符串类型字段。如果不为空,则应用原始值。

    缺点是这不可能非常有效,并且您必须对每个字段都执行此操作,因此如果您有很多字段,则需要很多时间。就我而言,我“只”有 30 个左右,所以它仍然可以管理。

    如果您可以循环遍历“值”数组并一次性删除/转换所有空值,则更好的方法是。或者创建一个映射,告诉逻辑应用一个字段是什么字段类型。但我不知道这是否可能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-27
      • 1970-01-01
      • 1970-01-01
      • 2010-12-03
      • 2011-10-08
      • 2013-03-15
      • 2019-09-19
      • 2013-12-29
      相关资源
      最近更新 更多