Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы разберем то, как в Power BI или PowerPivot найти какую-то часть текста в составе другого текста. А именно, рассмотрим две функции в DAX, отвечающие за поиск текста: FIND и SEARCH.
Разберем их параметры, свойства, отличие друг от друга, ну и посмотрим примеры формул.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
DAX функция FIND в Power BI и Power Pivot
FIND () — ищет один текст в составе другого текста с учетом регистра букв и выводит номер позиции первого символа найденного текста в составе символов другого текста.
Синтаксис:
FIND ("Текст 1"; "Текст 2"; Номер Позиции; Значение Нет)
Где:
- Текст 1 — символы текста, которые нужно найти. Используются подстановочные шаблоны: ? — один любой символ, * — много любых символов. Если в тексте нужно найти знак вопроса (?) или знак звездочка (*), то перед ними нужно поставить значок тильды ~
- Текст 2 — текст, в котором идет поиск
- Номер Позиции — номер позиции того символа, с которого нужно начать поиск
- Значение Нет — (необязательный параметр) числовое значение или значение BLANK (), которое нужно вывести, если текст не найден
Примеры формул на основе DAX функции FIND.
В Power BI Desktop имеется исходная таблица по товару «Обувь», в которой размещен столбец [Кроссовки] с перечислением брендов кроссовок:
Попробуем в этом столбце при помощи функции FIND найти бренд NIKE и вывести номер позиции первого символа найденного текста, то есть номер позиции символа N. Для этого, создадим в этой таблице второй столбец по следующей формуле:
Поиск NIKE = FIND ("NIKE"; [Кроссовки]; 1; BLANK())
В первом параметре мы прописали тот текст, который мы ищем.
Во втором параметре указали исходный столбец с текстовыми данными, где будет происходить поиск.
В третьем параметре прописали номер позиции символа, с которого начнется поиск в исходном тексте, то есть, в исходном столбце [Кроссовки] поиск начнется с самого первого символа.
В последнем четвертом параметре указали функцию BLANK (), которая выведет пустое значение, если текст не будет найден.
Результатом выполнения этой формулы в Power BI будет создан следующий столбец:
То есть, в первой строке функция FIND нашла искомое выражение и вывела номер позиции первого символа, равный 11. Во всех остальных строках — пусто, так как там искомого текстового выражения «NIKE» — нет и в дело вступил четвертый параметр функции FIND, где размещена функция BLANK, возвращающая пустое значение.
Давайте изменим регистр букв искомого выражения с верхнего на нижний, то есть, так:
Поиск NIKE = FIND («nike»; [Кроссовки]; 1; BLANK())
И посмотрим результат в Power BI:
Как мы видим, FIND не нашла текст «nike», написанное в малом регистре, так как эта функция учитывает регистры текста.
Теперь рассмотрим вторую функцию поиска в языке DAX.
DAX функция SEARCH в Power BI и Power Pivot
SEARCH () — ищет один текст в составе другого текста без учета регистра букв и выводит номер позиции первого символа найденного текста в составе символов другого текста.
Синтаксис:
SEARCH ("Текст 1"; "Текст 2"; Номер Позиции; Значение Нет)
Где:
- Текст 1 — символы текста, которые нужно найти. Используются подстановочные шаблоны: ? — один любой символ, * — много любых символов. Если в тексте нужно найти знак вопроса (?) или знак звездочка (*), то перед ними нужно поставить значок тильды ~
- Текст 2 — текст, в котором идет поиск
- Номер Позиции — номер позиции того символа, с которого нужно начать поиск
- Значение Нет — (необязательный параметр) числовое значение или значение BLANK (), которое нужно вывести, если текст не найден
Пример формулы на основе DAX функции SEARCH.
В качестве примера продолжим рассматривать ситуацию, которую мы разбирали в примере выше.
Напишем формулу поиска текста «NIKE» при помощи функции SEARCH:
Поиск NIKE = SEARCH ("NIKE"; [Кроссовки]; 1; BLANK())
Результат будет таким:
Как мы видим, SEARCH нашла искомый текст и, также, вывела номер позиции его первого символа N, равный 11. Теперь, как и в примере выше, изменим текст, которой нужно найти, а именно изменим его регистр на нижний, то есть так:
Поиск NIKE = SEARCH («nike»; [Кроссовки]; 1; BLANK())
И проверим результат:
А результат уже не тот, как был с функцией FIND. Если FIND в этом случае вывел пустое значение, то SEARCH нашла искомый текст, несмотря на то, что регистр букв не совпадал.
В этом и есть различие между двумя функциями FIND и SEARCH — первая функция учитывает регистр букв, а вторая — не учитывает.
Если требуется возвратить найденный текст, то после того, как рассматриваемые функции вернут номер позиции первого символа, можно воспользоваться текстовой функцией MID, которая выведет найденный текст.
То же самое, если найденный текст Вам нужно заменить, то после того, как FIND или SEARCH вернут номер позиции первого символа, нужно воспользоваться текстовой функцией REPLACE, которая произведет замену найденных символов.
На этом, с разбором DAX функций FIND и SEARCH, позволяющих искать один текст в составе другого в Power BI или Power Pivot, все.
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Все нашла) надо две кавычки поставить!
«»0″»: {
«»name»»:
Добрый день, подскажите а как искать текст который содержит кавычки? Например мне надо найти стартовую позицию фрагмента
«0»: {
«name»:
Но там уже есть кавычки