# Пользовательские выражения [Пользовательские выражения][expression-list] похожи на формулы в программах для работы с электронными таблицами, таких как Excel, Google Sheets и LibreOffice Calc. Это мощные инструменты в редакторе конструктора запросов, которые позволяют вам задавать более сложные вопросы. Вы также можете перейти к [полному списку выражений][expression-list]. ## Пользовательские выражения для создания фильтров, метрик и пользовательских столбцов Чтобы использовать пользовательское выражение, создайте __Пользовательский столбец__ (где пользовательское выражение используется в качестве формулы поля для вычисления значений для нового столбца) или нажмите __Фильтр__ или __Суммировать__ и выберите __Пользовательское выражение__. При использовании построителя запросов вы можете использовать выражения для создания новых: - **Фильтров**. Выражение `= contains([comment], "GlarusBI")` отфильтровывало бы строки, в которых поле `comment` содержало слово "GlarusBI". - **Метрик**. Также известны как сводки или агрегации. `= share([Total] > 50)` вернет процент заказов с общей суммой более 50 долларов. - **Пользовательских столбцов**. Вы можете использовать `= [Subtotal] / [Quantity]`, чтобы создать новый столбец, который вы могли бы назвать «Цена товара». Эта страница охватывает основы выражений. Вы можете просмотреть [полный список выражений][expression-list] в GlarusBI или просмотреть руководство, в котором показано, как можно использовать [пользовательские выражения в редакторе записной книжки][custom-expressions]. ## Типы выражений Существует два основных типа выражений: **агрегации** и **функции**. Ознакомьтесь с [полным списком выражений][expression-list]. ### Агрегации [Агрегации][aggregations] берут значения из нескольких строк для выполнения вычислений, например, для нахождения среднего значения из всех значений в столбце. Функции агрегирования можно использовать только в разделе **Суммировать** редактора записной книжки, так как агрегации используют значения из всех строк для этого столбца. Таким образом, хотя вы могли создать настраиваемый столбец с формулой `[Subtotal] + [Tax]`, вы могли _не_ писать `Sum([Subtotal] + [Tax])`, если только вы не создавали собственное выражение метрики (которое добавило бы сумму всех промежуточных итогов и налогов). ### Функции [Функции][functions], напротив, что-то делают с каждым значением в столбце, например, ищут слово в каждом значении (`contains`), округляют каждое значение до ближайшего целого числа (функция `ceil`) и так далее. ## Базовые математические вычисления Используйте `+`, `-`, `*` (умножить), `/` (разделить) в числовых столбцах, содержащих числовые значения - целые числа, числа с плавающей запятой и дробные числа. Вы можете использовать круглые скобки `(` и `)`, чтобы группировать части вашего выражения. Например, вы можете создать новый столбец, который вычисляет разницу между итогом и промежуточным итогом заказа:`= [Total] - [Subtotal]`. В настоящее время вы не можете выполнять математические операции со столбцами временных меток (мы работаем над добавлением новых функций даты, так что следите за обновлениями). ## Условные операторы `AND`, `OR`, `NOT`, `>`, `>=` (больше или равно), `<`, `<=` (меньше или равно), `=`, `!=` (не равно). Например, вы можете создать фильтр для клиентов из Калифорнии или Вермонта: `= [State] = "CA" OR [State] = "VT"`. ## Ссылки на другие столбцы Вы можете ссылаться на столбцы в текущей таблице или на столбцы, которые связаны отношением внешнего ключа. Имена столбцов должны быть заключены в квадратные скобки, например: `[Name of Column]`. На столбцы в связанных таблицах можно ссылаться следующим образом: `[ConnectedTableName.Column]`. ## Ссылки на сегменты и метрики Вы можете делать ссылки на сохраненные [Сегменты и Метрики](../../data-modeling/segments-and-metrics.md) которые присутствуют в текущей выбранной таблице. Вы пишете их так же, как и столбцы, например: `[Valid User Sessions]`. ## Выражения фильтра и условия Некоторые вещи, которые следует помнить о выражениях фильтра и условных выражениях: - Выражения фильтра отличаются тем, что они должны возвращать логическое значение (что-то, что либо истинно, либо ложно). Для примера вы можете написать `[Subtotal] + [Tax] < 100`. GlarusBI просматривает каждую строку, добавляет ее промежуточный итог и налог, проверяет, больше ли эта сумма 100. Если это так, утверждение оценивается как истинное, и GlarusBI включает строку в результат. Если бы вместо этого вы (неправильно) написали `[Subtotal] + [Tax]`, GlarusBI не знала бы, что делать, поскольку это выражение не оценивается как истинное или ложное. - Вы можете использовать функции внутри условной части агрегатов `Countif` и `Sumif`, например: `countif( round([Subtotal]) > 100 OR floor([Tax]) < 10 )`. ## Работа с датами в выражениях фильтра Если вы хотите работать с датами в выражениях фильтра, даты должны соответствовать формату `"YYY-MM-DD"`, то есть четыре символа для года, два для месяца и два для дня, заключенные в кавычках `"` и разделенных тире `-`. Пример: `between([Created At], "2020-01-01", "2020-03-31") OR [Received At] > "2019-12-25"` Это выражение будет возвращать строки, где `Created At` между 1 января 2020 г. и 31 марта 2020 г. или где `Received At` после 25 декабря 2019 г. ## Список выражений Общий список [выражений][expression-list]. [Использование в редакторе][custom-expressions]. [aggregations]: ./expressions-list.md [custom-expressions]: https://www.metabase.com/learn/questions/custom-expressions [expression-list]: ./expressions-list.md [functions]: ./expressions-list.md