Предикаты

Предикат проверяет запись данных и возвращает true или false. Он применяется в преобразовании фильтрации и в свойстве test условного кодирования. В Vega-Lite предикат можно задать четырьмя способами:

  1. Строкой выражения Vega, обращаясь к текущей записи через datum. Например, datum.b2 > 60 проверяет, больше ли значение поля b2 числа 60.
  2. Предикатом поля: equal, lt, lte, gt, gte, range, oneOf или valid.
  3. Предикатом параметра, проверяющим принадлежность записи выбранному набору.
  4. Логической комбинацией перечисленных условий.

Предикат поля

Предикат поля содержит имя проверяемого поля в field и один оператор сравнения. Значение сравнения может быть строкой, числом, логическим значением или объектом даты и времени. Свойство timeUnit позволяет перед сравнением выделить из временного поля нужную единицу времени.

Свойство Тип Описание
field FieldName Обязательное. Проверяемое поле данных.
timeUnit TimeUnit, BinnedTimeUnit, TimeUnitParams Единица времени для проверяемого поля.

Равенство — equal

Свойство Тип Описание
equal string, number, boolean, DateTime, ExprRef Обязательное. Значение, которому должно быть равно поле.

Проверяет, равно ли значение указанному. Например, этот предикат оставит записи с красным цветом автомобиля:

{"field": "car_color", "equal": "red"}

Меньше — lt

Свойство Тип Описание
lt string, number, DateTime, ExprRef Обязательное. Значение, которого поле должно быть меньше.

Проверяет, меньше ли значение заданного. Например, высота меньше 180:

{"field": "height", "lt": 180}

Меньше или равно — lte

Свойство Тип Описание
lte string, number, DateTime, ExprRef Обязательное. Значение, которого поле должно быть меньше или которому оно должно быть равно.

Проверяет, меньше ли значение заданного или равно ему. Здесь сравниваются только годы, не полные даты:

{"timeUnit": "year", "field": "Year", "lte": "2000"}

Больше — gt

Свойство Тип Описание
gt string, number, DateTime, ExprRef Обязательное. Значение, которого поле должно быть больше.

Проверяет, больше ли значение заданного. Строки сравниваются по правилам JavaScript с учётом регистра: "A" < "B", но и "B" < "a". Например:

{"field": "state", "gt": "Arizona"}

Больше или равно — gte

Свойство Тип Описание
gte string, number, DateTime, ExprRef Обязательное. Значение, которого поле должно быть больше или которому оно должно быть равно.

Например, высота не меньше нуля:

{"field": "height", "gte": 0}

Диапазон — range

Свойство Тип Описание
range (number, DateTime, null, ExprRef)[], ExprRef Обязательное. Массив из двух значений — включённых нижней и верхней границ, между которыми должно находиться значение поля записи для её включения в отфильтрованные данные.

Примеры

  • {"field": "x", "range": [0, 5]} проверяет, что 0 ≤ x ≤ 5.
  • {"timeUnit": "year", "field": "date", "range": [2006, 2008]} проверяет, что значение date находится между 2006 и 2008 годами.
  • {"field": "date", "range": [{"year": 2006, "month": "jan", "date": 1}, {"year": 2008, "month": "feb", "date": 20}]} проверяет, что дата находится между 1 января 2006 года и 20 февраля 2008 года.

Одно из значений — oneOf

Свойство Тип Описание
oneOf string[], number[], boolean[], DateTime[] Обязательное. Набор значений, которому должно принадлежать значение поля записи для её включения в отфильтрованные данные.

Например, {"field": "car_color", "oneOf": ["red", "yellow"]} проверяет, что цвет автомобиля — "red" или "yellow".

Корректное значение — valid

Свойство Тип Описание
valid boolean Обязательное. При true значение поля должно быть корректным: не null и не NaN.

Например, {"field": "car_color", "valid": true} проверяет, что значение поля корректно: не равно null и не является NaN.

Предикат параметра

Предикат параметра содержит имя выделения в param. Он проверяет, принадлежит ли запись текущему выделению. Свойство empty управляет поведением до выбора значений.

Свойство Тип Описание
param ParameterName Обязательное. Имя параметра, используемого для фильтрации.
empty boolean Для параметров выделения предикат пустого выделения по умолчанию возвращает true. Задайте empty: false, чтобы переопределить это поведение.

В примере {"param": "brush"} оставляет записи, попавшие в область выделения brush. По умолчанию пустое выделение содержит все значения, поэтому нижнее представление вначале заполнено целиком. Это поведение можно изменить необязательным свойством empty:

При динамической фильтрации области определения шкал могут меняться, из-за чего подписи и заголовки смещаются. Чтобы этого избежать, задайте minExtent для соответствующей оси, например {"axis": {"minExtent": 30}}.

Логическая комбинация предикатов

Условия можно объединять операторами and, or и not.

Примеры

  • {"and": [{"field": "height", "gt": 0}, {"field": "height", "lt": 180}]} проверяет, что 0 < height < 180.
  • {"not": {"field": "x", "range": [0, 5]}} проверяет, что x не входит в диапазон [0, 5] с включёнными границами.