前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Power Query 系列 (10) - 合并查询多字段关联技巧

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

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

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

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

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

代码语言:txt
复制
- 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
复制
- 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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档