Power bi:根据标准填充单元格

时间:2017-08-05 09:05:35

标签: powerbi

您好我有两张具有以下结构的表:

RN  RO
A   X
B   Y
C   Z
D   Y
E   Z
F   X
G   Z
H   Y
I   Z
J   Z
K   Y
L   Y

和 -

RN  Eff Ct  RO
A   1   2   X
B   1   2   Y
C   1   2   Z
D   1   2   Y
E   1   2   Z
F   1   2   X
G   1   2   Z
H   1   22  Y
I   1   2   Z
J   1   2   Z
K   1   22  Y
L   1   2   Y

我想基于table1填充table2中的RO而不在它们之间建立任何关系。

我尝试通过建立关系并使用RON = IF('Table2'[RN] = FIRSTNONBLANK(Table1[RN],1), FIRSTNONBLANK(Table1[RO],1),"1")

来做到这一点

我需要删除这种关系。 没有建立任何关系,他们是否可以这样做?

2 个答案:

答案 0 :(得分:0)

这可能会有所帮助。我使用Power Query(Power BI&#39的查询编辑器)来完成此操作。我从表1开始:

enter image description here

......这就像表2:

enter image description here

然后,在Table2的查询中工作(在查询编辑器屏幕左侧的“查询”窗格中选择了Table2),我执行了以下操作:

我点击了"添加列"选项卡和"自定义列"按钮添加一个列,并在添加自定义列对话框中(见下文)我将新列命名为Table1并输入公式=Table1以在新列的每个单元格中嵌入Table1的副本:

enter image description here

然后我点击确定以获取此信息:

enter image description here

然后我点击了新列顶部的按钮...这一个...... enter image description here ...来扩展嵌入式表格。在弹出的对话框中(见下文),我保留了所有默认设置。 (我特别想要"使用原始列名称作为前缀"选择这样就可以清楚哪些RN和RO值来自Table1。)

enter image description here

然后我点击确定以获取此信息:

enter image description here (实际上是144行)

然后我点击"添加列"添加了另一列。选项卡和"自定义列"按钮再次。我将新列命名为MatchedROs并输入公式=if [RN]=[Table1.RN] then [Table1.RO] else null(如下所示)。

enter image description here

然后我点击确定以获取此信息:

enter image description here (再次,实际上144行长)

然后我过滤了MatchedROs列,以便删除所有带null的行。我点击了MatchROs列顶部的过滤器按钮...这一个... enter image description here ...然后我取消选中旁边的复选框(null)(见下文)。

enter image description here

然后我点击确定以获取此信息:

enter image description here

此时,您可以删除您可能更喜欢删除的列。 (保留Table1.RO或MatchedROs,以便获得Table1中的值。)

这是“高级编辑器”中的最终查询代码:

let
Source = Excel.Workbook(File.Contents("C:\Users\MARC_000\Desktop\Criteria..xlsx"), null, true),
Table2_Table = Source{[Item="Table2",Kind="Table"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(Table2_Table,{{"RN", type text}, {"Eff", Int64.Type}, {"Ct", Int64.Type}, {"RO", type text}}),

//The lines above establish Table2 within Power Query, pulling it from the source Excel file and doing initial setup up "stuff".
//The lines that follow are what I did once Table2 was established.

#"Added Custom" = Table.AddColumn(#"Changed Type", "Table1", each Table1),
#"Expanded Table1" = Table.ExpandTableColumn(#"Added Custom", "Table1", {"RN", "RO"}, {"Table1.RN", "Table1.RO"}),
#"Added Custom1" = Table.AddColumn(#"Expanded Table1", "MatchedROs", each if [RN]=[Table1.RN] then [Table1.RO] else null),
#"Filtered Rows" = Table.SelectRows(#"Added Custom1", each ([MatchedROs] <> null))
in
#"Filtered Rows"

答案 1 :(得分:0)

使用LOOKUPVALUE功能可以轻松完成。在表2中,添加一个包含此公式的新列;没有任何关系。

RO_New = LOOKUPVALUE(Table1[RO], Table1[RN], Table2[RN])

New lookup column