Преобразование resolvefilter

Преобразование resolvefilter использует маску, созданную crossfilter, чтобы эффективно формировать отфильтрованные потоки данных. Один экземпляр crossfilter может обслуживать несколько диаграмм; для каждой из них отдельный resolvefilter создаёт собственный поток.

После resolvefilter всегда должно следовать преобразование, использующее его результат, например aggregate. Чтобы просто собрать отфильтрованные объекты, добавьте после него collect.

Параметры преобразования

Свойство Тип Описание
filter Signal Обязательно. Ссылка на сигнал маски, созданной crossfilter.
ignore Number Обязательно. Битовая маска полей crossfilter, которые нужно игнорировать. Каждый бит соответствует полю и запросу в массивах fields и query. Если бит установлен, соответствующее условие не учитывается; все остальные условия должны выполняться, чтобы объект попал в выходной поток.

Использование

Пример фильтрует поля задержки delay, времени time и расстояния distance в данных об авиарейсах. crossfilter задаёт фильтры по диапазонам из сигналов. Три производных набора данных применяют resolvefilter, каждый раз игнорируя одно поле. Например, "filterTimeDistance" фильтрует по time и distance, не учитывая запрос по delay.

{
  "signals": [
    { "name": "delayRange", "value": [-60, 180] },
    { "name": "timeRange", "value": [0, 24] },
    { "name": "distanceRange", "value": [0, 2400] },
  ],
  "data": [
    {
      "name": "flights",
      "url": "data/flights-200k.json",
      "transform": [
        {
          "type": "crossfilter",
          "signal": "xfilter",
          "fields": ["delay", "time", "distance"],
          "query": [
            {"signal": "delayRange"},
            {"signal": "timeRange"},
            {"signal": "distanceRange"}
          ]
        }
      ]
    },
    {
      "name": "filterTimeDistance",
      "source": "flights",
      "transform": [
        {
          "type": "resolvefilter",
          "filter": {"signal": "xfilter"},
          "ignore": 1,

        },
        ...
      ]
    },
    {
      "name": "filterDelayDistance",
      "source": "flights",
      "transform": [
        {
          "type": "resolvefilter",
          "filter": {"signal": "xfilter"},
          "ignore": 2
        },
        ...
      ]
    },
    {
      "name": "filterDelayTime",
      "source": "flights",
      "transform": [
        {
          "type": "resolvefilter",
          "filter": {"signal": "xfilter"},
          "ignore": 4
        },
        ...
      ]
    }
  ]
}