【问题标题】:Calculated Column --A Table of Multiple Values was supplied using DAX IN POWERBI -计算列 - 使用 DAX IN POWERBI 提供了一个多值表 -
【发布时间】:2019-06-14 14:00:05
【问题描述】:

我有两个表,其中有两列具有相似的数据,但是当两列中的数据匹配时,我希望从其中一个表中查找值,如果不匹配,则返回主列中的数据

表A

Company_Code  |  Invoice_No | Buyer_Code| Diaspora_Buyer_Code

A|1|001
A|6|002
B|2|003
C|3|001
D|5|006

表 B

Company_Code | Invoice_No|Diaspora_Buyer_Code

A|1|11
A|6|12
B|2|11

预期结果

表 A 的 Diaspora_Buyer_Code(Calculated Column) 中应包含以下值

表A

Company_Code  |  Invoice_No | Buyer_Code| Diaspora_Buyer_Code

A|1|001|11
A|6|002|12
B|2|003|11
C|3|001|001
D|5|006|006

【问题讨论】:

  • 你需要一个 join 语句,但 stackoverflow 并不是一个代码编写服务,所以你应该先尝试一些东西,如果它不起作用,请寻求帮助。也请使用编辑器中的代码标签,使您的代码对每个人都更具可读性。
  • 你能发一张你的数据模型的照片吗?这些表是否通过关系连接?

标签: powerbi dax powerbi-desktop


【解决方案1】:

试试这个

Diaspora_Buyer_Code = 
        IF(ISBLANK(CALCULATE(FIRSTNONBLANK('Table B'[Diaspora_Buyer_Code],'Table B'[Diaspora_Buyer_Code]), 
                            FILTER('Table B','Table A'[  Invoice_No ]='Table B'[ Invoice_No]),
                            FILTER('Table B', 'Table B'[Company_Code ]='Table A'[Company_Code  ]))),
            VALUE('Table A'[ Buyer_Code]),
            CALCULATE(FIRSTNONBLANK('Table B'[Diaspora_Buyer_Code],'Table B'[Diaspora_Buyer_Code]), 
                    FILTER('Table B','Table A'[  Invoice_No ]='Table B'[ Invoice_No]),
                    FILTER('Table B', 'Table B'[Company_Code ]='Table A'[Company_Code  ])))

【讨论】:

    【解决方案2】:

    在两个表中添加计算列:

    表 A

     KeyColumn = 'Table A'[Company_Code]&"-"& 'Table A'[Invoice_No]
    

    表 B

    KeyColumn = 'Table B'[Company_Code]&"-"& 'Table B'[Invoice_No]
    

    方法一

    在两个键列之间创建关系。现在预期计算列的公式如下:

    Diaspora_Buyer_Code = 
    VAR RelatedVal = 
        RELATED('Table B'[Diaspora_Buyer_Code])
    
    RETURN 
        IF (
            ISBLANK(RelatedVal),
            'Table A'[Buyer_Code],
            RelatedVal
        )
    

    如果您不想创建关系,则对列使用以下公式:

    Diaspora_Buyer_Code = 
    VAR Lookup = 
        LOOKUPVALUE(
            'Table B'[Diaspora_Buyer_Code], 
            'Table B'[KeyColumn], 
            'Table A'[KeyColumn]
        )
    
    RETURN 
        IF (
            ISBLANK(Lookup),
            'Table A'[Buyer_Code],
            Lookup
        )
    

    两种情况下的输出:

    【讨论】:

    • 您好,感谢您提供的答案,但我有一个场景,我尝试过同样的方法,但遇到了主题错误。 TABLE A:INVOICE_NUMBER BUYER_CODE 651 632 TABLE B FACTORY_NAME INVOICE_NUMBER BUYER_CODE A 651 66 A 651 38 A 632 86 A 632 46 如何查找 TableA.BuyerCode FRO TableB.BuyerCode 我得到的错误是“提供了多个值,其中单个值当我使用查找时,是预期的。
    • @MNPOWER 您是在创建度量还是计算列?如果是度量,请使用 selectedvalue。如果不是这种情况,则可能是因为查找值与多个结果匹配。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多