setKoobFilters и period в управляющем дэше

Если в управляющий дэш вывести поле типа period, то визуализация у него будет такого вида:

Календарь очень мощный и позволяет выбирать не отлько дни, но и недели, кварталы, месяцы и годы.

На самом дэшборде есть графики, построенные в разрезе дней, недель и месяцев. Все указанные графики настроены с использованием setKoobFilters, чтобы пользователь мог интерактивно фильтровать содержимое дэшборда. В данный момент для таких фильтраций в упраляющем дэше мне необходимо держать поля “Дата”, “Неделя” и “Месяц”.
Вопросы:

  1. Возможна ли фильтрация куба через setKoobFilters, если фильтруемого поля нет в управляющем дэше на текущем дэшборде?
  2. Можно ли каким-то образом передавать неделю или месяц внутрь фильтра по полю period? Исхожу из того, что раз календарь умеет работать как с днями, так и неделями, кварталами и годами, то, веротяно, в него как-то можно вернуть назад эти же диапазоны для фильтрации данных дэшборда.
  3. Если для поля типа period прописать иерархию внутри управляющего дэша, можно ли будет этим полем производить фильтрацию не только по дате, но и по другим категориям, описаным в иерархии?

Добрый день!

1 Да, возможно, для того, чтобы выбранный фильтр действовал на весь дэшборд - нужно в каждый дэш проставить

   filters: {
      filter_name: true,
      filter_name2: true,
    },

2 Исходя из первого пункта ответа - вам на самом деле вообще не обязательно держать лишние параметры в УД, достаточно проставленных параметров filters:true, чтобы “накликанный” вариант фильтровал все интересующие вас дэши

3 В общем случае, setKoobFilters просто берет параметры тех данных, на которые происходит клик, то есть если вы напишете конструкцию так, что при различных вариациях у вас будут получаться данные, описанные в конструкции - при клике он будет их пробрасывать в фильтры

.
2. Если какого-то элемента нет на управляющем дэше, то пользователь не сможет увидеть, что по нему отфильтрованы элементы дэшборда. И, соответственно, не сможет точечно выполнить сброс фильтра. С помощью setKoobFilters можно задавать точечные фильтры; с помощью управляющего дэша можно задавать произвольные фильтры и сбрасывать все фильтры. Есть ли ещё какие-то механизмы, которые позволяют управлять фильтрациями? Например, точечно сбросить установленный фильтр без управляющего дэша?
3. Календарь появляется для типа данных period, т.е. каждая строка данных содержит дату (например, yyyy-MM-dd). При выставлении периода из, например, недель, генерируется условие следующего вида:

WHERE (some_field BETWEEN '2022-01-03' AND '2022-01-09')

Начальную и конечную дату не стал менять для чуть большей наглядности. Т.е. недели как таковые не фигурируют, а берётся первое число первой недели и последнее число последней недели. Например, пользователь кликает на какую-либо неделю. Можно ли с помощью setKoobFilters преобразовать выбор недели в условие, эквивалентное between, как указано выше? Если да, то как?

Например, точечно сбросить установленный фильтр без управляющего дэша?

Для этого, вы можете создать дэш типа лейбл и прописать ему onClickDataPoint примерно вот так:

{
  frame: {
    h: 1,
    w: 1,
    x: 6,
    y: 5,
  },
  display: {
    color: 'rgba(240,80,69,1)',
    bgColor: 'rgba(74,182,232,1)',
    fontSize: 15,
    customValue: 'Сброс категории',
    headerStyle: {
      color: 'rgba(74,182,232,1)',
      background: 'rgba(74,182,232,1)',
    },
  },
  options: [
    'DisableLoadData',
    'FillBackground',
    '!TopBar',
  ],
  dataSource: {
    koob: 'BeerDataSource.beerKoob',
    style: {},
    xAxis: 'category',
    yAxis: 'measures',
    measures: [
      'count(volume):count_volume',
    ],
    dimensions: [
      'category',
    ],
  },
  onClickDataPoint: "lpe:setKoobFilters('BeerDataSource.beerKoob', 'category', ['!=', 'null'])",
  view_class: '111.label',
  title: '',
}

Визуально будет выглядеть примерно так:

В чем смысл всей конструкции:

В будете передавать в фильтр по клику все, что не равно null, тем самым, формально, передавая все, что есть и таким образом сбросите конкретный фильтр

Важно №1: вместо null может быть написано все, что угодно, главное, чтобы это не встречалось в данных, то есть условно - это любая string в которой вы уверены, что не встретите ее ни при каких условиях

Важно №2: все дэши, которые будут слушать этот фильтр сбросятся, настроить локально в рамках одного дэша фильтры пока невозможно

Можно ли с помощью setKoobFilters преобразовать выбор недели в условие, эквивалентное between, как указано выше?

К сожалению сейчас такой возможности нет. В теории, вы можете прописать конструкцию вида

onClickDataPoint: "lpe:setKoobFilters('cube', 'dim', ['between', dim, dim+1])"

Но это сработает например с годами, потому что сложить ‘2008’ + 1 - JS сможет их сложить и привести к ответу 2009, но если тип данных period и прибавить, например +7 - получится что-то типа:

["between", "2019-03-10", "2019-03-107"]

Большое спасибо за подробный с ответ с наглядными примерами!
Попробовал предложение с label - работает как описано.