首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Power :如何合并特定的表

Power :如何合并特定的表
EN

Stack Overflow用户
提问于 2020-12-15 22:22:22
回答 1查看 68关注 0票数 0

我有表A列有具体人员执行任务的数据如下:

我有表B提供了特定人在不同时期的需求数据如下:

我还有另一份表C,其期间定义如下:

代码语言:javascript
运行
复制
Period no  |  Date from | Date to
--------------------------------------
   1       | 27/01/2021 | 24/02/2021
   2       | 25/02/2021 | 24/03/2021
...

这里有两个问题:

  1. 表A中的某个人可以有跨越多个期间的开始和结束日期,例如,人力B
  2. 开始日期和结束日期可能不包括整个期间,例如,它们只包含几天。因此,有一种算法可以计算这是一个周期,还是not:
  • if --它小于5天,如果这是6至14天,则不算
  • ,而如果它超过14天,则不算
  • ,而不是1周期

所以现在我想把表A和表B合并起来,比较每个时期的需求和交付的情况。问题是如何处理这个问题?我的第一个想法是将列添加到表A中,用于期间和数量,以便能够对其进行分组和合并--但是当这个部署可以跨越多个时间段时呢?另外,如何在期间内实现这个条件逻辑?

EN

回答 1

Stack Overflow用户

发布于 2020-12-16 13:58:15

我觉得这个很管用

将期间定义为Table1

使用公式添加自定义列

代码语言:javascript
运行
复制
= {Number.From([Date from])..Number.From([Date to])}

然后把它扩展到行。这给了你一个匹配的每个日期到每一个周期。

档案..。关闭并装载..。连接

该部分的完整示例代码如下:

代码语言:javascript
运行
复制
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Period no", Int64.Type}, {"Date from", type date}, {"Date to", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {Number.From([Date from])..Number.From([Date to])}),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Date from", "Date to"})
in #"Removed Columns"

拉进你的TableA,叫做Table2

添加具有类似公式的自定义列并展开为行。

代码语言:javascript
运行
复制
= {Number.From([Start of Deployment]) .. Number.From([End of Deployment])}

现在将另一个表合并到这个表中,并拉入句号。

单击“选择类型”和“期间”列并将其分组,从新的自定义列中提取最大日期和最小日期。

为使用公式的工作时间添加自定义列

代码语言:javascript
运行
复制
= 1+[DayMax]-[DayMin]

然后添加一个自定义列来应用您的algo。

代码语言:javascript
运行
复制
=  if [Duration]<6 then 0 else if [Duration] <15 then 0.5 else 1

移除额外的列。好了。档案..。关闭并装载..。连接

您可以根据需要将其合并回表B中。

此表的完整代码

代码语言:javascript
运行
复制
let Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Type", type text}, {"Start of Deployment", type date}, {"End of Deployment", type date}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each {Number.From([Start of Deployment]) .. Number.From([End of Deployment])}),
#"Expanded Custom" = Table.ExpandListColumn(#"Added Custom", "Custom"),
#"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Start of Deployment", "End of Deployment"}),
#"Merged Queries" = Table.NestedJoin(#"Removed Columns",{"Custom"},Table1,{"Custom"},"Table1",JoinKind.LeftOuter),
#"Expanded Table1" = Table.ExpandTableColumn(#"Merged Queries", "Table1", {"Period no"}, {"Period no"}),
#"Grouped Rows" = Table.Group(#"Expanded Table1", {"Type", "Period no"}, {{"DayMin", each List.Min([Custom]), type number}, {"DayMax", each List.Max([Custom]), type number}}),
#"Added Custom1" = Table.AddColumn(#"Grouped Rows", "Duration", each 1+[DayMax]-[DayMin]),
#"Added Custom2" = Table.AddColumn(#"Added Custom1", "Algo", each if [Duration]<6 then 0 else if [Duration] <15 then 0.5 else 1),
#"Removed Columns1" = Table.RemoveColumns(#"Added Custom2",{"DayMin", "DayMax", "Duration"})
in #"Removed Columns1"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65314541

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档