- カテゴリ:
CURRENT_AVAILABLE_ROLES¶
現在のユーザーに付与されているすべてのアカウントレベルのロールをリストする文字列(VARCHAR)を返します。
返される文字列には、ユーザーがユーザーセッションでアクティブ化できるすべてのロールの JSON エンコードリストが含まれています(USE ROLE または USE SECONDARY ROLES ステートメントを使用)。
このリストには、ユーザーに直接付与されるすべてのロールに加えて、これらのロール階層の下位にあるすべてのロールが含まれます。戻り値を PARSE_JSON 関数に渡して、使用可能なすべてのロールのリストを含む VARIANT を取得できます。
- こちらもご参照ください。
構文¶
CURRENT_AVAILABLE_ROLES()
使用上の注意¶
この関数は、ユーザーがクエリした場合にのみアカウントレベルのロールのリストを返します。アクティブなユーザーがいないサービスを使用して関数をクエリすると、クエリが失敗する可能性があります。たとえば、タスクの実行はユーザーに関連付けられていないシステムサービスによって実行されるため、関数は タスク 内でクエリされたときにロールのリストを返しません。この場合、クエリプランを完了できないため、クエリがタイムアウトする可能性があります。
この関数は、データベースロールの名前を返しません。
この関数は、セッションでのロールのアクティブ化を考慮しません。
たとえば、 マスキングポリシー または 行アクセスポリシー の条件でこの関数を指定すると、ポリシーによりアクセスが誤って制限される可能性があります。
ポリシー条件でロールのアクティブ化とロール階層が必要な場合は、 IS_ROLE_IN_SESSION を使用します。
例¶
現在のユーザーに付与されているロールのリストを返します。
SELECT CURRENT_AVAILABLE_ROLES(); +----------------------------------------------------------+ | ROW | CURRENT_AVAILABLE_ROLES() | +-----+----------------------------------------------------+ | 1 | [ "PUBLIC", "ANALYST", "DATA_ADMIN", "DATA_USER" ] | +-----+----------------------------------------------------+
PARSE_JSON 関数を使用して VARIANT を返し、 FLATTEN 関数を使用してロールごとに1つの行を取得します。
SELECT INDEX,VALUE,THIS FROM TABLE(FLATTEN(input => PARSE_JSON(CURRENT_AVAILABLE_ROLES()))); +-----+-------+------------------------+---------------------------+ | ROW | INDEX | VALUE | THIS | +-----+-------+------------------------+---------------------------+ | 1 | 0 | "PUBLIC" | [ | | | | | "PUBLIC", | | | | | "ANALYST", | | | | | "DATA_ADMIN", | | | | | "DATA_USER" | | | | | ] | +-----+-------+------------------------+---------------------------+ | 2 | 1 | "ANALYST" | [ | | | | | "PUBLIC", | | | | | "ANALYST", | | | | | "DATA_ADMIN", | | | | | "DATA_USER" | | | | | ] | +-----+-------+------------------------+---------------------------+ | 3 | 2 | "DATA_ADMIN" | [ | | | | | "PUBLIC", | | | | | "ANALYST", | | | | | "DATA_ADMIN", | | | | | "DATA_USER" | | | | | ] | +-----+-------+------------------------+---------------------------+ | 4 | 3 | "DATA_USER" | [ | | | | | "PUBLIC", | | | | | "ANALYST", | | | | | "DATA_ADMIN", | | | | | "DATA_USER" | | | | | ] | +-----+-------+------------------------+---------------------------+