- カテゴリ:
コンテキスト関数 (セッションオブジェクト)
INVOKER_SHARE¶
INVOKER_SHARE 関数が呼び出されたテーブルまたはビューに直接アクセスした、共有の名前を返します。それ以外の場合、関数は NULL を返します。
このトピックの内容:
構文¶
INVOKER_SHARE()
引数¶
なし。
使用上の注意¶
マスキングポリシー で INVOKER_SHARE 関数を使用する場合は、SnowflakeアカウントがEnterprise Edition以上であることを確認してください。
共有によって直接呼び出されるテーブルまたはビューに付随するポリシーの INVOKER_SHARE 関数を使用します。
INVOKER_SHARE 関数がテーブルまたはビューに直接付随するマスキングポリシー内の ユーザー定義関数の概要 で使用される場合、 INVOKER_SHARE 関数のコンテキストは UDF 所有者であり、共有ではないため、 INVOKER_SHARE は NULL を返します。
テーブルまたはビューが共有によって直接的または間接的に呼び出されたかどうかを判断するには、マスキングポリシーで CURRENT_ACCOUNT 関数を使用することを検討してください。この関数は、ユーザーの現在のセッションのSnowflakeアカウントを返します。これは、テーブルまたはビューが、データ共有コンシューマーアカウントから呼び出されているかどうかを判断するのに役立ちます。
例¶
セキュアビューの列にマスキングポリシーが設定されている、データ共有プロバイダーアカウントについて考えます。2つの異なるデータ共有コンシューマーをサポートするセキュアビューにアクセスできる、2つの異なる共有があります。
データ共有プロバイダーは、アクセスされている共有を識別するために UDFs を使用する次のポリシーを作成します。データ共有コンシューマアカウントのユーザーがいずれかの共有を介してデータをクエリしようとすると、UDFs の書き込み方法に基づいてデータが表示されます。それ以外の場合は、固定のマスク値が表示されます。
create or replace masking policy mask_share as (val string) returns string -> case when invoker_share() in ('SHARE1') then mask1_function(val) when invoker_share() in ('SHARE2') then mask2_function(val) else '***MASKED***' end;Copy