#powerbi
#powerbi
Вопрос:
Я ищу способ проверить, находится ли какая-либо часть одной строки в другой строке. Каждая строка помещается в отдельный столбец и содержит набор случайных кодов. Пожалуйста, ознакомьтесь с примерами этого ниже.
Метод должен проверить, присутствует ли какой-либо из кодов в Исходном столбце Неисправности в строке текущего столбца неисправности. Как видно из примера, каждый код создается с DI и следующими 4 цифрами. Каждый необработанный код может содержать случайное число этих кодов. Прямо сейчас я могу проверить, присутствует ли вся строка из исходных столбцов ошибок в текущих столбцах ошибок, но мне нужно решение, которое могло бы проверять каждый отдельный код из исходной строки столбца ошибок в текущей строке столбца ошибок. если есть хотя бы одно совпадение, оно должно вернуть » да » в новом столбце
Ответ №1:
Вот пример того, как мы можем получить это с помощью DAX:
CheckIfTrue = VAR SplitByCharacter = " " VAR Org = SELECTEDVALUE(code[Orginal Faults]) VAR CurrentF = SELECTEDVALUE(code[Current Faults] ) VAR Table0 = SELECTCOLUMNS( ADDCOLUMNS ( GENERATE ( ROW ( "Text", Org), VAR TokenCount = PATHLENGTH ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ) ) RETURN GENERATESERIES ( 1, MAX(TokenCount,1) ) ), "Word", PATHITEM ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ), [Value] ) ), "Word",[Word]) VAR Table1 = SELECTCOLUMNS( ADDCOLUMNS ( GENERATE ( ROW ( "Text", CurrentF), VAR TokenCount = PATHLENGTH ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ) ) RETURN GENERATESERIES ( 1, MAX(TokenCount,1) ) ), "Word", PATHITEM ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ), [Value] ) ), "Word",[Word]) RETURN COUNTROWS(INTERSECT(Table0, Table1)) 0 // Org
Дополнительный пример:
ShowError = VAR SplitByCharacter = " " VAR Org = SELECTEDVALUE(code[Orginal Faults]) VAR CurrentF = SELECTEDVALUE(code[Current Faults] ) VAR Table0 = SELECTCOLUMNS( ADDCOLUMNS ( GENERATE ( ROW ( "Text", Org), VAR TokenCount = PATHLENGTH ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ) ) RETURN GENERATESERIES ( 1, MAX(TokenCount,1) ) ), "Word", PATHITEM ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ), [Value] ) ), "Word",[Word]) VAR Table1 = SELECTCOLUMNS( ADDCOLUMNS ( GENERATE ( ROW ( "Text", CurrentF), VAR TokenCount = PATHLENGTH ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ) ) RETURN GENERATESERIES ( 1, MAX(TokenCount,1) ) ), "Word", PATHITEM ( SUBSTITUTE ( [Text], SplitByCharacter, "|" ), [Value] ) ), "Word",[Word]) RETURN CONCATENATEX(INTERSECT(Table0, Table1),[Word],";") // Org
Комментарии:
1. Это творит чудеса, делает работу на месте, большое спасибо за это.
2. Есть ли способ на самом деле вернуть повторяющиеся значения?
3. это зависит от того, что вы подразумеваете под «возвращением повторяющихся значений», можете ли вы привести пример желаемого результата?
4. Мои извинения, в этом случае возвращаемые соответствующие значения были бы более точными. В принципе, можно ли создать дополнительный столбец, который возвращал бы соответствующие значения из текущего и исходного столбцов ошибок? Взяв, например, вашу таблицу сверху, она вернет D43 для строки 2 и D99 для строки 3.
5. Я обновил свой ответ. Проверьте этот дополнительный пример;