首先我们要了解一下Power Query高级编辑里面的M公式是什么?
官方定义:Microsoft Power Query 提供了包含许多功能的强大数据导入体验。 Power Query 适用于 Analysis Services、Excel 和 Power BI 工作簿。 Power Query 的核心功能是筛选和合并,即从支持的数据源的一个或多个丰富集合中混合数据。 任何此类数据混合都使用 Power Query M 公式语言来表示。 它是类似于 F# 的区分大小写的函数语言。(这块不了解的小伙伴可以理解成JS语法)。
在 Power Query M 公式语言中,函数是一组输入值到单个输出值的映射 。 要编写一个函数,首先需命名函数参数,然后提供一个表达式来计算函数的结果。 函数正文在“转到”(=>) 符号之后。 根据需要,类型信息可以包含在参数和函数返回值中。 函数在 let 语句的正文中定义和调用 。 参数和/或返回值可以是隐式或显式。 隐式参数和/或返回值属于 any 类型 。 any 类型类似于其他语言中的 object 类型 。 M 中的所有类型都派生自 any 类型 。
函数是与数字或文本值类似的值,并且可以像其他任何表达式一样通过嵌入的方式包含在内 。 以下示例演示一个函数,该函数是随后将从其他几个变量调用或执行的 Add 变量的值。 调用函数时,将指定一组值,这些值会在逻辑上替换函数正文表达式中所需的输入值集。
上面的概念看完,下面就为大家展示一个简单实用的小例子:
数据如下:
分析数据:
如上测试数据,我们需要返回像Result列一样的值。这样就需要我们对CODE1、CODE2、CODE3列进行判断。这个逻辑在DAX里面需要取出来字段的值再判断,嵌套麻烦。想这块,我们就可以使用powerquery高级编辑器,新建一个自定义列来实现此逻辑,那就极方便了。
重点函数:备注:区分大小写
- if表达式(“if”表达式根据逻辑条件在两个表达式之间进行选择,直接理解if a then a else b)
- 运算符:and (和)、<>(不等于),=(等于)
首先新建自定义列
在方框内输入代码(双击字段则自动添加):
然后在对应的脚本 :
if [#"CODE1"]<>"NA" and [#"CODE2"] <>"NA" and [#"CODE3"]="NA" then "Not Existed Code3"
else if [CODE1]<>"NA" and [#"CODE2"] ="NA" and [#"CODE3"]<>"NA" then "Not Existed Code2"
else if [#"CODE1"]="NA" and [#"CODE2"] <>"NA" and [CODE3]<>"NA" then "Not Existed Code1"
else "A=All Same"