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 开始日期和结束日期可能不包含整个期间,例如,它们可能只是几天。所以有一个算法可以计算这是否算作一个句点:
如果少于 5 天,则不算数 如果在 6 到 14 天之间,则为 0.5 天 如果超过 14 天,则为 1 个期间

所以现在我想将表 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 饼图小部件/或将两个饼图合并为一个

Power bi怎么关联数据表?Power bi如何关联数据表啊?求解!!!

157_模型_Power BI & Power Pivot 如何建立和维护维度表

power bi 如何获取数据做可视化