regexextract¶
regexextract использует регулярные выражения (regex) для получения определённой части вашего текста. Регулярные выражения — это шаблоны, используемые для сопоставления последовательностей символов в строках.
regexextract идеально подходит для текста, который практически не имеет структуры, например URL или ответы на опросы в произвольной форме. Если вы работаете со строками в предсказуемых форматах, таких как SKU (идентификаторы товарной позиции), другие идентификаторы или типы кодов, вместо этого используйте более простое выражение подстрока.
Используйте regexextract для создания пользовательских столбцов с более короткими и более читаемыми метками для:
- фильтрации выпадающих меню,
- меток диаграмм,
- параметров для встраивания.
| Синтаксис | Пример |
|---|---|
regexextract(текст, регулярное-выражение) |
regexextract("regexextract", "ex(.*)") |
| Получает определённую часть текста с помощью регулярного выражения. | "extract" |
Поиск и очистка текста¶
Допустим, у вас есть веб-данные с множеством разных 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 |
Вы можете создать настраиваемый столбец Название кампании с выражением:
Здесь шаблон получения текста ^[^?#]+\? соответствует всем допустимым строкам URL (oreilly.com, англ.). Вы можете заменить utm_campaign= любым параметром запроса, который вам нравится. В конце шаблона извлечения текста группа захвата регулярного выражения (developer.mozilla.org, англ.) (.*) получает все символы, которые появляются после параметра запроса utm_campaign=.
Теперь вы можете использовать Название кампании там, где вам нужны чистые метки, например, в выпадающих меню фильтров, диаграммах и параметрах встраивания.
Допустимые типы данных¶
| Тип данных | Работает с regexextract |
|---|---|
| Строка | ✅ |
| Число | ❌ |
| Дата Время | ❌ |
| Условие | ❌ |
| JSON | ❌ |
Информацию о типах данных можно получить в разделе обучения документации Metabase (англ.).
Ограничения¶
Извлечение текста с помощью регулярных выражений требует внимательности и терпения. Легко допустить ошибку и получить неожиданный результат.
regexextract не поддерживается в H2 (включая образец базы данных Sample Database), SQL Server, MongoDB и SQLite. Для поддержки в Druid нужно использовать драйвер Druid-JDBC.
Связанные функции¶
В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение Glarus BI regexextract.
Другие инструменты
Подстрока¶
Используйте substring, если вы хотите найти текст, который имеет согласованный формат (то же количество символов и тот же относительный порядок этих символов).
В примере вы не сможете использовать substring для получения параметра запроса из образца данных URL, потому что пути URL и имена параметров имеют переменную длину.
Но если вы хотите вытащить всё после https://www. и до .com, вы можете сделать это с помощью:
или
SQL¶
Когда вы создаёте запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки (фильтры, сводки и т.д.) в запрос и запускает этот запрос в вашей базе данных, чтобы получить результаты.
Если примеры данных хранятся в базе данных PostgreSQL:
SELECT
url,
SUBSTRING(url, '^[^?#]+\?utm_campaign=(.*)') AS campaign_name
FROM follow_the_white_rabbit
эквивалентное выражение в Glarus BI с regexextract:
Таблицы¶
Если наши примеры данных находятся в электронной таблице, где «URL» находится в столбце A, функция электронной таблицы
использует почти тот же синтаксис, что и выражение Glarus BI:
Python¶
Предполагая, что пример данных находится в структуре данных df:
делает то же самое, что и выражение Glarus BI regexextract: