Regexextract¶
regexextract
использует регулярные выражения (regex) для получения определенной части вашего текста.
regexextract
идеально подходит для текста, который практически не имеет структуры, например URL-адреса или ответы на опросы в произвольной форме. Если вы работаете со строками в предсказуемых форматах, таких как номера SKU, идентификаторы или другие типы кодов, вместо этого используйте более простое выражение подстрока.
Используйте regexextract
для создания пользовательских столбцов с более короткими и более читаемыми метками для таких вещей, как:
фильтровать выпадающие меню,
метки диаграммы, или
параметры вложения.
| Синтаксис | Пример |
|—————————————————————|—————————————–|
| regexextract(text, regular_expression)
| regexextract("regexextract", "ex(.*)")
|
| Получает определенную часть текста с помощью регулярного выражения.| “вытянуть” |
Поиск и очистка текста¶
Допустим, у вас есть веб-данные с множеством разных URL-адресов, и вы хотите сопоставить каждый URL-адрес с более коротким и более читаемым названием кампании.
| URL | Название кампании | |——————————————————-|—————| | https://www.metabase.com/docs/?utm_campaign=alice | alice | | https://www.metabase.com/learn/?utm_campaign=neo | neo | | https://www.metabase.com/glossary/?utm_campaign=candy | candy |
Вы можете создать настраиваемый столбец Название кампании с выражением:
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
Здесь шаблон вытаскивания текста ^[^?#]+\?
соответствует всем допустимым строкам URL. Вы можете заменить utm_campaign=
любым параметром запроса, который вам нравится. В конце шаблона вытаскивания текстагруппа захвата (.*)
получает все символы, которые появляются после параметра запроса utm_campaign=
.
Теперь вы можете использовать Название кампании там, где вам нужны чистые метки, например, в выпадающих меню фильтров, диаграммах и параметрах встраивания.
Допустимые типы данных¶
| Тип данных | Работает с regexextract
|
| ———————– | ——————– |
| Строка | ✅ |
| Число | ❌ |
| Дата Время | ❌ |
| Условие | ❌ |
| JSON | ❌ |
Ограничения¶
Вытаскивание текста может быть темным искусством, мы вас предупредили.
regexextract
не поддерживается в H2 (включая образец базы данных Metabase), SQL Server и SQLite.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение GlarusBI regexextract
, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.
Другие инструменты
Подстрока¶
Используйте substring, если вы хотите найти текст, который имеет согласованный формат (то же количество символов и тот же относительный порядок этих символов).
В примере вы не сможете использовать substring
для получения параметра запроса из образца данных URL, потому что пути URL и имена параметров имеют переменную длину.
Но если вы хотите вытащить все после https://www.
и до .com
, вы можете сделать это с помощью:
substring([URL], 13, 8)
or
regexextract([URL], "^(?:https?:\/\/)?(?:[^@\/\n]+@)?(?:www\.)?([^:\/.\n]+)")
SQL¶
Когда вы задаете вопрос с помощью редактора блокнота, GlarusBI преобразует ваши графические настройки запроса (фильтры, сводки и т. д.) в запрос и запускает этот запрос. против вашей базы данных, чтобы получить ваши результаты.
Если наши примеры данных хранятся в базе данных PostgreSQL:
SELECT
url,
SUBSTRING(url, '^[^?#]+\?utm_campaign=(.*)') AS campaign_name
FROM follow_the_white_rabbit
равно выражению GlarusBI regexextract
:
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
Таблицы¶
Если наши примеры данных находятся в электронной таблице, где «URL» находится в столбце A, функция электронной таблицы
regexextract(A2, "^[^?#]+\?utm_campaign=(.*)")
использует почти тот же синтаксис, что и выражение GlarusBI:
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")
Python¶
Предполагая, что пример данных находится в столбце фрейма данных с именем df
,
df['Campaign Name'] = df['URL'].str.extract(r'^[^?#]+\?utm_campaign=(.*)')
делает то же самое, что и выражение GlarusBI regexextract
:
regexextract([URL], "^[^?#]+\?utm_campaign=(.*)")