# GetUserAttr Функция скрипта и диаграммы

Функция GetUserAttr() возвращает следующую информацию о пользователе, который заходит в приложение:

* Адрес электронной почты

* Тема

* Группы, к которым принадлежит пользователь, например группы поставщика удостоверений (IdP) и пользовательские группы

* Предпочтительный язык

* Часовой пояс

Используйте функцию GetSysAttr() непосредственно в скрипте загрузки или в выражении диаграммы. В любом случае с помощью этой функции можно сохранять атрибуты в переменной или напрямую (без переменной). При использовании в Qlik Sense под управлением клиента эта функция возвращает только пустые значения данных. Таким образом, эту функцию можно использовать для разработки скриптов в Qlik Sense под управлением клиента, не сталкиваясь с ошибками, впоследствии приложения можно будет загрузить в Qlik Cloud.

Синтаксис:

GetUserAttr(name)

Возвращаемые типы данных: двойное значение

Аргументы

| Аргумент | Описание |
| --- | --- |
| name | Имя атрибута, который должен быть возвращен. Вводится как строковое значение в выражении. Строковое значение вводится с учетом регистра. |

Используйте функцию для загрузки атрибутов пользователя в ваше приложение. Эта функция может возвращать следующие атрибуты:

Атрибуты пользователя, которые может возвращать функция GetUserAttr()GetUserAttr()

| Атрибут | Описание | Имя переменной скрипта загрузки | Пример выражения диаграммы (без переменной) | Пример результатов выражения диаграммы |
| --- | --- | --- | --- | --- |
| userEmail | Адрес электронной почты текущего пользователя. | `Let vUserEmail = GetUserAttr('userEmail')` | `=GetUserAttr('userEmail')` | `john.doe@company.com` |
| userSubject | Тема текущего пользователя. | `Let vUserSubject = GetUserAttr('userSubject')` | `=GetUserAttr('userSubject')` | `00uss7ra3dk9doJln0x7` |
| userGroups | Группы (IdP, пользовательские или и те и другие), к которым принадлежит текущий пользователь. возвращает список, разделенный запятыми, в строке. По умолчанию `GetUserAttr` возвращает группы IdP, если не задана системная переменная `QlikCloudGroupMode` в операторе скрипта загрузки.<br><br>[QlikCloudGroupMode](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/QlikCloudGroupMode.htm). | `Let vUserGroups = GetUserAttr('userGroups')` | `=GetUserAttr('userGroups')` | `Sales,Product-Lead,OKTA-Github-RnD` |
| userLocale | Предпочтительный язык пользователя, который устанавливается в настройках пользователя.<br><br>[Управление персональными настройками](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Introduction/profile-settings.htm) | `Let vUserLocale = GetUserAttr('userLocale')` | `=GetUserAttr('userLocale')` | `en` |
| userZoneinfo | Часовой пояс пользователя, который устанавливается в настройках пользователя.<br><br>[Управление персональными настройками](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Introduction/profile-settings.htm) | `Let vUserLanguage = GetUserAttr('userZoneinfo')` | `=GetUserAttr('userZoneinfo')` | `Europe/London` |

## Когда использовать GetUserAttr

Эта функция возвращает свойства пользователя и группы для текущего пользователя приложения. Это позволяет создавать решения, которые настраивают содержимое, отображаемое для ваших пользователей. Например, в приложении для глобальных продаж можно показывать листы с информацией о конкретном продукте только тем торговым представителям, которые отвечают за определенную группу продуктов. Эту функцию можно использовать в операторах загрузки в скрипте загрузки приложения или в выражениях диаграммы, либо непосредственно как выражение, либо в выражении, сохраненном в качестве переменной.

