power query 根据两个日期之间的事务日期合并两个表

Posted

技术标签:

【中文标题】power query 根据两个日期之间的事务日期合并两个表【英文标题】:power query merge two tables based on the transaction date between two dates 【发布时间】:2020-06-11 20:04:20 【问题描述】:

我正在尝试使用 Power Query 在两个表(1 - 事务表和 2 - 员工 ID 和日期范围)之间执行连接,其中事务日期介于两个日期之间。

交易表

+-------+-----------------+--------+
| EmpID | TransactionDate | Amount |
+-------+-----------------+--------+
|   123 | 5/5/2019        |     30 |
|   345 | 2/23/2019       |     40 |
|   456 | 4/3/2018        |     50 |
+-------+-----------------+--------+

员工编号

+-------+-----------+-----------+
| EmpID | StartDate |  EndDate  |
+-------+-----------+-----------+
|   123 | 5/1/2019  | 5/30/2019 |
+-------+-----------+-----------+

期望的输出

+-------+-----------------+--------+
| EmpID | TransactionDate | Amount |
+-------+-----------------+--------+
|   123 | 5/5/2019        |     30 |
|   456 | 4/3/2018        |     50 |
+-------+-----------------+--------+

如果我要在 SQL 中执行此操作,我会编写以下代码:

select *
from transaction as A
inner join empID_date as B
on A.EmployeeID = B.EmployeeID
and A.TransactionDate >= B.StartDate
and A.TransactionDate <= B.EndDate

是否可以在 Excel Power Query 中执行此操作?谢谢。

【问题讨论】:

ID表没有456的情况下,为什么想要的输出中有两列? 【参考方案1】:

进行标准合并,然后过滤。

    使用内部联接合并查询。 展开开始和结束日期列。 选择满足您条件的列。 删除多余的列。
let
    Source = < Transaction table source or definition goes here >,
    #"Merged Queries" = Table.NestedJoin(Source, "EmpID", emp_ID, "EmpID", "emp_ID", JoinKind.Inner),
    #"Expanded emp_ID" = Table.ExpandTableColumn(#"Merged Queries", "emp_ID", "StartDate", "EndDate", "StartDate", "EndDate"),
    #"Filtered Rows" = Table.SelectRows(#"Expanded emp_ID", each [TransactionDate] >= [StartDate] and [TransactionDate] <= [EndDate]),
    #"Removed Columns" = Table.RemoveColumns(#"Filtered Rows","StartDate", "EndDate")
in
    #"Removed Columns"

【讨论】:

以上是关于power query 根据两个日期之间的事务日期合并两个表的主要内容,如果未能解决你的问题,请参考以下文章

Power BI 计算单个列中两个或多个日期之间的日期

在 Power Bi 中使用 Power Query M 的上一周日期

MS Power Query:从月、日、年创建日期

使用 Power Query 过滤每月第一天和最后一天的日期

具有 Power Query 日期的动态 SQL 查询

SharePoint 列表数据的 Excel Power Query 导入更改日期/时间值