power query 根据两个日期之间的交易日期合并两个表
power query merge two tables based on the transaction date between two dates
我正在尝试使用 Power Query 在两个 table 之间执行连接(1 - 交易 table 和 2 - 员工 ID 和日期范围),其中交易日期介于两个日期之间.
交易Table
+-------+-----------------+--------+
| 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 中执行此操作?谢谢。
进行标准合并,然后过滤。
- 使用内部联接合并查询。
- 展开开始日期和结束日期列。
- Select 列满足您的条件。
- 删除多余的列。
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 在两个 table 之间执行连接(1 - 交易 table 和 2 - 员工 ID 和日期范围),其中交易日期介于两个日期之间.
交易Table
+-------+-----------------+--------+
| 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 中执行此操作?谢谢。
进行标准合并,然后过滤。
- 使用内部联接合并查询。
- 展开开始日期和结束日期列。
- Select 列满足您的条件。
- 删除多余的列。
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"