[Dynamic titles based on user language using the GetUserAttr function](https://play.vidyard.com/bozy96G13YU5YrBjnqNNDF)

## Пример. Хранение атрибутов пользователя в виде переменных в скрипте

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### Переменные скрипта загрузки и выражения диаграммы

В этом примере определяется набор переменных скрипта, которые можно использовать в создаваемом содержимом приложения. При каждой перезагрузке приложения атрибуты оцениваются и добавляются в приложение.

Выполните следующие действия.

1. Создать новое Qlik Sense приложение.

2. Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел. Скрипт загрузки содержит следующее:

   * Новая таблица под именем `Transactions` содержит образец данных транзакции. Их можно заменить любыми данными, они добавлены для заполнения места.

   * Оператор скрипта, который устанавливает для системной переменной `QlikCloudGroupMode` значение `2`. Атрибут `userGroups` будет возвращать как группы IdP, так и пользовательские группы, к которым принадлежит пользователь.

   * Набор определений переменных скрипта для доступных атрибутов, которые может возвращать функция GetUserAttr.

     ```
     Set QlikCloudGroupMode = 2;
     Transactions:
     Load * inline [
     id,date,amount
     1,1/1/2023,500.67
     2,1/2/2023,458.91
     3,1/3/2023,12.34
     4,1/4/2023,90.90
     5,1/5/2023,256.30
     6,1/6/2023,789.16
     7,1/7/2023,501.25
     8,1/8/2023,87.01
     9,1/9/2023,161.16
     10,1/10/2023,300.06
     ];
     Let vUserEmail = GetUserAttr('userEmail');
     Let vUserSubject = GetUserAttr('userSubject');
     Let vUserGroups = GetUserAttr('userGroups');
     Let vUserLocale = GetUserAttr('userLocale');
     Let vUserZoneinfo = GetUserAttr('userZoneinfo');
     ```

3. Загрузите данные и откройте новый лист в расширенном режиме редактирования.

4. Создайте таблицу и добавьте следующие выражения в качестве измерений:

   * `=vUserEmail`

   * `=vUserSubject`

   * `=vUserGroups`, возвращает список, разделенный запятыми, в строке

   * `=vUserLocale`

   * `=vUserZoneinfo`

Примечание к подсказкеСоздавая измерение, можно добавить метку измерения, например, Адрес эл. почты пользователя, для улучшения читаемости.

Вывод в таблице динамически отображает доступные атрибуты пользователя. В следующей таблице приведен пример результатов, возвращенных функцией `GetUserAttr`.

Результирующая таблица

| =vUserEmail | =vUserSubject | =vUserGroups | =vUserLocale | =vUserZoneinfo |
| --- | --- | --- | --- | --- |
| john.doe@company.com | 00uss7ra3dk9doJln0x7 | Продажи,Руководитель продукта,OKTA-GitHub-НИОКР | ru | Америка/Торонто |

## Пример. Сохранение атрибутов пользователя в виде переменных для использования в выражениях диаграммы

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### Переменные и выражения диаграммы

В этом примере вместо определения переменных в скрипте загрузки переменные определяются в приложении. После определения переменные можно использовать в выражениях диаграммы в приложении. Главное преимущество использования функции в выражениях диаграммы заключается в том, что атрибуты будут автоматически обновляться без необходимости перезагрузки приложения. Это обеспечивает более плавное перемещение приложений между пользователями в рамках жизненного цикла приложения.

Выполните следующие действия.

1. Создать новое Qlik Sense приложение.

2. Откройте новый лист в расширенном режиме редактирования.

3. Откройте диалоговое окно «Переменные».

4. Выберите Создать новый, а затем выполните следующие действия:

   * В поле Имя введите vUserEmail.

   * В поле Определение введите =GetUserAttr('userEmail').

   * Выберите Создать.

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

   * Темя пользователя

     * Имя: vUserSubject

     * Определение: =GetUserAttr('userSubject')

   * Группы пользователя

     * Имя: vUserGroups

     * Определение: =GetUserAttr('userGroups')

   * Локаль пользователя

     * Имя: vUserLocale

     * Определение: =GetUserAttr('userLocale')

   * Пользователь Zoneinfo

     * Имя: vUserZoneinfo

     * Определение: =GetUserAttr('userZoneinfo')

5. Создайте таблицу и добавьте следующие выражения в качестве измерений:

   * `=vUserEmail`

   * `=vUserSubject`

   * `=vUserGroups` (возвращает список, разделенный запятыми, в строке)

   * `=vUserLocale`

   * `=vUserZoneinfo`

Примечание к подсказкеСоздавая измерение, можно добавить метку измерения, например, Адрес эл. почты пользователя, для улучшения читаемости.

Вывод в новой таблице динамически отображает доступные атрибуты пользователя. В следующей таблице приведен пример результатов, возвращенных функцией `GetUserAttr`.

Результирующая таблица

| =vUserEmail | =vUserSubject | =vUserGroups | =vUserLocale | =vUserZoneinfo |
| --- | --- | --- | --- | --- |
| john.doe@company.com | 00uss7ra3dk9doJln0x7 | Продажи,Руководитель продукта,OKTA-GitHub-НИОКР | ru | Америка/Торонто |

Примечание к информацииПо умолчанию функция `GetUserAttr('userGroups')` возвращает группы IdP для пользователя. Можно выбрать, какие группы будут возвращены, установив системную переменную `QlikCloudGroupMode` в операторе скрипта, например `Set QlikCloudGroupMode = 2` возвращает как группы IdP, так и пользовательские группы. Для получения дополнительной информации см. раздел [QlikCloudGroupMode](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/QlikCloudGroupMode.htm).

## Пример. Использование функции GetUserAttr непосредственно в скрипте загрузки

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### Скрипт загрузки

Функцию также можно использовать в приложениях без переменной. Этот пример показывает, как загрузить таблицу, в которой каждый атрибут будет отдельным полем. Здесь можно создать визуализации в приложении для отображения этих сведений.

Выполните следующие действия.

1. Создать новое Qlik Sense приложение.

2. Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел. Скрипт загрузки содержит следующее:

   * Новая таблица с именем `Attributes`, содержащая каждый атрибут в виде поля.

   * Оператор скрипта, который устанавливает для системной переменной `QlikCloudGroupMode` значение `1` для пользовательских групп. Атрибут `userGroups` будет возвращать только пользовательские группы, к которым принадлежит пользователь.

   ```
   Set QlikCloudGroupMode = 1;
   Attributes:
   Load RowNo() as Key,
   GetUserAttr('userEmail') as UserEmail,
   GetUserAttr('userSubject') as UserSubject,
   GetUserAttr('userLocale') as UserLocale,
   GetUserAttr('userZoneinfo') as UserZoneinfo,
   GetUserAttr('userGroups') as UserGroups autogenerate 1;
   ```

3. Загрузите данные. Создается таблица в модели данных, где каждый атрибут отображается в отдельном поле.

   Теперь можно использовать поля атрибутов в визуализациях, таких как таблицы или объекты «Текст и изображение».

## Пример. Использование функции GetUserAttr напрямую в выражениях диаграммы

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### Выражения диаграммы

Функцию можно вводить непосредственно в выражения диаграммы, не используя переменные. Атрибуты пользователя обновятся без необходимости перезагружать приложение. Это обеспечивает более плавное перемещение приложений между пользователями в рамках жизненного цикла приложения.

Выполните следующие действия.

1. Создать новое Qlik Sense приложение.

2. Откройте новый лист в расширенном режиме редактирования.

3. Перетащите объект «Текст и изображение» на лист.

4. Щелкните внутри пустой диаграммы и введите следующую метку:

   Адрес эл. почты пользователя:

5. На панели Свойства выберите Добавить меру.

6. Введите следующее выражение:

   * =GetUserAttr('userEmail')

7. Добавьте метки и меры для других атрибутов в новых строках. Используйте следующие выражения для каждого атрибута:

   * =GetUserAttr('userSubject') для атрибута «Тема пользователя»

   * =GetUserAttr('userGroups'), для атрибута «Группы пользователя»

   * =GetUserAttr('userLocale'), для локали пользователя

   * =GetUserAttr('userZoneinfo'), для информации о зоне пользователя​

Примечание к информацииПо умолчанию функция `GetUserAttr('userGroups')` возвращает группы IdP для пользователя. Можно выбрать, какие группы будут возвращены, установив системную переменную `QlikCloudGroupMode` в операторе скрипта, например `Set QlikCloudGroupMode = 2` возвращает как группы IdP, так и пользовательские группы. Для получения дополнительной информации см. раздел [QlikCloudGroupMode](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemVariables/QlikCloudGroupMode.htm).

## Пример. Скрытие столбца с помощью выражения диаграммы при выполнении условия

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/SystemFunctions/GetUserAttr.htm)

