Power BI:如何合并特定表
Posted
技术标签:
【中文标题】Power BI:如何合并特定表【英文标题】:Power BI: how to merge specific tables 【发布时间】:2020-12-15 22:22:22 【问题描述】:我有表 A,其中包含特定人员的数据,如下所示:
我有表 B,其中包含特定人群在不同时期的需求数据,如下所示:
我还有一个带有句号定义的附加表 C:
Period no | Date from | Date to
--------------------------------------
1 | 27/01/2021 | 24/02/2021
2 | 25/02/2021 | 24/03/2021
...
这里有两个问题:
-
表 A 中的某个人的开始日期和结束日期可以跨越多个时期,例如人类 B
开始日期和结束日期可能不包含整个期间,例如,它们可能只是几天。所以有一个算法可以计算这是否算作一个句点:
所以现在我想将表 A 与表 B 合并,以比较每个时期的需求和交付的内容。问题是如何处理这个? 我的第一个想法是在表 A 中添加 Period 和 Quantity 列,以便能够对其进行分组和合并——但是当这个部署可以跨越多个时期时呢?以及如何为周期实现这个条件逻辑?
【问题讨论】:
【参考方案1】:我认为这可行
将期间定义作为表 1 引入
使用公式添加自定义列
= Number.From([Date from])..Number.From([Date to])
然后将其扩展到行。这为您提供了每个日期到每个时期的匹配项
文件..关闭并加载...连接
该部分的完整示例代码是:
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
添加具有类似公式的自定义列并扩展到行
= Number.From([Start of Deployment]) .. Number.From([End of Deployment])
现在将另一个表合并到这个表中并拉入句点
单击选择类型和周期列并将它们分组,从新的自定义列中提取最大和最小日期
使用公式添加工作持续时间的自定义列
= 1+[DayMax]-[DayMin]
然后添加一个自定义列来应用您的算法
= if [Duration]<6 then 0 else if [Duration] <15 then 0.5 else 1
删除多余的列。完毕。文件...关闭并加载...连接
您可以根据需要将其合并回您的表 B
此表的完整代码
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"
【讨论】:
这太好了,我只是有一个问题:我有多个定义人力资源的列:母国、东道国等。在这种情况下如何执行分组? 编辑组步骤并在更多字段上分组 顺序重要吗? 在群里?不。只需在编辑该步骤时在组对话框顶部添加更多分组 这行得通吗?如果是这样,如果你能接受答案会很好以上是关于Power BI:如何合并特定表的主要内容,如果未能解决你的问题,请参考以下文章
如何从两列数据制作一个 Power BI 饼图小部件/或将两个饼图合并为一个
Power bi怎么关联数据表?Power bi如何关联数据表啊?求解!!!