

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# PG\$1GET\$1SESSION\$1ROLES
<a name="PG_GET_SESSION_ROLES"></a>

返回当前登录的用户的会话角色。用户的会话角色是由身份提供者 (IdP) 为登录用户定义的组。例如，身份提供者 (IdP)（如 [Microsoft Azure Active Directory (Azure AD)](https://azure.microsoft.com/en-us/services/active-directory/)）验证用户的身份，并在用户登录过程中提供该用户所属的所有外部组。这些外部组转换为 Amazon Redshift 角色，可在当前会话期间使用。这些角色称为会话角色。管理员可以向会话角色授予与其他 Amazon Redshift 角色类似的权限。有关使用角色的信息，请参阅[基于角色的访问控制 (RBAC)](t_Roles.md)。有关使用身份提供者 (IdP) 管理身份的信息，请参阅《Amazon Redshift 管理指南》**中的 [Amazon Redshift 的原生身份提供者 (IdP) 联合身份验证](https://docs.aws.amazon.com/redshift/latest/mgmt/redshift-iam-access-control-native-idp.html)。

要查看 Amazon Redshift 目录中定义的角色，请查询系统视图 [SVV\$1ROLES](r_SVV_ROLES.md)。

## 语法
<a name="PG_GET_LATE_BINDING_VIEW_COLS-synopsis"></a>

```
pg_get_session_roles()
```

## 返回类型
<a name="PG_GET_SESSION_ROLES-return-type"></a>

一组由两个值组成的行。第一个值由两部分组成，用冒号 (:) 分隔，其中包含 `idp-namespace:role-name`。`idp-namespace` 是身份提供者 (IdP) 的命名空间。`role-name` 是身份提供者 (IdP) 中的外部组的名称。第二个值包含作为角色标识符的 `role-id`。

## 使用说明
<a name="PG_GET_SESSION_ROLES-usage-notes"></a>

`PG_GET_SESSION_ROLES` 函数为每个返回的会话角色返回一行。

## 示例
<a name="PG_GET_SESSION_ROLES-example"></a>

以下示例为 Azure Active Directory IdP 中的每个角色返回一行。返回的列强制转换为 `sess_roles`，列为 `name` 和 `roleid`。每个 `name` 由 Azure Active Directory 命名空间和 Azure Active Directory 中的组名称组成。

```
SELECT * FROM pg_get_session_roles() AS sess_roles(name name, roleid integer);

name                  roleid
--------------------------------
my_aad:test_group_1   106204
my_aad:test_group_2   106205
my_aad:test_group_3   106206
my_aad:test_group_4   106207
my_aad:test_group_5   106208
```

以下示例为当前登录的 IAM 用户所属的每个 IAM 组返回一行。返回的列强制转换为 `sess_roles`，列为 `name` 和 `roleid`。每个 `name` 由 IAM 命名空间和 IAM 组名称组成。

```
SELECT * FROM pg_get_session_roles() AS sess_roles(name name, roleid integer);

name                  roleid
--------------------------------
IAM:myGroup           110332
```