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

Для разработчиков => Вопросы по Qlik Sense & QlikView => Тема начата: googlogmob от 13 июля 2015, 12:09:52

Название: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 13 июля 2015, 12:09:52
Добрый день
Есть база на sql server. В ней таблица. В таблице есть поле - регион. Созданы представления, отдельно для каждого региона, в которых в выражении where указан фильтр по региону. Созданы пользователи в sql server для каждого региона. Для каждого представление настроен доступ только для определенного пользователя (этого региона).
Нужно предоставить разрозненный доступ пользователям на одинаковых дашбордах

Подскажите, как реализовать такой дифференцированный доступ через qlik server?
Возможно, существует более простой и технически правильный способ предоставить разрозненный доступ пользователям?
Название: Re: Разграничение доступа (через представление на уровне sql server)
Отправлено: kvv от 13 июля 2015, 12:31:18
Цитата: googlogmob от 13 июля  2015, 12:09:52  
Добрый день
Есть база на 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 и т.д.
Название: Re: Разграничение доступа (через представление на уровне sql server)
Отправлено: kvv от 13 июля 2015, 12:41:42
При условии, что данных относительно мало, можно попробовать проверять пользователя на этапе загрузки и выдать ему урезанные данные - прикрепленный файл 02.png

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

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

P.s. Интересно, почитать другие предложения по этому поводу.
Название: Re: Разграничение доступа (через представление на уровне sql server)
Отправлено: admin от 13 июля 2015, 01:02:45
День добрый.
Вытаскиваете данные штатным образом, без учета прав доступа.
А уже в Qlikview придется разграничивать доступ по пользователям и регионам штатным образом.
В документации почитайте раздел про безопасность (section access, section application).
ЦитироватьМеханизм защиты может быть задан двумя различными способами: он может быть либо встроен в скрипт документа QlikView, либо задан посредством использования QlikView Publisher.
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 13 июля 2015, 04:02:32
Спасибо Большое
Вот: 29.8 Динамическое сокращение данных

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

Но проблема: При обновлении данных пользователем фильтр не срабатывает, и подгружаются все не фильтрованные данные. Конфуз
Что делать?
вот скрипт
Извините, вам запрещён просмотр содержимого спойлеров.
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: admin от 14 июля 2015, 10:33:55
А если "Начальный выбор с учетом Section Access." включить?
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 14 июля 2015, 10:47:56
то просто запускается с полным списком подразделений, и выбранным подразделением авторизированного пользователя. Не то
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: admin от 14 июля 2015, 10:54:31
https://community.qlik.com/thread/165864?sr=stream&ru=108532
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 14 июля 2015, 12:13:43
это скорее не по моему вопросу. Разграничение работает и у меня. Но после загрузки данных пользователем все эти фильтры слетают (в принципе, даже в самих настройках указано, что динам.фильрация запускается при открытии, а не при обновлении)
Что делать?
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: admin от 14 июля 2015, 12:15:38
 :)
А о какой версии идет речь?
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 14 июля 2015, 12:22:43
11 персонал
Нашел тему https://community.qlik.com/thread/124752
Люди решили эту задачу путем разграничения данных по листам и настроенной доступностью к каждому листу. Может тоже вариант..
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: admin от 14 июля 2015, 12:30:25
Ну если результат будет устраивать - значит тоже вариант.
Если динам. фильтрация отрабатывает только на открытии, сделайте обновление данных через командную строку, независимо от пользователя. А ему запретите обновление.
В итоге, когда он будет открывать приложение то оно будет содержать обновленные данные и после авторизации произойдет обрезка лишних данных.
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: admin от 14 июля 2015, 12:32:11
Стоп.
Если локалка, откуда пользователи?
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 14 июля 2015, 12:37:29
Цитата: admin от 14 июля  2015, 12:30:25  
Ну если результат будет устраивать - значит тоже вариант.
Если динам. фильтрация отрабатывает только на открытии, сделайте обновление данных через командную строку, независимо от пользователя. А ему запретите обновление.
В итоге, когда он будет открывать приложение то оно будет содержать обновленные данные и после авторизации произойдет обрезка лишних данных.

Вот об этом и думаю
Название: Re: Разграничение доступа в Qlikview (через представление на уровне sql server)
Отправлено: googlogmob от 14 июля 2015, 12:43:38
Цитата: admin от 14 июля  2015, 12:32:11  
Стоп.
Если локалка, откуда пользователи?

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