36、Power Query-多条件合并查询

本节要点:Power Query-多条件合并查询

之前我们学过两表合并,多表追加,但要同时满足多个条件的表表合并,我们如何实现呢?

我们先看下面一个例子:


左表是产品对应等级的销售数量,而右表示产品对应等级的单价,现在我们需要进行合并汇总出如下结果:


汇总每个产品每个等级的平均价,销售总量,以及销售总额。

思路:两表合并,利用透视表完成汇总。

首先创建左右两表的连接。

然后进行两表的合并。

这个时候与之前不同的是:之前仅仅时根据两表的某个条件进行连接,现在需要根据“产品”和“等级”两个条件相连接,应该如何操作呢?

方法是一样,选择“销量表”的一个条件列,按住“Ctrl”选择另一个条件列,同样的选中“单价表”的两列,进行左外连接。


扩展出所需的“单价”一列即可。


添加一列计算总额。


保存连接,利用数据透视表进行接下来的操作。


把“数值”放到行的方向。


进行数据透视表的格式设置。


更改一些标示性的文字,是不是就是我们所需要的效果。


### 使用Power Query基于条件的多表查询 在Excel或Power BI中的Power Query可以高效处理来自多个表格的数据并应用复杂的过滤和连接操作。为了实现基于条件的多表查询,通常会采用以下几种方法: #### 方法一:通过合并查询来关联不同表格 当需要依据特定字段将两个或更多表格结合起来时,可以通过“追加查询”或者“联接(Join)”的方式完成。对于有条件的需求,则可以在合并前先筛选所需记录。 - **左外联接 (Left Outer Join)** 是最常用的一种方式,它保留左侧表中所有的,并只匹配右侧表中存在的对应项。 ```m let Source = Table.NestedJoin(TableA,{"KeyColumn"},TableB,{"KeyColumn"},"NewColumnName",JoinKind.LeftOuter), Expanded = Table.ExpandTableColumn(Source, "NewColumnName", {"Field1","Field2"}) in Expanded ``` 此代码片段展示了如何利用M语言定义一个左外联接过程[^1]。 #### 方法二:使用高级编辑器编写自定义函数 如果遇到更复杂的情况,比如动态改变条件或是跨多个工作簿读取文件夹内的所有CSV文档等场景下,就需要借助于Power Query内置的脚本功能——即Advanced Editor来进编程化控制。 例如创建一个接受参数输入的函数用于灵活调整查询逻辑: ```m // 定义一个接收两个参数的函数 fnFilterByCondition = (table as table, condition as any) => let FilteredRows = Table.SelectRows(table, each _[Status] = condition) in FilteredRows; ``` 上述例子说明了怎样构建一个简单的过滤函数[^2]。 #### 方法三:运用条件列生成新属性 有时可能希望根据现有数据计算得出新的特性值作为后续分析的基础,在这种情况下,“添加条件列”的工具就显得非常有用。这允许用户设定一系列if/then语句从而决定每条记录的新特征是什么样的。 ```m = Table.AddColumn(#"Previous Step", "Custom Column Name", each if [Sales]>100 then "High Sales" else "Low Sales") ``` 这段表达式解释了向当前转换步骤的结果集中增加名为`Custom Column Name`的一列,其内容取决于销售额是否超过一定阈值。 综上所述,无论是简单还是复杂的多表联合查询需求都可以依靠Power Query的强大能力得到满足;而具体采取哪种方案则依赖实际业务背景和个人偏好等因素综合考量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SAP剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值