Поиск…

Область применения: вычисление вычисляемого столбца вычисляемой таблицы Мерывизуального элемента

Возвращает число символов, в которых сначала найдена определенная символьная или текстовая строка, считывающая слева направо. Поиск не учитывает регистр и учитывает акцент.

Синтаксис

DAX
SEARCH(<find_text>, <within_text>[, [<start_num>][, <NotFoundValue>]])  

Параметры

Термин Определение
find_text Текст, который требуется найти.

Можно использовать подстановочные знаки — вопросительный знак (?) и звездочку (*) в find_text. Вопросительный знак соответствует любому одному символу; звездочка соответствует любой последовательности символов. Если вы хотите найти фактический вопросительный знак или звездочку, введите тильду (~) перед символом.
within_text Текст, в котором требуется искать find_text, или столбец, содержащий текст.
start_num (необязательно) Позиция символа в within_text, с которой требуется начать поиск. Если опущено, 1.
NotFoundValue (необязательно, но настоятельно рекомендуется) Значение, которое возвращается в случае, если операции не удалось найти соответствующую подстроку: как правило, это значение 0, –1 или BLANK(). Если не указан, возвращается ошибка.

Возвращаемое значение

Число начальной позиции первой текстовой строки из первого символа второй текстовой строки.

Замечания

  • Функция поиска не учитывает регистр. Поиск "N" находит первое вхождение "N" или "n".

  • Функция поиска учитывает акцент. Поиск "á" найдет первое вхождение "á", но никаких вхождения "a", "à" или прописных версий "A", "Á".

  • Функцию SEARCH можно использовать для определения расположения символа или текстовой строки в другой текстовой строке, а затем использовать функцию MID для возврата текста или использовать функцию REPLACE для изменения текста.

  • Если find_text не удается найти в within_text, формула возвращает ошибку. Это поведение похоже на Excel, которое возвращает #VALUE, если подстрока не найдена. Значения NULL в within_text будут интерпретированы как пустая строка в этом контексте.

  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример

Следующий запрос DAX выполняет поиск позиции первой буквы слова "cycle" в строке, содержащей имя торгового посредника Если позиция не найдена, возвращается пустое значение.

Функция SEARCH не учитывает регистр символов. В этом примере, если "cycle" или "Cycle" используется в аргументе find_text, результаты возвращаются в любом случае. Для поиска с учетом регистра используйте функцию FIND.

Примеры в этой статье можно использовать с примером модели Adventure Works DW 2020 Power BI Desktop. Чтобы получить модель, воспользуйтесь образцом модели DAX.

DAX
EVALUATE
CALCULATETABLE (
    ADDCOLUMNS (
        TOPN ( 10, SUMMARIZE('Reseller', [Reseller], [Business Type])),
        "Position of cycle", SEARCH ( "cycle", 'Reseller'[Reseller], 1, BLANK () )
    ),
    'Reseller'[Business Type] IN { "Specialty Bike Shop", "Value Added Reseller", "Warehouse"}
)

Возвращает

Reseller Business Type Position of cycle
Volume Bike Sellers Склад
Mass Market Bikes Продавец, создающий добавочную стоимость товара
Twin Cycles Продавец, создающий добавочную стоимость товара 6
Rich Department Store Склад
Rental Gallery Специализированный магазин велосипедов
Budget Toy Store Склад
Global Sports Outlet Склад
Online Bike Catalog Склад
Helmets and Cycles Продавец, создающий добавочную стоимость товара 13
Jumbo Bikes Специализированный магазин велосипедов

НАХОДИТЬ
REPLACE
Текстовые функции