电源查询 - Table.SelectRows

时间:2018-03-27 15:32:02

标签: powerquery excel-2016 m

我在Excel中有两个表/查询。一个表是一个组维,它列出了每个组以及有关每个组的一些元数据。下一个表是具有每个组的月度信息的事实表。表格如下所示:

表1

GroupName       Location     GroupID   
Even Steven     New York     04952
BillyBobs       Texas        04035
Nunya           California   04859

表2

GroupID     Description    SalesVolume
04952       Even Steven    59003
04035       BillyBobs      98390
04859       Nunya          50194   

对于所有意图和目的,GroupNameDescription是同一事物的不同名称(GroupName = Description

我要做的是设置一下,这样当我在GroupName上过滤Table1时,Table2也会被过滤。所以如果我过滤掉Table1中的Even Steven,然后Table2将只显示BillyBobs和Nunya。

我当前的Power Query脚本如下所示(注意:我有另一个名为“Query”的表,它只是一个未经过滤的SELECT * FROM dbo.Table,我使用它作为Table2的源。表1来自另一个表在同一个DB中:

let
    Source = Excel.CurrentWorkbook(){[Name="Query"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Month Year", type date}}),
in
    #"Removed Columns"

我相信我需要添加一个类似于在线发现的以下示例的步骤,但我无法弄清楚如何说我只想要在Group表上可见的行。

Table.SelectRows(Sales_Customers, each List.Contains(Query, [CustomerCategoryID]))

1 个答案:

答案 0 :(得分:3)

首先,我们需要一些方法让PowerQuery知道某行是否已被过滤。一种方法是使用SUBTOTAL函数。使用以下公式向Subtotal添加新的Table1列:

=IF(SUBTOTAL(104,[@GroupID])=[@GroupID], "Visible", "Hidden")

现在将Table1合并到Table2匹配Table1[GroupName]Table2[Description]

Inner Join

仅展开Subtotal列,然后仅过滤可见行。

Visible filter