Оформление
Проверка правил видимости
Правила видимости строк и полей ошибаются молча: виджет не сообщает, что данные урезаны, — он просто показывает меньше. Поэтому каждое новое правило проверяется, и проверяется не своими глазами, а глазами того, кому оно адресовано.
Порядок ниже общий для видимости строк и видимости полей; там, где они ведут себя по-разному, это оговорено.
Шаг 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 — список значений фильтра.
Так картину адресата видно, не выходя из своей учётной записи.
Чужим входом
Способ дольше, но нагляднее — и для видимости полей он основной: сравнивать нужно две картины сразу.
Заведите две служебные учётные записи в разделе Пользователи и группы и настройте их так, чтобы правило одной было адресовано, а другой — нет. Как именно, зависит от вида правила:
Вид правила Что различать у двух записей Список значений, адресован группам членство в группе: одну включите в неё, вторую нет Атрибут пользователя значение атрибута в карточке пользователя: одной задайте «Москва», другой «Казань» либо не задавайте вовсе Выражение с IN_GROUPчленство в группе, указанной в условии Выражение с USER_NAME()сам логин: условие сравнивает его с конкретным значением Атрибуты пользователей заводит администратор платформы — обычному аналитику они недоступны, это стоит учесть заранее.
Одной записи мало: своя собственная не годится — вы либо в списке и видите всё, либо не в списке и видите урезанную картину, не узнав, что видят остальные.
Войдите под каждой в приватном окне браузера: свой сеанс не потеряется, а два окна удобно держать рядом.
Откройте один и тот же виджет в обоих окнах и сверьте, что различается: набор строк у правил видимости строк, набор колонок — у видимости полей. Исходы у них разные: правило строк оставляет пустой виджет, правило полей отвечает отказом
403, если закрытое поле в этом виджете используется.После проверки отключите служебные записи, чтобы не копить лишние входы в платформу.
Шаг 4. Сверьте числа
Последний шаг — арифметика: сумма, которую видит адресат, плюс то, что от него закрыто, должны давать полный итог.
Именно здесь всплывает главная ловушка видимости строк: правило, заданное на таблице- справочнике, оставляет агрегаты нетронутыми, и строка с пустыми подписями и «лишней» суммой легко принимается за категорию «прочее». Разбор с цифрами — видимость строк.
Что дальше
- Видимость строк (RLS) — какие строки попадут в выборку.
- Видимость полей (CLS) — какие колонки останутся видны.
- Журнал обращений — где смотреть итоговый SQL.