【问题标题】:Find position of a character in a string function in M query vs find DAX在 M 查询与查找 DAX 的字符串函数中查找字符的位置
【发布时间】:2020-01-02 22:53:39
【问题描述】:

我尝试在 Power BI 中使用 mid 和 find 功能,因为它可以在 excel 中完成。但是,我收到错误“查找”未被识别。

搜索了一段时间后得出结论,FINDMID 函数在 DAX(Excel 和 Power BI - 但不在 M 查询(编辑自定义)列)中有效。我们应该使用 BIText、PositionOfAny,而不是使用 find、in 和 M 查询。

这是一个例子: 达克斯:

MID([TRAFFIC_SIGNAL]), find([TRAFFIC_SIGNAL],"&"),3)

M 查询:

Text.Combine({Text.Start(Text.Upper([TRAFFIC_SIGNAL]), 3), " ",
    Text.Middle(Text.Upper([TRAFFIC_SIGNAL]),
    Text.PositionOfAny([TRAFFIC_SIGNAL], {"&"})+1, 3)})

它有效,所以我想分享一下,因为我以前不知道 Power BI 中的 DAX 和 m 查询之间的区别,但是这个例子有帮助。

【问题讨论】:

    标签: powerbi dax powerbi-desktop m


    【解决方案1】:

    我不确定您在寻找什么,但我只想强调 m 查询和 DAX 之间的区别。

    M 查询:

    • M查询用于将数据带入模型
    • 可以使用 Power Query 编辑器进行访问

    DAX:

    • DAX 用于在拉取数据后创建度量和列
    • 这主要用于汇总数据

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      M 和 DAX 是用于不同目的的完全不同的语言。

      主要是,

      • M 是在加载到数据模型之前获取和转换数据的方式。

      • DAX 用于读取数据模型中的数据,将其聚合以显示在视觉对象中。

      有很多事情你都可以做,但不清楚哪个是更好的选择。它可能高度依赖于大小写,但以上只是一个简单的指南。

      无论如何,我都不建议为此使用 M 代码。像下面这样的东西应该更简单,更类似于 DAX 代码:

      Text.Middle([TRAFFIC_SIGNAL], Text.PositionOf([TRAFFIC_SIGNAL],"&"), 3)
      

      【讨论】:

      • 谢谢。但是,我必须使用 M 查询(不能使用 DAX),因为我需要加入(合并)两个表,并且需要在合并之前修改一些列。 (对于相同的值,它们有不同的形式。例如ADH-110和ad110),以及两个系统在不同服务器和数据库中的closet time值)。
      • 我可能不太清楚。我没有说要使用 DAX。我给出了一个简化的 M 表达式,它与您提供的 DAX 代码比您提供的 M 代码更相似。
      • 哦。这里有误会请见谅。我的意思是感谢您在 M 查询中为它推荐简单版本。 (在不清楚哪个是更好的选择的情况下,您可以做很多事情。=> 在这种情况下,我只有一个选择使用 M 查询:)
      猜你喜欢
      • 2012-12-24
      • 2016-06-10
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多