Перейти к содержанию

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

Информацию о типах данных можно получить в разделе обучения документации Metabase (англ.).

Ограничения

Вытаскивание текста может быть темным искусством, мы вас предупредили.

regexextract не поддерживается в H2 (включая образец базы данных Metabase), SQL Server и SQLite.

Связанные функции

В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение GlarusBI regexextract, с примечаниями о том, как выбрать лучший вариант для вашего случая использования.

Выражения Glarus BI

Другие инструменты

Подстрока

Используйте 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

равно выражению Glarus BI 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=(.*)")

Дополнительная информация