除了Table.Transpose()与List.Zip()能够完成行列互换,List.TransformMany()也可实现这一动作,不过代码相对没有那么简洁。
如果需要为上表添加行加总与列加总,使之转化为:
需要定义以下fnAddSum()函数:
该函数通过List[......]
国内首个M语言分享博客
除了Table.Transpose()与List.Zip()能够完成行列互换,List.TransformMany()也可实现这一动作,不过代码相对没有那么简洁。
如果需要为上表添加行加总与列加总,使之转化为:
需要定义以下fnAddSum()函数:
该函数通过List[......]
Table.ColumnsOfType()可以抽象地概括为function(table as table, listOfTypes as list) as list, 大致上可以理解为该函数的第一个参数为表格,第二个参数是元素为数据类型常数的基本串列,第一个参数所有的数据类型为第二参数指定的类型之一[......]
Table.RemoveMatchingRows()可以抽象地概括为function(table, rows as list, optional equationCriteria as any) as table, 意思为该函数的第一个参数为表格,第二参数为串列套记录({[]..[]})形式的复合串[......]
假设今天是2020-01-24,现在有一份记录了从2020-01-25开始到2020-12-31结束的到期货款的表格(BalAmt表格):
需要设计出以下用于对上表的时间进行区间匹配的参数表(ParaTable表格):
以上参数的设计需要考虑假期,除了周日,以下日期也纳入假日的定[......]
Table.SingleRow()可以抽象地概括为function(table as table) as record,意思为如果作为参数的表格只有一行,该函数会使这个表格退化为记录。这个函数主要用于检测多对一模型的多边(many side)是否仅对应一边(one side)的一行(如果不是,这个模[......]
Table.TransformRows()可以抽象地概括为function(table as table, transform as function) as list,大意为:该函数的第一个参数为表格,第一个参数按行分解所得的记录将会作为自变量传入第二个参数指定的函数,指定函数的结果会按照行的顺序[......]
假设业务员的薪酬与其销售额挂钩,计算薪酬时需要把销售额按如下表格(Info1)划分为多个区间,处在不同区间的销售额的提成率也会发生变化:
现在需要根据以下十位员工的销售额(Info2表格)算出对应的薪酬:
以员工6为例,薪酬的计算过程为
0.03*(36,000 - 0)0[......]
Record.FieldValues()可以抽象地概括为function(record as record) as list,意思为这个函数仅有一个参数,这个参数的种类只能为记录(record),由这个函数产生的结果为串列(list)。简单来说,Record.FieldValues()会移除作为自变[......]
IT部门的同事不时会扭曲数据使用者的意图,设计出不合理的数据布局,其中比较常见的不合理布局为同一字段含有性质不同的值。假如数据使用者需要如下图的数据:
不幸的是,IT部门的同事提供的的数据为:
如果IT部门的同事拒绝修改以上数据的布局,请使用以下的代码:
由于刘关张学习的[......]
M语言虽然函数众多,但是没有一个函数能够像Excel函数Sumproduct()起到对应项相乘然后加总的作用。幸运的是,M语言函数经过适当的搭配可以模仿Sumproduct(),以下是其中一种可行的组合:
在构造这个自定义函数时,首先要想到List.Product()只接受串列作为它的自变量[......]