Kategorien:

Kontextfunktionen (Sitzungsobjekt)

INVOKER_SHARE

Gibt den Namen der Freigabe zurück, die direkt auf die Tabelle oder die Ansicht zugegriffen hat, wo die INVOKER_SHARE-Funktion aufgerufen wurde, andernfalls gibt die Funktion NULL zurück.

Unter diesem Thema:

Syntax

INVOKER_SHARE()

Argumente

Keine.

Nutzungshinweise

  • Wenn Sie die Funktion INVOKER_SHARE mit Sicherheit auf Spaltenebene verwenden möchten, muss Ihr Snowflake-Konto die Enterprise Edition oder höher sein.

  • Verwenden Sie die Funktion INVOKER_SHARE in einer Richtlinie, die an eine Tabelle oder Ansicht angehängt ist, die direkt von einer Freigabe aufgerufen wird.

  • Wenn die Funktion INVOKER_SHARE in einer UDFs (Benutzerdefinierte Funktionen) innerhalb einer Maskierungsrichtlinie verwendet wird, die direkt an eine Tabelle oder Ansicht angehängt ist, gibt INVOKER_SHARE den Wert NULL zurück, da der Kontext der INVOKER_SHARE-Funktion nicht die Freigabe, sondern der UDF-Eigentümer ist.

  • Um leichter feststellen zu können, ob eine Tabelle oder Ansicht direkt oder indirekt von einer Freigabe aufgerufen wurde, sollten Sie die CURRENT_ACCOUNT-Funktion in einer Maskierungsrichtlinie verwenden. Diese Funktion gibt das Snowflake-Konto für die aktuelle Sitzung des Benutzers zurück, was bei der Bestimmung helfen kann, ob die Tabelle oder Ansicht von einem Data Sharing-Verbraucherkonto aus aufgerufen wird.

Beispiele

Betrachten Sie ein Data Sharing-Anbieterkonto, bei dem eine Maskierungsrichtlinie in einer Spalte mit einer sicheren Ansicht festgelegt ist. Es gibt zwei verschiedene Freigaben, die auf die sichere Ansicht zugreifen können, um zwei verschiedene Data Sharing-Verbraucher zu unterstützen. Der Data Sharing-Anbieter erstellt die folgende Richtlinie zur Verwendung von UDFs, um festzustellen, auf welche Freigabe zugegriffen wird. Wenn ein Benutzer im Data Sharing-Verbraucherkonto versucht, die Daten über eine der beiden Freigaben abzufragen, sieht er Daten auf der Grundlage der Schreibweise der UDFs, andernfalls wird ein fest maskierter Wert angezeigt.

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