Права на строки в FineBI: на каждую таблицу данных или на общее измерение
Выбор возникает, как только в отчёте две таблицы данных и два уровня доступа. Пример из ветки на китайском форуме FanRuan. Отчёт собран из двух не связанных таблиц: A и B. Руководителям доступ нужен по региону, их подчинённым по району, и руководитель видит строки всех своих районов. Права лежат в двух таблицах: C (учётная запись и регион) и D (учётная запись и район). Связать C и D с каждой из A и B модель не даёт, и автор вопроса готов резать отчёт на два.
Резать не нужно. Модель упёрлась в ограничение: по ответу в ветке, FineBI не даёт нескольким таблицам фактов (A, B) делить несколько таблиц измерений (C, D).
Путь первый: модель из четырёх таблиц. На этом примере:
- пользователи: учётные записи;
- права: C и D, собранные по учётной записи в одну таблицу (учётная запись, регион, район);
- измерение: справочник регионов и районов;
- данные: A и B.
Связи две, обе 1:N: пользователи - права по учётной записи, измерение - A и B. FineBI берёт имя вошедшего, находит его строки в таблице прав, право на строки проверяет измерение, и уже оно фильтрует A и B. Руководителю в таблице прав просто прописаны все его районы. Появится третий уровень - добавляется ещё пара «измерение + права», пересечение FineBI посчитает сам. Если общего поля для слияния нет, в ветке предлагают crossjoin, но он даёт все сочетания строк: после него проверьте, что ни одна учётная запись не получила чужих значений. Сливать A с B в ветке не советуют: данные не пересекаются, будет много пустот.
Путь второй: права на строки на каждую таблицу отдельно, A по региону из C, B по району из D, без общей модели.
Как отличить, какой ваш. Два уровня, которые не будут меняться - хватит второго. Уровни прибавляются - окупится первый, иначе каждое новое правило придётся повторять на A, на B и на всём, что добавится. Граница общая: если таблица с полем вошедшего пользователя и таблица, на которую ставят право, берутся из двух разных баз в режиме прямого подключения, права на строки не настроятся. Проверьте это в своей поставке до проектирования.
А как устроено у вас? Ответьте в опросе под постом, итоги покажем в четверг в дайджесте.
Ветка на форуме: https://bbs.fanruan.com/wenda/question/231882.html
#FineBI #FanRuan #BI #права #моделиданных #безопасность
Выбор возникает, как только в отчёте две таблицы данных и два уровня доступа. Пример из ветки на китайском форуме FanRuan. Отчёт собран из двух не связанных таблиц: A и B. Руководителям доступ нужен по региону, их подчинённым по району, и руководитель видит строки всех своих районов. Права лежат в двух таблицах: C (учётная запись и регион) и D (учётная запись и район). Связать C и D с каждой из A и B модель не даёт, и автор вопроса готов резать отчёт на два.
Резать не нужно. Модель упёрлась в ограничение: по ответу в ветке, FineBI не даёт нескольким таблицам фактов (A, B) делить несколько таблиц измерений (C, D).
Путь первый: модель из четырёх таблиц. На этом примере:
- пользователи: учётные записи;
- права: C и D, собранные по учётной записи в одну таблицу (учётная запись, регион, район);
- измерение: справочник регионов и районов;
- данные: A и B.
Связи две, обе 1:N: пользователи - права по учётной записи, измерение - A и B. FineBI берёт имя вошедшего, находит его строки в таблице прав, право на строки проверяет измерение, и уже оно фильтрует A и B. Руководителю в таблице прав просто прописаны все его районы. Появится третий уровень - добавляется ещё пара «измерение + права», пересечение FineBI посчитает сам. Если общего поля для слияния нет, в ветке предлагают crossjoin, но он даёт все сочетания строк: после него проверьте, что ни одна учётная запись не получила чужих значений. Сливать A с B в ветке не советуют: данные не пересекаются, будет много пустот.
Путь второй: права на строки на каждую таблицу отдельно, A по региону из C, B по району из D, без общей модели.
Как отличить, какой ваш. Два уровня, которые не будут меняться - хватит второго. Уровни прибавляются - окупится первый, иначе каждое новое правило придётся повторять на A, на B и на всём, что добавится. Граница общая: если таблица с полем вошедшего пользователя и таблица, на которую ставят право, берутся из двух разных баз в режиме прямого подключения, права на строки не настроятся. Проверьте это в своей поставке до проектирования.
А как устроено у вас? Ответьте в опросе под постом, итоги покажем в четверг в дайджесте.
Ветка на форуме: https://bbs.fanruan.com/wenda/question/231882.html
#FineBI #FanRuan #BI #права #моделиданных #безопасность