Skip to content

Проверка правил видимости ​

Правила видимости строк и полей ошибаются молча: виджет не сообщает, что данные урезаны, — он просто показывает меньше. Поэтому каждое новое правило проверяется, и проверяется не своими глазами, а глазами того, кому оно адресовано.

Порядок ниже общий для видимости строк и видимости полей; там, где они ведут себя по-разному, это оговорено.

Шаг 1. Посмотрите на свою картину ​

Откройте виджет, построенный на этом датасете, сразу после того, как включили правило.

Что видитеЧто это значит
Поля нет в списке полей датасета и в подсказках фильтраПравило CLS закрыло его для вас — это самый быстрый способ увидеть, что оно включилось
Данные на местеПравило адресовано вам либо не затрагивает эти поля
Виджет опустелПравило не адресовано вам: добавьте себя в адресаты или проверьте условие
Виджет отвечает отказом целикомВиджет где-либо использует поле, закрытое правилом CLS: на полке, в фильтре, в сортировке, в вычисляемом поле или в иерархии
Строк меньше, но появилась строка с пустыми значениямиПравило задано на таблице-справочнике: строки скрыты, суммы — нет, разбор

Шаг 2. Загляните в журнал обращений ​

Журнал обращений показывает итоговый SQL — тот, что ушёл в базу вместе с подставленным правилом. По нему видно, во что превратились USER_NAME() и IN_GROUP() и какое условие получилось на самом деле.

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

Шаг работает для правил видимости строк. У видимости полей смотреть в журнале нечего: закрытое поле просто не попадает в запрос, отдельного условия для него не появляется.

Запросы к извлечённым датасетам в журнал источника не попадают

Датасет в режиме извлечения отвечает из витрины платформы, и до источника запрос не доходит. Проверять по журналу удобно на датасетах в режиме прямого запроса — материализация.

Шаг 3. Посмотрите картину адресата ​

Экрана «посмотреть от имени пользователя» в платформе нет. Есть два пути.

Запросом к API ​

Запрос данных виджета принимает параметр viewAsUserId — ответ приходит с правилами того пользователя, чей номер указан. Понадобятся две вещи: токен — он берётся входом (авторизация в API) — и тело запроса widget-query.json, то есть раскладка виджета: её проще всего взять из ответа GET $API/widget/<номер> и отправить обратно.

bash
curl -s -X POST "$API/widget/<номер виджета>/data?viewAsUserId=<номер пользователя>" \
  -H "Authorization: Bearer $T" -H 'Content-Type: application/json' -d @widget-query.json

Тот же параметр принимает POST $API/dataset/{id}/field-values — список значений фильтра.

Так картину адресата видно, не выходя из своей учётной записи.

Чужим входом ​

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

  1. Заведите две служебные учётные записи в разделе Пользователи и группы и настройте их так, чтобы правило одной было адресовано, а другой — нет. Как именно, зависит от вида правила:

    Вид правилаЧто различать у двух записей
    Список значений, адресован группамчленство в группе: одну включите в неё, вторую нет
    Атрибут пользователязначение атрибута в карточке пользователя: одной задайте «Москва», другой «Казань» либо не задавайте вовсе
    Выражение с IN_GROUPчленство в группе, указанной в условии
    Выражение с USER_NAME()сам логин: условие сравнивает его с конкретным значением

    Атрибуты пользователей заводит администратор платформы — обычному аналитику они недоступны, это стоит учесть заранее.

    Одной записи мало: своя собственная не годится — вы либо в списке и видите всё, либо не в списке и видите урезанную картину, не узнав, что видят остальные.

  2. Войдите под каждой в приватном окне браузера: свой сеанс не потеряется, а два окна удобно держать рядом.

  3. Откройте один и тот же виджет в обоих окнах и сверьте, что различается: набор строк у правил видимости строк, набор колонок — у видимости полей. Исходы у них разные: правило строк оставляет пустой виджет, правило полей отвечает отказом 403, если закрытое поле в этом виджете используется.

  4. После проверки отключите служебные записи, чтобы не копить лишние входы в платформу.

Шаг 4. Сверьте числа ​

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

Именно здесь всплывает главная ловушка видимости строк: правило, заданное на таблице- справочнике, оставляет агрегаты нетронутыми, и строка с пустыми подписями и «лишней» суммой легко принимается за категорию «прочее». Разбор с цифрами — видимость строк.

Что дальше ​