如果另一个表中存在当前列值,则获得1/0

问题描述 投票:0回答:1

首先,我编写了以下Dax表达式以获取包含多于一笔贷款的客户列表的表。

VAR table_filter =
FILTER (
    SUMMARIZE (
        SUMMARIZE (
            FACT_ACCOUNT;
            FACT_ACCOUNT[ID_LOAN_INFORMATION];
            FACT_ACCOUNT[ID_COSTUMER]
        );
        FACT_ACCOUNT[ID_COSTUMER];
        "abc"; COUNTROWS (
            SUMMARIZE (
                FACT_ACCOUNT;
                FACT_ACCOUNT[ID_LOAN_INFORMATION];
                FACT_ACCOUNT[ID_COSTUMER]
            )
        )
    );
    [abc] > 1
)

下面的图片表示以前的Dax表达式table_filter的结果。

The result of table_filter variable

接下来,我编写了此表达式以从上表中获得包含ID_COSTUMER列表的列

VAR column_filter =
SELECTCOLUMNS ( table_filter; "ClientYes"; FACT_ACCOUNT[ID_COSTUMER] )

最后,如果我在column_filter中找到当前ID_COSTUMER的值,则我在FACT_ACCOUNT表中创建了一个计算列,我将1否则为0。

RETURN
IF (
    CALCULATE (
        COUNTROWS ( FACT_ACCOUNT );
        FILTER (
            FACT_ACCOUNT;
            FACT_ACCOUNT[ID_COSTUMER] = EARLIER ( column_filter )
        )
    ) > 0;
    1;
    0
)

问题是column_filter的结果不是列我需要一个解决方案来从第一个过滤表的结果中返回FACT_ACCOUNT [ID_COSTUMER]列

我收到以下错误消息:“较早/最早的第一个参数在较早的行上下文中不是有效的列引用”。

powerbi ssas dax msbi
1个回答
0
投票

据我所知,您创建额外表仅是为了识别客户是否有多个条目。如果是这种情况,一个更简单的解决方案是在FACT-Account表上直接添加一列:

IsDouble = 
var custID = FACT_ACCOUNT[ID_COSTUMER]
var rowCount = CALCULATE(COUNTROWS(FACT_ACCOUNT); 
    FILTER(FACT_ACCOUNT; FACT_ACCOUNT[ID_COSTUMER] = custID))
return IF (rowCount > 1; 1; 0)

如果您仍然需要基于两个表执行此操作,则需要确保表之间存在关联,并且相同的解决方案成立。

如果表之间没有空间,则可以使用函数:LOOKUPVALUE

© www.soinside.com 2019 - 2024. All rights reserved.