【问题标题】:Power Query conditional joinPower Query 条件联接
【发布时间】:2021-10-29 14:39:40
【问题描述】:

我正在尝试根据以下逻辑合并 PowerQuery 中的两个表。

这是第一个表:

这是我的第二个:

我通过使用 ID 列的完全外连接将两者合并如下

我想要实现的是这个输出

所以我想要实现的是: 如果 [Departure time] 在 [from] 和 [to] 之间,我如何告诉 Power Query 给我每条记录的 [day range] 列(来自第二个表)?

我是 PowerQuery 新手,所以请尝试用简单的语言解释您的解决方案。

【问题讨论】:

  • 将您的评论引用到@horseyride,您可以将 Table2 读入您的查询中,然后向表 1 添加一个自定义列,该列直接引用 Table2 并提供您想要的输出。我怀疑这可能比显示的 List/expand/merge 方法慢,但它是可行的。l

标签: join conditional-statements powerquery


【解决方案1】:

在第二个表中,在powerquery中,添加列,带有公式的自定义列

= {  [#"from (mins)"]  ..  [#"to (mins)"]  }

在新列顶部使用双箭头展开到新行

看起来像

文件..关闭并加载到..只创建连接

现在转到第一张桌子。

进行合并。将 ID 列和新的自定义列合并到带有左外连接的出发时间列

使用新列顶部的箭头扩展结果以拉入日期范围

表 1 的完整示例代码

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Merged Queries" = Table.NestedJoin(Source,{"ID", "Deparure time (in mins)"},Table2,{"ID", "Custom"},"Table2",JoinKind.LeftOuter),
#"Expanded Table2" = Table.ExpandTableColumn(#"Merged Queries", "Table2", {"day Range"}, {"day Range"})
in  #"Expanded Table2"

【讨论】:

  • 嘿 horseyride,我按照你的指示做了,我得到了我想要的结果。谢谢你。我想我对您的流程有基本的了解,这有助于我了解为什么有效。我想知道,是否还有一个公式可以用于合并而不是扩展第二个表?我问是因为我可以在其他更复杂的项目上使用相同的过程。非常感谢您的清晰解释。
  • 如果您不想为 table1 进行合并,那么您可以忽略 table2,只需硬编码一个列 ... 自定义列 ... 使用公式 = if ([出发时间(以分钟为单位) ] >=360 and [Departure time (in mins)] =720 and [Deparure time (in mins)] =960 and [出发时间(分钟)]
猜你喜欢
  • 2019-07-25
  • 1970-01-01
  • 1970-01-01
  • 2022-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多