Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Power Query 系列 (10) - 合并查询多字段关联技巧

Power Query 系列 (10) - 合并查询多字段关联技巧

原创
作者头像
StoneWM
修改于 2021-03-25 01:45:50
修改于 2021-03-25 01:45:50
2.5K0
举报
文章被收录于专栏:Stone的专栏Stone的专栏

本篇介绍的合并查询的时候,需要多个字段关联作为连接条件的操作技巧。Excel Vlookup 函数可以进行多列作为条件的关联,但已经需要高级操作技巧,在 Power Query (PQ) 中实现则非常简单,方法基本上和上篇一样。

我设计了一个假想的案例:假设公司有两个仓库 #1002 和 #2001,在销售出库的时候,需要自动先从 1001 仓库出库,如果1001 仓库数量不够,剩下部分从 2001 出库。如下图所示。以 B180RBK 为例,销售 7 只,1001 库位只有 1 只,所以先将 1001 的 1 只扣掉,然后再从 2001 扣除余下的 6 只。

物料库存数据和销售数量数据放在 Excel 工作表中,根据这两个表数据,在 PQ 中创建两个查询:

代码语言:txt
AI代码解释
复制
- materialqty: 库存数量
- delivery : 销售出库数量

delivery 查询只有 MaterialNo 字段,缺少仓位字段,为了方便后面使用合并查询,基于 delivery 查询新建两列,分别为 wh1001 和 wh2001:

切换到【添加列】选项卡,选择【自定义列】,定义 wh1001 字段如下:

用同样的方法添加一个自定义列 wh2001。完成后 delivery 查询的显示界面如下:

接下来通过合并查询建立与 materialqty 查询的连接。选中 delivery 查询后,点击【主页】选项卡中的【合并查询】,在合并查询界面中:

step 1:选中 delivery 查询的 MaterialNo 和 wh1001 字段,因为要同时选中两列,使用 Ctrl 键与鼠标一起操作,Ctrl 用于选中不连续列,Shift 用于选中连续列

step 2:在界面中间部分选择第二个查询表 materialqty,表示 delivery 要和 materialqty 进行连接

step 3:选中 materialqty 查询的 MaterialNo 和 StorageLocation 列,这两列是与 delivery 查询进行连接的关联条件:

代码语言:txt
AI代码解释
复制
- delivery.MaterialNo = materialqty.MaterialNo
- delivery.wh1001 = materialqty.StorageLocation

Step 4: 使用左连接,这是 PQ 连接的默认选项

然后点击确定按钮,回到查询编辑器。这是本篇操作的重点,给出操作步骤的动图:

MaterialQty 列是一个结构化列,对这一列进行展开操作,保留 Qty 字段即可:

将 Qty.1 字段改名为 Qty1001。然后用同样的方法,再次与 materialqty 查询进行一次查询合并,获取 2001 库位的库存数量。

完成本步骤,查询设计器的界面如下:

添加一个自定义列,计算 wh1001 的出库数量:

然后再计算 wh2001 的出库数量:

删除不需要在输出中显示的列,比如:wh1001、wh2001、Qty1001 和 Qty2001。完成本步骤后,查询编辑器的界面如下:

我一般习惯在 PQ 中处理的时候,将所有列名改为英文,因为公式栏和高级编辑器对中文的支持不是很好。最后加载到 Excel 工作表之前,可以将列名改为中文,以增加友好性。

