答案 0 :(得分:1)
如果您真正要求的是关于一个表的记录的“已分配用户名”和“状态”是否等于另一个表的“已分配用户名”和“状态”的真或假比较< em>匹配记录,然后使用DAX的if
应该可以工作。
假设您已经匹配并合并了“BugTracker”和“BugTracker(2)”表的记录,以便获取上面显示的表格,并且合并表格的名称为“BugTrackerMerged” “,你可以用这个DAX命令添加一个列:
Column = if(BugTrackerMerged[Status]=BugTrackerMerged[Status2],TRUE(),FALSE())
请注意,我将第二个状态列命名为“Status2”,而不是“状态”。两个状态列的名称不能相同。
如果您尚未合并表格的记录,则需要先执行此操作。我发现使用Power Query(Power BI的编辑查询功能)最容易做到这一点。
(如果以下内容过于详细,我很抱歉。不知道您的Power Query专业知识水平,我想我会通过循序渐进的教程简化讨论。它比“看起来”更直接。)
为了合并两个表(“BugTracker”和“BugTracker(2)”),您需要一个共同的关键字段来进行匹配和合并。 对于这种情况,我假设您在“BugTracker”中的第一条记录应与“BugTracker(2)”的第一条记录匹配并合并,您在“BugTracker”中的第二条记录应与“BugTracker”的第二条记录匹配并合并(2)“,依此类推。因此,只需为每个表添加一个索引。
对于BugTracker,在Power Query中选择“BugTracker”查询:
然后单击“添加列”选项卡,然后单击“索引列”。 (这会将索引添加到“BugTracker”表中。)
对“BugTracker(2)”执行相同操作。
使用“BugTracker”和“BugTracker(2)”的公共索引,您可以匹配并合并这两个表。单击“主页”选项卡,然后单击“合并查询”旁边的下拉箭头,然后单击“将查询合并为新”。
在弹出的窗口中,进行必要的选择,使其如下所示,然后单击“确定”:
这会创建一个新查询,可能称为“合并”。此时,我将该查询重命名为“BugTrackerMerged”。
如果您选择新查询(现在名为“BugTrackerMerged”)并单击“来源”,则在“应用步骤”下...
您会在公式栏中看到此代码:
= Table.NestedJoin(BugTracker,{"Index"},#"BugTracker (2)",{"Index"},"NewColumn",JoinKind.FullOuter)
在该代码中,将"NewColumn"
更改为"BugTracker (2)"
以重命名生成的列。 (如果您愿意,可以将其重命名为单独的步骤,但我认为这种方法“更清洁”。
然后点击“BugTracker(2)”列标题右侧的按钮...
...展开列中的表格。你会看到一个这样的弹出窗口:
保留此处所示的设置将展开(引入)先前合并的辅助表中的所有列。 (该次要表是“BugTracker(2)”。)使用原始列名作为前缀将帮助您保持“状态”和“分配的用户名”信息来自哪个表。
此时,您拥有合并的信息。如果你愿意,你可以在这里更进一步,也可以在这里进行真/假比较。要做到这一点,只需添加一个包含一些代码的新自定义列:单击“添加列”选项卡和“自定义列”按钮:
然后,在弹出窗口中,添加以下代码:
if [Status]&[Assigned User Name]=[#"BugTracker (2).Status"]&[#"BugTracker (2).Assigned User Name"] then "True" else "False"
像这样:
你会得到一张这样的表:
您的数据预先有很多“真相”。通过使用列的过滤器按钮,您可以很容易地看到还有“Falses”。
这是我的三个查询的Power Query(M)代码:
错误追踪:
let
Source = Excel.Workbook(File.Contents("C:\Users\MARC_000\Desktop\sample\Rowdata Programming 15 July 2017 (2).xlsx"), null, true),
BugTracker_Sheet = Source{[Item="BugTracker",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(BugTracker_Sheet,{{"Column1", type text}, {"Column2", type text}}),
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
#"Added Index" = Table.AddIndexColumn(#"Promoted Headers", "Index", 0, 1)
in
#"Added Index"
BugTracker(2):
let
Source = Excel.Workbook(File.Contents("C:\Users\MARC_000\Desktop\sample\Rowdata Programming 18 July 2017.xlsx"), null, true),
BugTracker_Sheet = Source{[Item="BugTracker",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(BugTracker_Sheet,{{"Column1", type text}, {"Column2", type text}}),
#"Promoted Headers" = Table.PromoteHeaders(#"Changed Type", [PromoteAllScalars=true]),
#"Added Index" = Table.AddIndexColumn(#"Promoted Headers", "Index", 0, 1)
in
#"Added Index"
BugTrackerMerged:
let
Source = Table.NestedJoin(BugTracker,{"Index"},#"BugTracker (2)",{"Index"},"BugTracker (2)",JoinKind.FullOuter),
#"Expanded BugTracker (2)" = Table.ExpandTableColumn(Source, "BugTracker (2)", {"Status", "Assigned User Name", "Index"}, {"BugTracker (2).Status", "BugTracker (2).Assigned User Name", "BugTracker (2).Index"}),
#"Added Custom" = Table.AddColumn(#"Expanded BugTracker (2)", "Custom", each if [Status]&[Assigned User Name]=[#"BugTracker (2).Status"]&[#"BugTracker (2).Assigned User Name"] then "True" else "False")
in
#"Added Custom"