首先,我编写了以下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]列
我收到以下错误消息:“较早/最早的第一个参数在较早的行上下文中不是有效的列引用”。
据我所知,您创建额外表仅是为了识别客户是否有多个条目。如果是这种情况,一个更简单的解决方案是在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