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

substring

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

Например, substring должна хорошо работать с такими строками, как номера SKU (идентификаторы товарной позиции), коды ISO и стандартизированные адреса электронной почты.

Синтаксис Пример
substring(текст, начальная-позиция, длина) substring("user_id@email.com", 1, 7)
Извлекает часть текста с заданной начальной позиции на указанную длину (количество символов). "user_id"

Параметры

В примере выше:

  • первый символ в вашей строке находится в позиции 1;
  • длина вашей подстроки передана и всегда должна быть положительным числом.

Получение подстроки слева направо

ID миссии Агент
19951113006 006
20061114007 007
19640917008 008

Агент — это настраиваемый столбец с выражением:

substring([Mission ID], 9, 3)

Получение подстроки справа налево

Вместо числа для указания начальной позиции вы можете использовать формулу:

1 + length([column]) - position_from_right

где position_from_right — это количество символов, которые вы хотите считать справа налево.

ID Миссии Агент
19951113006 006
20061114007 007
19640917008 008

Здесь Агент — это настраиваемый столбец с выражением:

substring([Mission ID], (1 + length([Mission ID]) - 3), 3)

Допустимые типы данных

Тип данных Работает с substring
Строка
Число
Дата Время
Условие
JSON

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

Ограничения

substring извлекает текст, подсчитывая фиксированное количество символов. Если вам нужно извлечь текст на основе более сложной логики, попробуйте regexextract.

А если вам нужно только убрать лишние пробелы вокруг текста, вы можете использовать trim, ltrim или выражения rtrim.

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

В этом разделе рассматриваются функции и формулы, которые работают так же, как выражение substring Glarus BI.

Выражения Glarus BI

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

regexextract

Используйте regexextract, если вам нужно извлечь текст на основе более сложных и детальных правил. Например, вы можете получить идентификатор агента с помощью шаблона регулярного выражения, который находит последнее вхождение «00» (и всё после него):

regexextract([Mission ID], ".+(00.+)$")

результат будет тот же, что и в более простом и менее гибком решении с substring:

substring([Mission ID], 9, 3)

SQL

Когда вы создаёте запрос с помощью конструктора запросов, Glarus BI преобразует ваши графические настройки (фильтры, сводки и т.д.) в запрос и запускает этот запрос в вашей базе данных, чтобы результат.

Если примеры данных хранятся в базе данных PostgreSQL:

SELECT
    mission_id,
    SUBSTRING(mission_id, 9, 3) AS agent
FROM
    this_message_will_self_destruct;

эквивалентно выражению в Glarus BI с использованием substring:

substring([Mission ID], 9, 3)

Таблицы

Если примеры данных находятся в электронной таблице, где «ID миссии» находится в столбце A,

=mid(A2,9,3)

эквивалентно выражению в Glarus BI с использованием substring:

substring([Mission ID], 9, 3)

Python

Предполагая, что образец данных находится в структуре данных df:

df['Agent'] = df['Mission ID'].str.slice(8, 11)

эквивалентно выражению в Glarus BI с использованием substring:

substring([Mission ID], 9, 3)

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