示例数据我已经放在 github 上,方便参照学习。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Power Query 系列 (18) - 参数化查询
参数化查询增加了查询的灵活性。Power Query 可以设置和管理参数,同一工作簿下所有查询都可以使用。
StoneWM
2021/03/25
2.7K0
Power Query 系列 (09) - 合并查询,全面超越 VLookup 函数
VLookup 函数据说在 Excel 函数的使用频率排名前三,但这个函数也有不少局限性,Microsoft 推出了一个新的函数 XLookup 可以用于取代 VLookup。但 XLookup 目前还没有正式发布。处理多表连接,如果有多条件,之前我比较多的是用 MS Access 的查询,但现在有了 Power Query (PQ),在 Excel 中也能愉快的玩耍了。多条件连接准备放在下一篇。PQ 的查询表合并,实现将两个表横向合并,无论是界面友好性方面,还是功能上,都比 VLookup 强大太多。
StoneWM
2021/03/25
4.6K0
Power Query 系列 (12) - Power Query 结构化列应用案例
本篇数据处理来自一个实际处理数据的简化。下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码。数据处理任务:需要在 Excel 中增加一列输出物料编码上一级的物料编码(目标为黄色部分)。
StoneWM
2021/03/25
1.4K0
Power Query 系列 (15) - Table 和 List 转换应用案例
本文通过一个数据处理的案例,说明 table 和 list 相互转换在 Power Query (PQ) 数据处理中的作用。假设有下面的销售数据,需要按月份进行汇总,输出为右边的格式:
StoneWM
2021/03/25
2.6K0
Power Query 系列 (13) - 自定义函数
以工资类所得应交个税为例,最新的个税起征点为 5000 并按下表的级次进行缴税(假设没有其它扣除项)。
StoneWM
2021/03/25
2K0
Power Query 系列 (04) - 从 Web 导入数据
因为网络页面具有很大不确定性,比如数据变化,或者页面过几天就不见了,所以无法保证我所选取的页面在您查看的时候一定还在。但基本方法类似,您也可以找到一个类似的页面来操作。
StoneWM
2019/09/17
2K0
Power Query 系列 (14) - BOM数据展开应用案例
层次化数据是一种比较常见的数据关系,比如 BOM、公司的组织架构、族谱等等。本文讲解应该如何对层次化数据进行存储和加工输出。设计的场景如下:
StoneWM
2021/03/25
1.1K0
Power Query 系列 (06) - M 语言结构化数据类型
本篇介绍 Power Query M 语言的三种结构化类型(或称为容器类型):List、Record 和 Table,它们是 Power Query 数据处理的核心。了解本篇三种容器类型后,应该能大体看懂查询编辑器和高级编辑器中的代码逻辑。
StoneWM
2019/12/13
1.8K0
Power Query 系列 (03) - 从数据库导入数据
Excel 支持部分数据库数据导入和基于 ODBC 的数据库导入,Power Query (以下简称 PQ) 扩大了直连数据库的范围,并且使用起来更加直观。本篇介绍 MS Access 和 MySQL 数据导入,其他数据库的使用方式类似。也会介绍 从 ODBC 数据源导入数据的方法。
StoneWM
2019/09/11
2.6K0
Power Query 系列 (07) - 添加列
前面几篇博客介绍了 Power Query (简称 PQ) 的数据源和 M 语言的基础知识,现在开始进入数据处理部分。本篇接着介绍 如何在 PQ 中添加列。添加列是很重要的一个操作,在 PQ 的查询编辑器界面,有一个专门【添加列】功能区。在讲解添加列的过程中,我们会逐步介绍一些相关知识点和 PQ 的操作细节。
StoneWM
2021/03/25
3K0
Power Query 系列 (19) - 使用混合查询 (Query Folding)提高性能
在本系列的第 18 篇文章中,我详细讲解了从 MS Access 数获取数据,通过 PQ 完成进出存查询的过程。在示例中, stock_movement_details 查询大约 28000+ 行,计算出基于月份的进出存大致耗时 20 秒左右。使用 Excel 实现这样的输出报表有一定难度,从这个角度来说 PQ 是一个巨大的飞跃。但 28000 条的数据耗时 20 秒,性能就比较低了,这引起了我的好奇。经过一番思考和探索,发现了一些可以提高性能的做法。
StoneWM
2021/03/25
2.3K0
Power Query 系列 (08) - 行转列案例
行转列是一种常见的数据处理操作,所以对如何在 SQL 语句中、如何在 pandas 中实现这种行转列做过一些总结。请参考我之前写的博文:
StoneWM
2021/03/25
1.4K0
Power Query 系列 (01) - Power Query 介绍
Power Query 是微软提供的工具,Excel 2013 版作为插件加载使用,从 Office 2016 版开始,Power Query 的功能集成到 Excel 中,可以直接使用。微软推出 Power BI Desktop 后,一系列的工具,比如 Power Query, Power Pivot, Power View 等,都集成在其中。Power Query 定位查询,中文一般翻译为超级查询,主要作用是连接不同种类的数据源,进行数据的转换。下图来自微软官方对 Power Query 的介绍,可以帮助理解。Power Query 主要实现连接和转换功能。
StoneWM
2019/08/30
6.1K0
Power Query 系列 (11) - 函数基础
函数是 Power Query (PQ) 解决问题的核心。之前的博客文章我多层刻意在完成查询的步骤之后显示高级编辑器中 M 语言代码,想必大家已经对 M 的函数有了初步印象,尽管不一定很关注。本篇介绍 M 函数比较重要的知识点。
StoneWM
2021/03/25
1.4K0
Power Query 系列 (20) - 如何在外部使用Power Query提供的服务
Power Query 作为桌面端数据清理和转换的工具,能极大解放生产力,将繁琐的数据处理工作从重复的劳动中解放出来。那么,Power Query 能否对外提供计算服务呢?或者说 Power Query 有没有对外提供的编程接口? 根据我的探索,似乎没有,但在网络上找到下面的两种 walkaround 方式,都比较小众。所以如果真的需要数据处理、数据分析服务的话,不如选择其他的方案,比如 pandas 等等,拥有更大的自由度。
StoneWM
2021/03/25
2.9K0
10分钟快速搭建小程序管理后台,借助云开发CMS搭建可视化的数据管理网页平台
官方文档:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/extensions/cms/introduction.html
编程小石头
2021/01/13
4K0
10分钟快速搭建小程序管理后台,借助云开发CMS搭建可视化的数据管理网页平台
3行代码实现小程序直播,带美颜优惠券抽奖功能
注意我们上图红色框里的一些要求。必须要满足这些条件,才可以开通直播功能。更详细些的如下:
编程小石头
2020/06/30
1K0
3行代码实现小程序直播,带美颜优惠券抽奖功能
Power Query 系列 (17) - BOM数据展开应用案例(2)
在本系列的第 14 篇,我介绍了类似 BOM 的数据应该怎么存储,以及在 Power Query 中如何展开。那篇文章使用创建辅助查询的方法,从而简化了在查询编辑器的操作,小白都是可以理解和掌握的。但如果我们来回顾一下处理的过程,有很多重复的操作,比如合并和展开第 2 级数据,合并和展开第 3 级数据等等。有编程概念的人立即想到,应该用循环来解决啊。在编程语言中,循环是一种基础的控制结构,是基础的东西,但在 PQ 中却没有直接的循环语句,需要通过函数的辅助来实现。上篇介绍了 List.Generate 函数之后,我们可以对 BOM 数据的展开进行优化了。
StoneWM
2021/03/25
9030
小程序里使用async和await变异步为同步,解决回调地狱问题
最近好多同学,学习完石头哥的云开发基础以后,自己实际项目中,总会遇到各种各样的异步问题。
编程小石头
2021/05/29
1.4K0
小程序里使用async和await变异步为同步,解决回调地狱问题
Power Query 系列 (05) - M 语言介绍
M 语言或者叫 M 查询语言是 Power Query (简称为 PQ) 幕后的英雄。据说 Power Query Editor 可视化操作可以实现 PQ 80% 的功能,所以从操作层面来说,大部分人不用学习 M 语言,但学习和掌握 M 语言无疑是在数据处理的时候如虎添翼,而且,有一些 M 的基础也能加深对 PQ 操作步骤的理解,进而有可能对这些应用的步骤做一些优化和改善。总的来说,M 是一种值得学习和掌握的技能,Excel 和 Power BI 都可以用。
StoneWM
2019/09/18
2.6K0
推荐阅读
相关推荐
Power Query 系列 (18) - 参数化查询
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档