外部应用于 Power Query M
Outer apply in Power Query M
我在 Excel
中有一个 table
Id
-----
1
2
3
我还有一个函数 F,它接受 Id 和 returns 一个 table。我需要制作类似
的东西
SELECT * FROM ExcelTable as et OUTER APPLY F(et.Id)
关于如何在没有循环的情况下在 Power Query M 中制作它,您有什么想法吗?
似乎在 Power Query M 中执行此操作的自然方法是使用 AddColumn 和 ExpandColumn。
这里相当于
SELECT *
FROM ExcelTable e
OUTER APPLY (
SELECT *
FROM SomeOtherTbl s
WHERE s.SomeOtherId = e.Id
)
在Power查询M中是
let
SomeOtherTbl = Table.FromRecords({[SomeOtherId = 0, Field1 = "Hate MS docs"],
[SomeOtherId = 1, Field1 = "samples formatting"]}),
ExcelTable = Table.FromRecords({[Id = 0],
[Id = 1]}),
F = (id) => Table.SelectRows(SomeOtherTbl, each [SomeOtherId] = id),
OuterApplyStep1 = Table.AddColumn(ExcelTable, "FFFF", each F([Id])),
ColumnNames = Table.Schema(OuterApplyStep1{0}[FFFF])[Name],
OuterApplyStep2 = Table.ExpandTableColumn(OuterApplyStep1, "FFFF", ColumnNames, ColumnNames)
in
OuterApplyStep2
幸好我不关心第二个 table 的列名。不好的是,如果没有匹配,代码就会失败 - Table.Schema falls.
我在 Excel
中有一个 tableId
-----
1
2
3
我还有一个函数 F,它接受 Id 和 returns 一个 table。我需要制作类似
的东西SELECT * FROM ExcelTable as et OUTER APPLY F(et.Id)
关于如何在没有循环的情况下在 Power Query M 中制作它,您有什么想法吗?
似乎在 Power Query M 中执行此操作的自然方法是使用 AddColumn 和 ExpandColumn。 这里相当于
SELECT *
FROM ExcelTable e
OUTER APPLY (
SELECT *
FROM SomeOtherTbl s
WHERE s.SomeOtherId = e.Id
)
在Power查询M中是
let
SomeOtherTbl = Table.FromRecords({[SomeOtherId = 0, Field1 = "Hate MS docs"],
[SomeOtherId = 1, Field1 = "samples formatting"]}),
ExcelTable = Table.FromRecords({[Id = 0],
[Id = 1]}),
F = (id) => Table.SelectRows(SomeOtherTbl, each [SomeOtherId] = id),
OuterApplyStep1 = Table.AddColumn(ExcelTable, "FFFF", each F([Id])),
ColumnNames = Table.Schema(OuterApplyStep1{0}[FFFF])[Name],
OuterApplyStep2 = Table.ExpandTableColumn(OuterApplyStep1, "FFFF", ColumnNames, ColumnNames)
in
OuterApplyStep2
幸好我不关心第二个 table 的列名。不好的是,如果没有匹配,代码就会失败 - Table.Schema falls.