Получить 1/0, если текущее значение столбца существует в другой таблице

Прежде всего, я написал следующее выражение Дакса, чтобы получить таблицу со списком клиентов, получивших более одного кредита.

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.

Результат переменной table_filter

Далее я написал это выражение, чтобы получить столбец со списком ID_COSTUMER из предыдущей таблицы.

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

Наконец, я использовал это выражение для создания вычисляемого столбца в таблице FACT_ACCOUNT, если я находил значение текущего ID_COSTUMER в column_filter, я ставил 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] из результата первой отфильтрованной таблицы.

Я получил следующую ошибку: «первый аргумент более раннего/самого раннего не является допустимой ссылкой на столбец в более раннем контексте строки».


person FATNASSI Salmen    schedule 04.06.2020    source источник
comment
Я думаю, проблема в том, что функция SELECTCOLUMNS возвращает таблицу, а не столбец. Будет ли это работать, если вы измените часть EARLIER на эту: EARLIER (column_filter[ClientYes])?   -  person Gigga    schedule 04.06.2020
comment
Привет @Gigga, спасибо за ваш ответ, я попробовал, но получил следующую ошибку: не могу найти таблицу 'column_filter'   -  person FATNASSI Salmen    schedule 05.06.2020


Ответы (1)


Насколько я понимаю, вы создаете дополнительную таблицу с единственной целью, чтобы определить, есть ли у клиента более 1 записи. В этом случае более простое решение — добавить столбец непосредственно в таблицу 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)

Если вам все еще нужно сделать это на основе двух таблиц, вам необходимо убедиться, что между таблицами существует связь и выполняется одно и то же решение.

Если у вас нет отношения между таблицами, вы можете использовать функцию: ПРОСМОТРЗНАЧЕНИЕ

person Aldert    schedule 05.06.2020
comment
Мне нужно использовать фильтр, который я создаю в первом выражении Dax, потому что моя таблица фактов содержит прогресс кредитов клиентов по дням. Итак, каждый день я загружаю таблицу фактов с одним и тем же Costumer_id и Loan_id, поэтому я создал фильтр в таблице фактов, чтобы сначала получить группу отдельных кредитов и клиентов, а затем я отфильтровал их по клиентам, которые получили больше, чем один кредит. В противном случае я ищу, как вернуть столбец ID_COSTUMER из отфильтрованной таблицы, чтобы я мог использовать его в LOOKUPVALUE. - person FATNASSI Salmen; 05.06.2020
comment
Не могли бы вы включить в свой вопрос таблицы, которые у вас есть, соответствующие столбцы и некоторые данные. Если это сложно понять только по тексту и коду. - person Aldert; 08.06.2020
comment
Привет @Aldert. На самом деле, я наконец нашел решение этой проблемы, я получил результат, который хотел, в новом вычисляемом столбце. Но теперь проблема в том, что когда я попытался развернуть модель, я получил следующую ОШИБКУ, неспособную развернуть метаданные. причина: неверный синтаксис для 'Filter_Table'. Я разместил новый вопрос в stackoverflow и включил его в результат выражения, которое я создал, вы можете найти дополнительную информацию по следующему URL-адресу ссылка. - person FATNASSI Salmen; 08.06.2020
comment
Буду признателен, если вы поможете мне ее решить. - person FATNASSI Salmen; 08.06.2020