【问题标题】:POWER BI-If match multiple columns from one table to another tablePOWER BI-如果将一个表的多个列匹配到另一个表
【发布时间】:2020-10-11 23:23:32
【问题描述】:

我有两个表,表 1 和表 2,表 1 是我的数据,表 2 是报告。表 1 和表 2 包含以下标题“水果列表”、“区域代码”和“销售代码”。在表 2 中,A 到 C 列与表 1 A 到 C 列匹配,则状态为“是”,如果不匹配则状态为“否”。

我无法在此处使用合并查询选项,因为它会创建大量重复行项目。 (我有大约 322000 个订单项的独特数据库,当我尝试使用合并选项时,它会创建很多重复的订单项)所以我正在寻找 DAX 度量或 M 语言解决方案选项。

第 2 行示例;(在表 2 数据中)项目为 123,水果列表为“鳄梨”,区号为“3100”,它与我的主数据表 1 匹配,因此状态为“是”。

第 5 行示例;(在表 2 数据中)项目为 126,水果列表为“鳄梨”,区号为“西部”,因此与我的主数据表 1 不匹配状态为“否”。

“鳄梨”“区号”仅属于以下销售代码(EU01,US,UK)。

订单项 19 的示例; 项目是 56,水果列表是“西瓜”,没有区号。请参考上述快照。

匹配条件:匹配的选择条件是两个表格中的“水果清单”、“区号”和“销售代码”。

特此附上文件供您参考。

https://www.dropbox.com/s/a2a4fqng58c4z59/IF%20MATCH%20ONE%20SHEET%20TO%20ANOTHER%20SHEET.pbix?dl=0 https://www.dropbox.com/s/oebfzind62o68fg/IF%20MATCH.xlsx?dl=0 enter image description here

【问题讨论】:

    标签: dax powerbi-desktop measure


    【解决方案1】:

    在此表之间创建关系。 首先创建列 在表 1 中:

    JoinCol = COMBINEVALUES(" ",'TABLE1'[区域代码],'TABLE1'[销售代码],'TABLE1'[水果清单])

    在表 2 中:

    JoinCol = JoinCol = COMBINEVALUES(" ",'TABLE2'[区域代码],'TABLE2'[销售代码],'TABLE2'[水果清单])

    然后你可以轻松地进行任何计算,例如在表 2 中:

    Output = if(LOOKUPVALUE(TABLE1[JoinCol],TABLE1[JoinCol],TABLE2[JoinCol]) = BLANK(),"NO","YES")
    

    您也可以尝试将 UNION 与 INTERSECT 和 EXCEPT 一起使用:

    Table = UNION(
    ADDCOLUMNS(INTERSECT(SUMMARIZECOLUMNS(TABLE1[FRUIT LIST],TABLE1[AREA CODE],TABLE1[SALES CODE]), SUMMARIZECOLUMNS(TABLE2[FRUIT LIST],TABLE2[AREA CODE],TABLE2[SALES CODE])), "IF?","YES"),
    
    ADDCOLUMNS(EXCEPT(SUMMARIZECOLUMNS(TABLE2[FRUIT LIST],TABLE2[AREA CODE],TABLE2[SALES CODE]),SUMMARIZECOLUMNS(TABLE1[FRUIT LIST],TABLE1[AREA CODE],TABLE1[SALES CODE])),"IF?","NO"))
    

    【讨论】:

    • 嗨。感谢您的解决方案和指南。您的第一个解决方案运行良好。我正在努力应用您的第二个解决方案。您能否告知我如何以及在哪里可以将您的 UNION 与 INTERSECT 和 EXCEPT 一起应用? (在自定义列或 DAX 度量中?
    • 当我尝试在新列中应用度量时,我收到以下错误消息“表达式引用多个列。多个列无法转换为缩放器值。”您能否附上最终的输出文件。
    • 对不起。我得到了它。这是新桌子。抱歉,我是 Power Bi 的新手,这就是原因。您的第二个解决方案为项目 56 西瓜选择了错误的输出。特此附上文件和快照供您参考。您能否提一些建议。 dropbox.com/s/udkg65d40gndbw4/IF%20MATCH%20NEW%20TBLE.pbix?dl=0dropbox.com/s/tq4iruisrvqnmln/IF%20MATCH-SOF1.PNG?dl=0.
    • 在您的 TABLE1 AREACODE 中,西瓜的长度为 0,但在 TABLE2 中,当我检查长度时它给出 NULL(只需添加 NewColumn len(TABLE1[AreaCode]) ),这就是输出错误的原因。检查您的源数据。
    • 嗨。谢谢你的建议。现在它工作正常。最后两个问题,如果我在表 2 中有空白行,那么 SUMMARIZECOLUMNS 测量在新表中填充了相同的内容还是需要添加新函数?我将它带上表 2 中的相同度量项是吗?您能否提一些建议。 dropbox.com/s/tq4iruisrvqnmln/IF%20MATCH-SOF1.PNG?dl=0
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-06
    • 1970-01-01
    • 2022-07-23
    • 2015-06-07
    • 1970-01-01
    相关资源
    最近更新 更多