Power Query - Table.SelectRows

Posted

技术标签:

【中文标题】Power Query - Table.SelectRows【英文标题】: 【发布时间】:2018-03-27 15:32:01 【问题描述】:

我在 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 的源。Table1 来自另一个表相同的数据库):

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】:

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

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

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

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

【讨论】:

那个 Table.SelectRows 不起作用。内部连接类型的作品,但我希望用户能够对 Excel 表本身进行过滤。该选项起作用的唯一方法是,如果我进入 Table1 查询并手动预过滤列作为查询步骤......虽然感谢帮助 如果您希望用户能够在不进行任何手动刷新的情况下动态过滤表,那么 PowerQuery 不是正确的工具。 哦,我打算让他们在选择过滤器后使用“全部刷新”按钮手动刷新。我只是说他们不能进入 Power Query 并编辑查询 好的。检查我的编辑。我想我有一些可行的方法。

以上是关于Power Query - Table.SelectRows的主要内容,如果未能解决你的问题,请参考以下文章

power query展开表时动态获取要展开的列

power query插件应用案例(二)

power query如何实现增加空白行

Power Query初识

Power-BI:在数据区添加列或在 Power-Query 中添加列

power query中M函数和处理数据