カテゴリ:

コンテキスト関数 (セッションオブジェクト)

INVOKER_SHARE

INVOKER_SHARE 関数が呼び出されたテーブルまたはビューに直接アクセスした共有の名前を返します。それ以外の場合、関数は NULL を返します。

このトピックの内容:

構文

INVOKER_SHARE()

引数

なし。

使用上の注意

  • 列レベルのセキュリティ で INVOKER_SHARE 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。

  • 共有によって直接呼び出されるテーブルまたはビューに付随されているポリシーの INVOKER_SHARE 関数を使用します。

  • INVOKER_SHARE 関数がテーブルまたはビューに直接付随されているマスキングポリシー内の UDFs (ユーザー定義関数) 内で使用される場合、INVOKER_SHARE 関数のコンテキストは UDF 所有者であり、共有ではないため、INVOKER_SHARE は NULL を返します。

  • テーブルまたはビューが共有によって直接的または間接的に呼び出されたかどうかを判断するには、マスキングポリシーで CURRENT_ACCOUNT 関数を使用することを検討してください。この関数は、ユーザーの現在のセッションのSnowflakeアカウントを返します。これは、テーブルまたはビューがデータ共有コンシューマーアカウントから呼び出されているかどうかを判断するのに役立ちます。

セキュアビューの列にマスキングポリシーが設定されているデータ共有プロバイダーアカウントについて考えます。2つの異なるデータ共有コンシューマーをサポートするセキュアビューにアクセスできる2つの異なる共有があります。データ共有プロバイダーは、アクセスされている共有を識別するために UDFs を使用する次のポリシーを作成します。データ共有コンシューマアカウントのユーザーがいずれかの共有を介してデータをクエリしようとすると、UDFs の書き込み方法に基づいてデータが表示されます。それ以外の場合は、固定のマスク値が表示されます。

case
  when invoker_share() in SHARE1 then mask1_function(val)
  when invoker_share() in SHARE2 then mask2_function(val)
  else '***MASKED***'
end;