Мульти перекрестная фильтрация в Vega-Lite - PullRequest
0 голосов
/ 21 января 2019

Я хочу настроить панель мониторинга с тремя перекрестными фильтрами.

Желаемый результат: выбор одного месяца должен отфильтровать выбранный месяц и сохранить фильтр по двум другим измерениям (все типы проектов и владельцы),Если вы выберете один из двух фильтров, вам не понадобятся все элементы, выбранные вручную из третьего фильтра.

Будем весьма благодарны за любые идеи по достижению желаемого результата или дальнейших действий.

Я попытался установить следующее условие «фильтра» на Vega-Lite, но не работает так, как я ожидал.

Vega-Lite:

  "transform": [
                    {
                        "filter": {
                            "selection": {
                                "and": [
                                        "pTypeSelection",
                                        "monthSelection",
                                        "tltSelection"
                                ]
                            }
                        }
                    }
                ]

Начальное состояние

Это панель управления до того, как что-либо будет выбрано.

Выбор одногоМесяц должен фильтроваться всеми типами проектов и владельцами.

Выбор только месяца

Выбор месяцев ничего не показывает, поскольку условие "и" не выполняется.«Или» не делает то, что я хочу (то есть «и» на основе перекрестной фильтрации).

Выбор месяца и типа проекта

Выбор типов проектовничего не показывать, пока ...

Выбор из всех 3

Я выбираю что-то из всех трех фильтров, и в этот момент выполняется условие "и".

Ожидаемые результаты

Так должно быть, если выбран только месяц

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

Vega:

"type": "filter",
"expr": "!(length(data(\"pTypeSelection_store\")) || length(data(\"monthSelection_store\")) || length(data(\"tltSelection_store\"))) || ((vlSelectionTest(\"pTypeSelection_store\", datum)) && (vlSelectionTest(\"monthSelection_store\", datum)) && (vlSelectionTest(\"tltSelection_store\", datum)))"

Изменить: Вот пример с использованием 2 фильтров: пример

...