Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
在本文中,我们将讨论如何从另一张表中查找值。我们将向你展示一些示例,以帮助你更好地理解。
样本数据:
任务表:
过程表:
员工表:
关系:
场景1:
假设我想计算员工完成每项任务后剩余的任务数。
使用DAX:
剩余 =
VAR _required =
LOOKUPVALUE ( '任务'[要求], [任务], '过程'[任务] )
VAR _hasDone =
CALCULATE (
SUM ( '过程'[已完成] ),
FILTER (
'过程',
[任务] = EARLIER ( '过程'[任务] )
&& [已完成] <= EARLIER ( '过程'[已完成] )
)
)
RETURN
_required – _hasDone
结果:
场景2:
假设我想获得任务表 中每项任务最后剩余多少量。
方法1 ——使用DAX:
由于过程表 中的每个任务都有多个完成日期和值,我们不能再使用 LOOKUPVALUE()。在这种情况下,我们需要获取每个任务的 “已完成”值的累计和,然后用 需求列减去它。
剩余 =
var _hasDone=CALCULATE(SUM('过程'[已完成]),FILTER('过程',[任务]=EARLIER('任务'[任务])))
return [要求] - _hasDone
结果:
方法2 ——在Power Query中使用 M 语言:
完整的M语法:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUXIEYiMDIyN9I30Q19DMQClWJ1rJCMh2QkiZgaRMTcBSxkC2M0LKAsQ0tlCKjQUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [索引 = _t, 任务 = _t, 开始日期 = _t, 要求 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"索引", Int64.Type}, {"任务", type text}, {"开始日期", type date}, {"要求", Int64.Type}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"任务"}, 过程, {"任务"}, "过程", JoinKind.LeftOuter),
#"Aggregated Process" = Table.AggregateTableColumn(#"Merged Queries", "过程", {{"已完成", List.Sum, "Sum of 过程.已完成"}}),
#"Added Custom" = Table.AddColumn(#"Aggregated Process", "遗留", each [要求]-[Sum of 过程.已完成]),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom",{"Sum of 过程.已完成"})
in
#"Removed Columns"
结果:
场景3:
假设我想知道每位员工都处理过哪些不同的任务。
方法1——使用DAX:
由于每位员工可能会处理多项任务,所以我们应该使用 CONCATENATEX() 来合并。
处理了哪些任务 =
VAR _t =
SUMMARIZE (
FILTER ( '过程', [员工] = EARLIER ( '员工'[员工] ) ),
[任务]
)
RETURN
CONCATENATEX ( _t, [任务], "," )
结果:
方法2——在Power Query中使用M语言:
完整的M语法:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WcszJLE5UitWJVnJKzQPTrpWpOZVAZiwA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [员工 = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"员工", type text}}),
#"Merged Queries" =Table.NestedJoin(#"Changed Type", {"员工"}, Process, {"Employee"}, "过程", JoinKind.LeftOuter),
#"Expanded Process" = Table.ExpandTableColumn(#"Merged Queries", "过程", {"任务"}, {"任务"}),
#"Removed Duplicates" = Table.Distinct(#"Expanded Process"),
#"Grouped Rows" = Table.Group(#"Removed Duplicates", {"员工"}, {{"联合", each Text.Combine([任务],","), type text}})
in
#"Grouped Rows"
结果:
希望这篇文章能帮助大家解决类似的问题。
作者: Eyelyn Qin
审稿人: Kerry Wang & Ula Huang
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.