如何在PowerQuery M.Language公式中进行Countifs / Sumifs?

时间:2016-02-11 22:46:02

标签: powerbi powerquery m

是否可以在powerquery公式中执行Excel的Countifs / Sumifs公式?假设我说[Column1]为“Criteria range”,[Column2]为“Criteria”(示例条件[Column2]文本包含“Product”),我想要新的自定义列中的Count / Sum [Column1]单元格([Column3] ])

6 个答案:

答案 0 :(得分:1)

您可以根据条件使用过滤器进行过滤,然后在“变换”功能区选项卡中使用“计数行”。可以通过单击列中的箭头来完成过滤。

或者,您可以过滤列,然后使用分组依据计算计数或总和。

答案 1 :(得分:1)

You might want to try this formula:

require('babel/register')

it's not as flexible as SUMIFs but counts the number of records in Column1 that contain the word that stands in the current row of Column2

答案 2 :(得分:1)

我在COUNTIF的Power Query Editor中使用此功能,但我还没有掌握COUNTIFS或SUMIFS:

POST https://outlook.office.com/api/v2.0/me/subscriptions HTTP/1.1
Content-Type: application/json

{
   @odata.type:"#Microsoft.OutlookServices.PushSubscription",
   Resource: "https://outlook.office.com/api/v2.0/me/events",
    NotificationURL: "https://mywebhook.azurewebsites.net/api/send/myNotifyClient",  
   ChangeType: "Created",
   ClientState: "c75831bd-fad3-4191-9a66-280a48528679"
}

然后我就像

一样使用它
let 
  countif = (tbl as table, col as text, value as any) as number =>
    let
      select_rows = Table.SelectRows(tbl, each Record.Field(_, col) = value),
      count_rows = Table.RowCount(select_rows)
    in
      count_rows
in
    countif

我已经在我的博客上广泛地写了这篇文章,这是我的首选方式。

http://jaykilleen.com/posts/countif-in-power-query-or-powerbi-using-m-language

我希望这可以帮助你:)

答案 3 :(得分:0)

我想我已经解决了这个问题。

我创建了一个csv。 [Sumifs test.csv]并将查询链接到此文件。

这是源表,如下所示: [标题] {行}

[Alpha1] {A A A A A A A A A A}

[Alpha1] {AA AA AA AA BB BB BB BB BB}

[Num1] {1 1 1 1 1 1 1 1 1}

[Num2] {11 11 11 11 22 22 22 22 22}

[Value] {1 2 3 4 5 6 7 8 9}


Source = Csv.Document(File.Contents(“D:\ Power BI \ Tests \ Sumifs test.csv”),[Delimiter =“,”,Encoding = 1252]),
 #“Promoted Headers1”= Table.PromoteHeaders(Source),
 #“Changed Type”= Table.TransformColumnTypes(#“Promoted Headers1”,{{“Num1”,Int64.Type},{“Num2”,Int64.Type},{“Value”,Int64.Type}}),< / p>

Phase1 =#“Changed Type”,
 #“Grouped Rows”= Table.Group(#“更改类型”,{“Alpha1”,“Alpha1_1”},{{“值”,每个List.Sum([值]),类型编号}}),

MyList = List.Buffer(#“Grouped Rows”[Values]),
 Custom1 =#“Grouped Rows”,

#“已添加自定义”= Table.AddColumn(Custom1,“累积”,每个List.Sum(List.Select(MyList,(x)=&gt; x&gt; = [值]))),

#“Grouped Rows1”= Table.Group(#“自定义”,{“Alpha1”},{{“Values2”,每个List.Sum([值]),类型编号}}),

MyList2 = List.Buffer(#“Grouped Rows1”[Values2]),
Custom2 =#“Grouped Rows1”,

#“Merged Queries”= Table.NestedJoin(Phase1,{“Alpha1”},Custom2,{“Alpha1”},“NewColumn”,JoinKind.LeftOuter),
 #“Expanded NewColumn”= Table.ExpandTableColumn(#“Merged Queries”,“NewColumn”,{“Values2”},{“NewColumn.Values2”}), Phase2 =#“Expanded NewColumn”,

#“Merged Queries2”= Table.NestedJoin(Phase2,{“Alpha1_1”},Custom1,{“Alpha1_1”},“NewColumn”,JoinKind.LeftOuter),

#“Expanded NewColumn1”= Table.ExpandTableColumn(#“Merged Queries2”,“NewColumn”,{“Values”},{“NewColumn.Values”})

#“扩展NewColumn1”

答案 4 :(得分:0)

请看这个例子:我有一个包含4列(Serial,Team,Name,Role)的表,如here所示,想要创建一个包含列的汇总表(Team,HasAdmin?,CountOfMembers)< / p>

我在3步中完成,如图所示:

第1步:使用conditional column功能区中的Add Column按钮添加2个新列,如herehere

所示

第2步:将新列的类型更改为“整数”,如here所示

第3步:选择[小组]列并点击Group By功能区中的Home按钮,然后按所示填写here

光洁度!

对于“sumif”,您可以在步骤1中将单元格值设置为“1”

答案 5 :(得分:-1)

Powerquery遵循更多ETL方法。因此,在powerquery的情况下,您不能拥有活动的OLE。您可以将excel中的现有表链接为数据源,并可以根据需要生成一些特定的摘要。如果您想实现类似excel的功能,那么有一些先决条件。

您的数据应位于Excel表格中。 制作另一个包含搜索条件的表格。 现在你需要制作两个表,一个用于datasoure,第二个用于搜索条件

现在在从现有数据获取的表格中,您可以创建一个额外的指标列,您可以根据需要根据搜索条件输出 类似于实现countifs的东西 如果Text.Contains(col1,search criteria1)和Text.Contains(col2,searchcriteria 2)比1还要0 实施sumifs 如果Text.Contains(col1,search criteria1)和Text.Contains(col2,searchcriteria 2)比[sumcol]其他0 根据此列汇总表格,只需在工作表上选择输出结果的输出范围(这将是另一个单元格表格)

如果您已经从其他来源获取数据,只需为搜索条件创建参数表,如果您的搜索条件已修复,则只需跳过数据和搜索条件表并使用指标列。

不幸的是它是一个过程,没有捷径或公式。