联盟以及其他表中的值是否存在Power BI

时间:2017-12-21 09:38:23

标签: if-statement union powerbi m

我有3张桌子。

第一个是产品表

Product Table

第二个也是产品表,但第一个产品也存在。

Second Product Table

最后,我有一张销售表。

Sales Table

我想将两个产品表合并为一个新产品表,如果一个产品位于“Sales”中,则添加一个带有客户端名称的新列。

这种结果。

Result

我想在Power BI中执行此操作,但我找不到在查询编辑器中执行此操作的解决方案。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:4)

这里我假设ID是表格中的主键。

首先,您可以将两个Product表附加(即联合)到一个表中:

append 1

append 2

然后,删除ID列上的重复项:

remove duplicates

现在,您可以将查询与Sales列上的ID表合并(即加入):

merge 1

merge 2

展开Sales表格,只选择ClientName列:

expand 1

expand 2

最后,将空值替换为Unsold

replace 1

replace 2

(是的,字符串null表示NULL,但它的工作原理是这样的,这很奇怪)

最终结果:

result

完整M代码供您参考:

let
    Source = Table.Combine({Product, Product2}),
    #"Removed Duplicates" = Table.Distinct(Source, {"ID"}),
    #"Merged Queries" = Table.NestedJoin(#"Removed Duplicates",{"ID"},Sales,{"ID"},"Sales",JoinKind.LeftOuter),
    #"Expanded Sales" = Table.ExpandTableColumn(#"Merged Queries", "Sales", {"ClientName"}, {"ClientName"}),
    #"Replaced Value" = Table.ReplaceValue(#"Expanded Sales",null,"Unsold",Replacer.ReplaceValue,{"ClientName"})
in
    #"Replaced Value"