前文我们依次介绍了以下数据的整合与提取:
1. 工序工时
2. 料品工时
3. 人员投入
在“工序工时”查询的基础上,通过建立合并查询,可以得到“工序产出”的数据。现在介绍“工序产出”数据的整合提取。
1. 通过引用创建新查询
我们之前已经对Power Query数据源的工作表进行了筛选,创建了“Worksheet筛选”查询。现在我们就在此查询的基础上,创建“工序产出”查询。
2. 处理表列数据
在“Data”列的“Table”数据表中,前3行不是我们需要的数据,故将其删除。通过添加自定义列得到我们需要的表列。
操作步骤:点击【添加列】选项卡,在【常规】功能组选择【自定义列】,在弹出的对话框中输入以下自定义列公式(注意大小写必须正确,因为这里的公式使用的是M公式语言,M是区分大小写的语言):
=Table.RemoveRows([Data],0,3)
因为“Table”数据表在删除前3行后,还需要进一步的处理,例如:将第一行用作标题,所以可以直接在图2的自定义列公式中同步处理。在图2的自定义列公式外面嵌套提升标题的M语言:
=Table.PromoteHeaders(Table.RemoveRows([Data],0,3))
接着,我们还需要删除“Table”数据表中不需要的列,包括:投入工时_H、产出工时、生产率,也可以直接在图2的自定义列公式中同步处理。继续在上面的自定义列公式外面嵌套删除列的M语言:
=Table.RemoveColumns(Table.PromoteHeaders(Table.RemoveRows([Data],0,3)),{"投入工时_H","产出工时","生产率"})
最后,还需要对“Table”数据表的各个工序列进行逆透视,故继续在上面的自定义公式外面嵌套逆透视列的M语言:
=Table.UnpivotOtherColumns(Table.RemoveColumns(Table.PromoteHeaders(Table.RemoveRows([Data],0,3)),{"投入工时_H","产出工时","生产率"}),{"成品类型","料号","品名","日期","工号","姓名"},"工序号","良品数")
3. 删除不需要的列(“Data”列).
4. 展开“自定义列”
点击“自定义”列标题右边的图标,不要勾选“使用原始列名作为前缀”,点击确定。
5. 更改数据类型
依次点击每列标题左边的数据类型图标,选择正确的数据类型。
6. 合并查询,引进工序工时
由于“工序产出”查询中只有产出数量,没有产出工时的数据,所以需要通过合并查询,引进各个工序的标准工时数据,从而为后面计算产出工时做准备。
操作步骤:点击【开始】选项卡,在【组合】功能组选择【合并查询】,在弹出的对话框中选择“工序工时”查询,然后分别在两个查询中,按住“Shift”键,依次选中“工作簿”和“工序号”两列(注意选择顺序在两个查询中必须一致),点击确定。
7. 展开“工序工时”
只需选择“工序名称”和“标准工时_S”两个字段。如图10。
8. 对列进行重新排序
可以用鼠标左键拖动列标题到目标位置,对列进行重新排序。最后的效果如下图所示。
9. 添加列,计算产出工时
按住“Shift”键,依次点击“标准工时_S”和“良品数”两列将其选中,点击【添加列】选项卡,在【从数字】功能组的【标准】项中,选择【乘】,这样就添加了“标准工时_S”*“良品数”的结果列。
将图13编辑栏的“乘法”改为“产出工时”,并将计算公式除以3600,使产出工时以小时为单位,如下图所示。
10. 导出查询
点击【开始】选项卡,点击【关闭】功能组【关闭并上载】的小三角,选择【关闭并上载至…】。
在弹出的对话框中,选择【仅创建连接】,确定。
返回Excel界面,点击【数据】选项卡,选择【查询和连接】功能组中的【查询与连接】,在右边的“查询&连接”窗格中,看到多了个“工序产出”查询,并且显示该查询为“仅限连接”。
至此,“工序产出”查询就建好啦!我们在Excel数据建模的路上又前进了一步。
后续的数据建模,敬请期待!