#### Выражения диаграммы

Обзор

Этот пример показывает или скрывает столбец таблицы в зависимости от почтового домена пользователя.

Выполните следующие действия.

1. Создать новое Qlik Sense приложение.

2. Откройте редактор загрузки данных и добавьте приведенный ниже скрипт загрузки в новый раздел. Скрипт загрузки содержит следующее:

   * Набор данных, который загружается в таблицу под именем `Transactions`

   * Следующие поля в таблице данных:

     * `ID`

     * `Date`

     * `Amount`

     Скрипт загрузки

     ```
     Transactions:
     Load * inline [
     ID, Date, Amount
     1, 1/1/2023, 500.67
     2, 1/2/2023, 458.91
     3, 1/3/2023, 12.34
     ];
     ```

3. Загрузите данные и откройте лист. Создайте новую таблицу и добавьте эти поля как измерения:

   * `ID`

   * `Date`

   * `Amount`

   Добавьте следующее выражение в виде вычисляемого измерения:

   * `=WildMatch(GetUserAttr('userEmail'),'*@qlik.com')>0`Чтобы проверить, совпадает ли почтовый домен пользователя с `@qlik.com`.

4. На панели свойств измерения `Amount` в поле Показать столбец, если добавьте следующее выражение:

   * `=WildMatch(GetUserAttr('userEmail'),'*@qlik.com')>0` отображает столбец Amount, если электронная почта пользователя совпадает с доменом `qlik.com`.

   Это выражение отображает столбец `Amount` только для тех пользователей, у которых почтовый домен содержит строку `@qlik.com`. У пользователей с другими доменными именами этот столбец не отображается.

Results table 1 - User with email address: `user@qlik.com`user@qlik.com

| ID | Date | Amount | WildMatch(GetUserAttr('userEmail'),'\*@qlik.com')&gt;0 |
| --- | --- | --- | --- |
| 1 | 1/1/2023 | 500.67 | -1 |
| 2 | 1/2/2023 | 458.91 | -1 |
| 3 | 1/3/2023 | 12.34 | -1 |

Results table 2 - User with email address: `user@gmail.com`user@gmail.com

| ID | Date | WildMatch(GetUserAttr('userEmail'),'\*@qlik.com')&gt;0 |
| --- | --- | --- |
| 1 | 1/1/2023 | 0 |
| 2 | 1/2/2023 | 0 |
| 3 | 1/3/2023 | 0 |

Этот пример демонстрирует, как можно использовать функцию `GetUserAttr` для отображения определенного столбца при выполнении некоторого условия. Столбец `Amount` отображается в первой таблице, потому что адрес электронной почты пользователя, просматривающего приложение, содержит домен `@qlik.com`, а выражение измерения в столбце 4 возвращает `-1`. Столбец `Amount` скрыт из результатов во второй таблице, потому что у пользователя нет электронной почты с доменом `qlik.com`.