2016-08-18 34 views
1

guys!Power Query自定义函数中的参数数量

我试图在Power Query中创建我的自定义函数,并且遇到了非常意外并且完全不清楚的错误。

功能很简单 - 它从学生词典中检索学生姓名(它是从学生词典表中调用的),然后它检索发票表并计算发给这个特殊学生的多少invoieces。功能

代码如下:

(FirstName as text) => 

let 
    Source = XeroInvoices, 
    #"Filtered Rows" = Table.SelectRows(Source, each Text.Contains([XeroContacts.Name], FirstName)), 
    #"Removed Other Columns" = Table.SelectColumns(#"Filtered Rows",{"XeroContacts.Name"}), 
    #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"XeroContacts.Name"}, {{"Result", each Table.RowCount(_), type number}}), 
    Result = Record.Field(#"Grouped Rows", {0}, "Result") 
in 
    Result 

然而,正如我所说的功能有一个参数,它说,参数传递,并且该功能预计

http://shot.qip.ru/00Qqzx-4Vmk2GJfF/

你能否提出一个问题,可以解决这个问题?

在此先感谢。

回答

3

的功能,导致该错误的消息可能是你函数的最后一个步骤以上:

结果= Record.Field(#“分组的行”,{0},“结果”)

它只需要2个参数:记录和想要捕捉的字段的名称。因此,尝试将其更改为:

结果= Record.Field(# “分组的行”{0} “结果”)

查找如何方便地调试M-功能here小费。

+0

嘿,ImkeF! 感谢您的回答。 我试过了,但没有帮助。 现在它说有一个参数被传递给需要两个参数的函数: http://shot.qip.ru/00Qqzx-3Vmk2GJgY/ ///////// http://shot.qip .ru/00Qqzx-2Vmk2GJgZ/ –

+0

对不起,迟交的答案。它现在不适合你,因为你已经进一步修改了你的原始功能。在将参数传递给函数的第一行中,您添加了另一个参数:“SecondName”。所以现在当你调用这个函数时,你必须把这个参数传递给函数:fnFindFirstStudent([First Name],[Second Name])。但我怀疑你会对结果感到满意,因为许多第二个名字都是空的,而且你把它们与“和”结合在一起。考虑先合并这些字段。 – ImkeF

+0

亲爱的ImkeF) 现在我回到了这种模式,并评估你的答案)非常感谢,这是问题。现在功能完美) –

0

你可以做到这一点更简单的方法:

(FirstName as text) => 
    let 
     Source = XeroInvoices, 
     FilteredTable = Table.SelectRows(Source, each Text.Contains([XeroContacts.Name], FirstName)), 
     Result = List.Count(FilteredTable[XeroContacts.Name]) 
    in 
     Result 
+0

谢谢,尤金 这看起来更短,而且更简单 –