Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
Ноябрь 25, 2017, 03:03:21 am

Автор Тема: Разграничение доступа в Qlikview (через представление на уровне sql server)  (Прочитано 3035 раз)

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
Добрый день
Есть база на sql server. В ней таблица. В таблице есть поле - регион. Созданы представления, отдельно для каждого региона, в которых в выражении where указан фильтр по региону. Созданы пользователи в sql server для каждого региона. Для каждого представление настроен доступ только для определенного пользователя (этого региона).
Нужно предоставить разрозненный доступ пользователям на одинаковых дашбордах

Подскажите, как реализовать такой дифференцированный доступ через qlik server?
Возможно, существует более простой и технически правильный способ предоставить разрозненный доступ пользователям?

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
Добрый день
Есть база на sql server. В ней таблица. В таблице есть поле - регион. Созданы представления, отдельно для каждого региона, в которых в выражении where указан фильтр по региону. Созданы пользователи в sql server для каждого региона. Для каждого представление настроен доступ только для определенного пользователя (этого региона).
Нужно предоставить разрозненный доступ пользователям на одинаковых дашбордах

Подскажите, как реализовать такой дифференцированный доступ через qlik server?
Возможно, существует более простой и технически правильный способ предоставить разрозненный доступ пользователям?

Добрый день.
Самое первое что приходит на ум, это использовать "QVuser( )".
То есть, допустим есть 5 регионов. В QlikView создаем 5 пользователей и 5 листов (sheet) для каждого региона. В свойствах первого листа (sheet_01) в (General ---> Conditional) пишем условие, что данный лист (sheet_01) виден только для пользователя user_01 и все расчеты на данном листе "урезаны" для региона, который нужен пользователю user_01. По аналогии делаем sheet_02, на котором данные для пользователя user_02 и т.д.

Оффлайн kvv

  • Гуру
  • ***
  • Сообщений: 135
  • Страна: 00
  • Рейтинг: +36/-0
    • Просмотр профиля
При условии, что данных относительно мало, можно попробовать проверять пользователя на этапе загрузки и выдать ему урезанные данные - прикрепленный файл 02.png

Далее, можно, для каждого региона сделать свои qvd-файлы и аналогично, как описано в первом посте, отдавать данные для каждого региона со своего qvd-файла и ограничивать просмотр через General ---> Conditional - прикрепленный файл 01.png

В общем, как-то так.

P.s. Интересно, почитать другие предложения по этому поводу.

Неофициальный форум пользователей QlikView & Qlik Sense


Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
День добрый.
Вытаскиваете данные штатным образом, без учета прав доступа.
А уже в Qlikview придется разграничивать доступ по пользователям и регионам штатным образом.
В документации почитайте раздел про безопасность (section access, section application).
Цитировать
Механизм защиты может быть задан двумя различными способами: он может быть либо встроен в скрипт документа QlikView, либо задан посредством использования QlikView Publisher.

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
Спасибо Большое
Вот: 29.8 Динамическое сокращение данных

ПС, оказалось не все так просто.
Скрипт создал согласно руководству, в пункте "Открытие" нужные параметры выбрал.
При открытии файла все гуд, данные фильтруются,

Но проблема: При обновлении данных пользователем фильтр не срабатывает, и подгружаются все не фильтрованные данные. Конфуз
Что делать?
вот скрипт
Извините, вам запрещён просмотр содержимого спойлеров.

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
А если "Начальный выбор с учетом Section Access." включить?

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
то просто запускается с полным списком подразделений, и выбранным подразделением авторизированного пользователя. Не то

Неофициальный форум пользователей QlikView & Qlik Sense


Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
это скорее не по моему вопросу. Разграничение работает и у меня. Но после загрузки данных пользователем все эти фильтры слетают (в принципе, даже в самих настройках указано, что динам.фильрация запускается при открытии, а не при обновлении)
Что делать?

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
 :)
А о какой версии идет речь?

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
11 персонал
Нашел тему https://community.qlik.com/thread/124752
Люди решили эту задачу путем разграничения данных по листам и настроенной доступностью к каждому листу. Может тоже вариант..

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Ну если результат будет устраивать - значит тоже вариант.
Если динам. фильтрация отрабатывает только на открытии, сделайте обновление данных через командную строку, независимо от пользователя. А ему запретите обновление.
В итоге, когда он будет открывать приложение то оно будет содержать обновленные данные и после авторизации произойдет обрезка лишних данных.

Оффлайн admin

  • Administrator
  • Hero Member
  • *****
  • Сообщений: 983
  • Страна: ru
  • Рейтинг: +97/-0
    • Просмотр профиля
Стоп.
Если локалка, откуда пользователи?

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
Ну если результат будет устраивать - значит тоже вариант.
Если динам. фильтрация отрабатывает только на открытии, сделайте обновление данных через командную строку, независимо от пользователя. А ему запретите обновление.
В итоге, когда он будет открывать приложение то оно будет содержать обновленные данные и после авторизации произойдет обрезка лишних данных.

Вот об этом и думаю

Оффлайн googlogmob

  • Новичок
  • *
  • Сообщений: 31
  • Рейтинг: +1/-0
    • Просмотр профиля
Стоп.
Если локалка, откуда пользователи?

Проект в рамках сети офиса. Хотя может и через сервер реализуем.
Хотя теперь идея через отдельные представление в sql и авторизироваться уже в нем, кажется не такой уж и плохой.. Порезать на уровне сервера, и меньше сеть нагружать. Просто придется скрипты пописать отдельно для каждого пользователя. Здесь большой минус с настройкой элементов на листах (добавлением,удалением) - придется всем править.