Schema:

ACCOUNT_USAGE

ACCESS_HISTORY-Ansicht

Diese Account Usage-Ansicht kann verwendet werden, um den Zugriffsverlauf von Snowflake-Objekten (z. B. Tabellen, Ansichten, Spalten) innerhalb der letzten 365 Tage (1 Jahr) abzufragen.

Spalten

In diesem Abschnitt gibt es drei Tabellen:

  • Die erste Tabelle enthält ein Beispiel für jeden Spaltenwert.

  • Die zweite Tabelle definiert die Spalten in der ACCESS_HISTORY-Ansicht.

  • Die dritte Tabelle definiert die Felder im JSON-Array für die Spalten base_objects_accessed, direct_objects_accessed und objects_modified.

Spaltenname

Beispiel

query_id

a0fda135-d678-4184-942b-c3411ae8d1ce

query_start_time

2022-01-25 16:17:47.388 +0000

user_name

JSMITH

direct_objects_accessed

[
  {
    "objectDomain": "FUNCTION",
    "objectName": "GOVERNANCE.FUNCTIONS.RETURN_SUM",
    "objectId": "2",
    "argumentSignature": "(NUM1 NUMBER, NUM2 NUMBER)",
    "dataType": "NUMBER(38,0)"
  },
  {
    "columns": [
      {
        "columnId": 68610,
        "columnName": "CONTENT"
      }
    ],
    "objectDomain": "Table",
    "objectId": 66564,
    "objectName": "GOVERNANCE.TABLES.T1"
  }
]
Copy

base_objects_accessed

[
  {
    "objectDomain": "FUNCTION",
    "objectName": "GOVERNANCE.FUNCTIONS.RETURN_SUM",
    "objectId": "2",
    "argumentSignature": "(NUM1 NUMBER, NUM2 NUMBER)",
    "dataType": "NUMBER(38,0)"
  },
  {
    "columns": [
      {
        "columnId": 68610,
        "columnName": "CONTENT"
      }
    ],
    "objectDomain": "Table",
    "objectId": 66564,
    "objectName": "GOVERNANCE.TABLES.T1"
  }
]
Copy

objects_modified

[
  {
    "objectDomain": "STRING",
    "objectId":  NUMBER,
    "objectName": "STRING",
    "columns": [
      {
        "columnId": "NUMBER",
        "columnName": "STRING",
        "baseSources": [
          {
            "columnName": STRING,
            "objectDomain": "STRING",
            "objectId": NUMBER,
            "objectName": "STRING"
          }
        ],
        "directSources": [
          {
            "columnName": STRING,
            "objectDomain": "STRING",
            "objectId": NUMBER,
            "objectName": "STRING"
          }
        ]
      }
    ]
  },
  ...
]
Copy

object_modified_by_ddl

{
  "objectDomain": STRING,
  "objectName": STRING,
  "objectId": NUMBER,
  "operationType": STRING,
  "properties": ARRAY
}
Copy

policies_referenced

[
  {
    "columns": [
      {
        "columnId": 68610,
        "columnName": "SSN",
        "policies": [
          {
              "policyName": "governance.policies.ssn_mask",
              "policyId": 68811,
              "policyKind": "MASKING_POLICY"
          }
        ]
      }
    ],
    "objectDomain": "VIEW",
    "objectId": 66564,
    "objectName": "GOVERNANCE.VIEWS.V1",
    "policies": [
      {
        "policyName": "governance.policies.rap1",
        "policyId": 68813,
        "policyKind": "ROW_ACCESS_POLICY"
      }
    ]
  }
]
Copy

Spaltenname

Datentyp

Beschreibung

query_id

TEXT

Interner, vom System generierter Bezeichner für die SQL-Anweisung. Dieser Wert wird auch im QUERY_HISTORY-Ansicht erwähnt.

query_start_time

TIMESTAMP_LTZ

Startzeit der Anweisung (UTC-Zeitzone).

user_name

TEXT

Benutzer, der die Abfrage ausgegeben hat.

direct_objects_accessed

ARRAY

Ein JSON-Array mit Datenobjekten wie benutzerdefinierten Funktionen (d. h. UDFs und UDTFs), gespeicherten Prozeduren, Tabellen, Ansichten und Spalten, die direkt in der Abfrage explizit oder durch Verwendung von Shortcuts wie dem Sternchen (d. h. *) benannt werden.

In diesem Feld können virtuelle Spalten zurückgegeben werden.

Weitere Hinweise zu UDFs finden Sie unter Hinweise zu UDFs (unter diesem Thema).

base_objects_accessed

ARRAY

Ein JSON-Array aller Basisdatenobjekte zur Ausführung einer Abfrage, einschließlich Spalten, externe Funktionen, UDFs und gespeicherte Prozeduren.

In diesem Beispiel geben die Felder im ersten Array einen UDF an. Dieselben Felder im ersten Array spezifizieren auch eine gespeicherte Prozedur, falls zutreffend.

Beachten Sie Folgendes:

  • In diesem Feld werden Ansichtsnamen oder Ansichtsspalten, einschließlich virtueller Spalten, angegeben, wenn in einem Data Sharing-Verbraucherkonto auf eine freigegebene Ansicht zugegriffen wird.

  • Weitere Hinweise zu UDFs finden Sie unter Hinweise zu UDFs (unter diesem Thema).

objects_modified

ARRAY

Ein JSON-Array, das die Objekte angibt, die mit einer Schreiboperation in der Abfrage verknüpft waren.

Das Array für die UDF und die gespeicherte Prozedur ist dasselbe wie das zuvor gezeigte und wird in den Arrays für baseSources und directSources angezeigt, je nachdem, wie der Zugriff erfolgte. Der Kürze halber wird in diesem Beispiel das Array der UDF und der gespeicherten Prozedur weggelassen.

Weitere Hinweise zu UDFs finden Sie unter Hinweise zu UDFs (unter diesem Thema).

object_modified_by_ddl

OBJECT

Gibt die DDL-Operation für eine Datenbank, ein Schema, eine Tabelle, eine Ansicht und eine Spalte an. Zu diesen Operationen gehören auch Anweisungen, die eine Zeilenzugriffsrichtlinie auf einer Tabelle oder Ansicht, eine Maskierungsrichtlinie auf einer Spalte sowie Tag-Aktualisierungen (z. B. Setzen eines Tags, Ändern eines Tag-Werts) auf dem Objekt oder der Spalte angeben.

policies_referenced

ARRAY

Gibt Informationen zu der erzwungenen Maskierungsrichtlinie für die Spalte und der erzwungenen Zeilenzugriffsrichtlinie für die Tabelle an, einschließlich der Richtlinien für Zwischenobjekte oder Zwischenspalten.

parent_query_id

TEXT

Die Abfrage-ID des übergeordneten Jobs oder NULL, wenn der Job keinen übergeordneten Job hat.

root_query_id

TEXT

Die Abfrage-ID des obersten Jobs in der Job-Hierarchie oder NULL, wenn der Job keinen übergeordneten Job hat.

Die Felder im JSON-Array für die Spalten direct_objects_accessed, base_objects_accessed, objects_modified und policies_referenced werden im Folgenden beschrieben.

Feld

Datentyp

Beschreibung

columnId

NUMBER

Eine Spalte-ID, die innerhalb des Kontos eindeutig ist. Dieser Wert ist identisch mit der columnID in der Ansicht COLUMNS.

columnName

TEXT

Der Name der Spalte, auf die zugegriffen wurde. Gibt bei Richtlinien den Namen der Spalte an, für die die Maskierungsrichtlinie festgelegt ist.

objectId

NUMBER

Ein Bezeichner für das Objekt, der innerhalb eines gegebenen Kontos und einer gegebenen Domäne eindeutig ist. Diese Nummer stimmt überein mit:

  • TABLE_ID-Nummer für eine Tabelle, Ansicht und materialisierte Ansicht.

  • Wenn auf einen Stagingbereich zugegriffen wurde, stimmt diese Nummer überein mit:

    • NAME – Bezeichner für einen Benutzer (Benutzer-Stagingbereich).

    • TABLE_ID – Nummer für eine Tabelle (Tabellen-Stagingbereich).

    • STAGE_ID – Nummer für einen Stagingbereich (Benannter Stagingbereich).

objectName

TEXT

Der vollqualifizierte Name des Objekts, auf das zugegriffen wurde.

Wenn eine Maskierungsrichtlinie für eine Spalte bzw. ein Zeilenzugriffrichtlinie für eine Tabelle oder Ansicht festgelegt wurde, bezieht sich der Wert auf den vollqualifizierten Namen der Tabelle oder Ansicht, für die die Zeilenzugriffsrichtlinie festgelegt ist, bzw. auf die Tabelle oder Ansicht, die eine Spalte enthält, für die eine Maskierungsrichtlinie festgelegt ist.

Wenn auf einen Stagingbereich zugegriffen wurde, gibt dieser Wert Folgendes an:

  • username (Benutzer-Stagingbereich)

  • table_name (Tabellen-Stagingbereich)

  • stage_name (Benannter Stagingbereich)

objectDomain

TEXT

Eine der folgenden Optionen: EXTERNAL TABLE, FUNCTION, MATERIALIZED VIEW, PROCEDURE, STAGE, STREAM oder VIEW.

Beachten Sie, dass mit FUNCTION die UDFs, UDTFs und externen Funktionen angegeben werden.

Gibt bei Richtlinien die Domäne des Objekts an, für das die Zeilenzugriffsrichtlinie festgelegt ist.

location

TEXT

Die URL des externen Standorts, wenn der Datenzugriff auf einen externen Standort erfolgt (z. B. s3://mybucket/a.csv). . Wenn die Abfrage nicht auf einen Stagingbereich zugreift, wird dieses Feld weggelassen.

stageKind

TEXT

Wenn Sie in einen Stagingbereich schreiben, wählen Sie eine der folgenden Optionen: Table | User | Internal Named | External Named Wenn die Abfrage nicht auf einen Stagingbereich zugreift, wird dieses Feld weggelassen.

baseSources

TEXT

Spalten, die als Quellspalten für die durch directSources angegebenen Spalten dienen. Diese Spalten erleichtern die Ermittlung der Spaltenherkunft.

directSources

TEXT

Spalten, die speziell in dem Teil der SQL-Anweisung genannt werden, in dem es um das Schreiben der Daten geht, und die als Quellspalten in der Zieltabelle dienen, in die Daten geschrieben werden. Diese Spalten erleichtern die Ermittlung der Spaltenherkunft.

policyName

TEXT

Der vollqualifizierte Name der Richtlinie.

policyId

NUMBER

Ein Bezeichner für die Richtlinie, der innerhalb eines gegebenen Kontos und einer gegebenen Domäne eindeutig ist. Dieser Wert entspricht dem Bezeichner für eine Maskierungsrichtlinie in Ansicht MASKING_POLICIES oder dem Bezeichner für eine Zeilenzugriffsrichtlinie in ROW_ACCESS_POLICIES-Ansicht.

policyKind

TEXT

Entweder MASKING_POLICY oder ROW_ACCESS_POLICY

argumentSignature

TEXT

Name und Datentyp jedes Arguments in der UDF oder gespeicherten Prozedur.

dataType

Datentyp des Rückgabewerts einer UDF oder gespeicherten Prozedur.

Mithilfe dieses Werts können zwei oder mehr UDFs unterschieden werden, die denselben Namen, aber unterschiedliche Rückgabetypen haben.

Die Felder für die Spalte object_modified_by_ddl werden im Folgenden beschrieben.

fieldName

Datentyp

Beschreibung

objectDomain

TEXT

Die Domäne des durch die DDL-Operation definierten oder geänderten Objekts, die alle Objekte umfasst, die getaggt werden können, sowie MASKING POLICY | ROW ACCESS POLICY | TAG.

objectId

NUMBER

Der Bezeichner des Objekts, der innerhalb eines gegebenen Kontos und einer gegebenen Domäne eindeutig ist und der von DDL-Operationen definiert oder geändert wird.

objectName

TEXT

Der vollqualifizierte Name des Objekts, das durch die DDL-Operation definiert oder geändert wurde.

operationType

TEXT

Das SQL-Schlüsselwort, das die Operation für die Tabelle, die Ansicht oder die Spalte angibt: ALTER | CREATE | DROP | REPLACE | UNDROP

properties

ARRAY

Ein JSON-Array, das die Eigenschaften des Objekts oder der Spalte angibt, wenn Sie das Objekt oder die Spalte erstellen, ändern, löschen oder wiederherstellen. Es gibt zwei Typen von Eigenschaften: atomar (atomic) und zusammengesetzt (compound).

Für das Feld properties:

  • Atomar: Genau Ein Wert pro Eigenschaft (z. B. comment hat genau einen Zeichenfolgenwert, die Eigenschaft enabled ist vom Typ Boolean und hat genau einen Wert).

  • Zusammengesetzt: Die Eigenschaft ist mehrwertig (z. B. allowed_values für einen Tag, Maskierungsrichtlinie).

Zusammengesetzte Eigenschaften werden in einem JSON-Array erfasst. Wenn eine Tabelle beispielsweise eine einzelne Spalte mit dem Namen EMAIL enthält, wird die Spalte wie folgt erfasst:

columns: {
  "email": {
    objectId: {
      "value": 1
    },
    "subOperationType": "ADD"
  }
}
Copy

subOperationType kann einen der folgenden Werte aufweisen:

  • ADD gibt das Hinzufügen einer zusammengesetzten Eigenschaft an (z. B. Hinzufügen einer Spalte, Festlegen zulässiger Werte).

  • DROP gibt das Entfernen einer zusammengesetzten Eigenschaft an.

  • ALTER gibt das Ändern einer zusammengesetzten Eigenschaft an.

objectId gibt den Bezeichner für die Spalte oder das Objekt an, außer für zulässige Tag-Werte, die keinen Bezeichner haben.

Nutzungshinweise

Latenz und historische Daten
  • Die Ansicht enthält Daten ab dem 22. Februar 2021 an.

  • Die Latenzzeit der Ansicht kann bis zu 180 Minuten (3 Stunden) betragen.

Vorgänger-Abfragen

Die Spalten parent_query_id und root_query_id beginnen mit der Erfassung von Daten ab dem 15.-16. Januar 2024, je nachdem, wann Ihr Snowflake-Konto auf der Grundlage des auf „Standardmäßig aktiviert“ umgestellten Verhaltensänderungs-Bundles 2023_08 aktualisiert wurde. Dieses Datum ist notwendig, um zwischen den folgenden Datensätzen in der Ansicht zu unterscheiden:

  • Abfragen, die ausgeführt wurden, bevor das Bundle standardmäßig aktiviert wurde.

  • Abfragen, die ausgeführt wurden, nachdem das Feature standardmäßig aktiviert wurde, aber keinen Wert im Feld parent_query_id haben.

Allgemeine Hinweise
  • Um die Leistung zu erhöhen, können Sie die Abfragen nach der Spalte query_start_time filtern und engere Zeitbereiche auswählen. Beispielabfragen finden Sie unter Abfragen der ACCESS_HISTORY-Ansicht.

  • Sichere Ansichten. Der Protokollsatz enthält die zugrunde liegende Basistabelle (d. h. base_objects_accessed) zum Generieren der Ansicht. Beispiele hierfür sind Abfragen auf andere Account Usage- und Organization Usage-Ansichten sowie Abfragen auf Basistabellen für Extraktions-, Transformations- und Ladeoperationen (d. h. ETL).

  • Datensätze in der QUERY_HISTORY-Ansicht werden nicht immer in der ACCESS_HISTORY-Ansicht erfasst. Die Struktur der SQL-Anweisung bestimmt, ob Snowflake Datensätze in der ACCESS_HISTORY-Ansicht erfasst.

  • Die Angabe der USING-Klausel beim Abfragen dieser Ansicht kann dazu führen, dass im Feld :code:`direct_objects_accessed` nicht referenzierte Spalten erfasst werden. Ersetzten Sie als Problemumgehung die USING-Klausel durch eine JOIN ... ON ...-Klausel. Weitere Informationen dazu finden Sie unter:

Hinweise zu Leseabfragen

Diese Ansicht unterstützt Lese-Abfragen des folgenden Typs:

  • SELECT, einschließlich CREATE TABLE … AS SELECT (d. h. CTAS).

    • Snowflake erfasst SELECT-Unterabfragen von CTAS-Operationen.

  • CREATE TABLE … CLONE

    • Snowflake erfasst die Quelltabelle in einer CLONE-Operation.

  • COPY INTO … TABLE

    • Snowflake protokolliert diese Abfrage nur dann, wenn die Tabelle in einer FROM-Klausel als Quelle angegeben wird.

  • DML-Operationen, die Daten lesen (z. B. enthalten eine SELECT-Unterabfrage, geben bestimmte Spalten in WHERE oder JOIN an): INSERT … SELECT, UPDATE, DELETE und MERGE.

  • UDFs und Tabellarische SQL-UDFs (UDTFs), wenn Tabellen innerhalb der Funktionen in Abfragen enthalten sind. Dies wird im Feld base_objects_accessed protokolliert.

    Weitere Informationen zu UDFs finden Sie in den Nutzungshinweise zu UDFs (unter diesem Thema).

Hinweise zu Schreiboperationen

Diese Ansicht unterstützt Schreiboperationen des folgenden Typs:

  • GET <interner_Stagingbereich>

  • PUT <interner_Stagingbereich>

  • DELETE

  • TRUNCATE

  • INSERT

    • INSERT INTO … FROM SELECT *

    • INSERT INTO TABLE … VALUES ()

  • MERGE INTO … FROM SELECT *

  • UPDATE

    • UPDATE TABLE … FROM SELECT * FROM …

    • UPDATE TABLE … WHERE …

  • Anweisungen zum Laden von Daten:

    • COPY INTO TABLE FROM internalStage

    • COPY INTO TABLE FROM externalStage

    • COPY INTO TABLE FROM externalLocation

  • Anweisungen zum Entladen von Daten:

    • COPY INTO internalStage FROM TABLE

    • COPY INTO externalStage FROM TABLE

    • COPY INTO externalLocation FROM TABLE

  • CREATE:

    • CREATE DATABASE … CLONE

    • CREATE SCHEMA … CLONE

    • CREATE TABLE … CLONE

    • CREATE TABLE … AS SELECT

  • Bei Schreiboperationen, die die Funktion CASE aufrufen, um die Spalten zu bestimmen, auf die zugegriffen werden soll (z. B. eine CTAS-Anweisung mit der Funktion CASE in der SELECT-Abfrage), werden alle Spalten, auf die in jedem CASE-Zweig verwiesen wird, in der Spalte base_objects_accessed, der Spalte direct_objects_accessed oder in beiden Spalten erfasst, je nachdem, wie die CTAS-Anweisung geschrieben ist.

Hinweise zu Datenfreigaben (Data Sharing)

Wenn ein Data Sharing-Anbieterkonto Objekte für Data Sharing-Verbraucherkonten über eine Freigabe freigibt, gilt Folgendes:

  • Anbieterkonten: Die Abfragen und Protokolle zu den freigegebenen Objekten, die im Anbieterkonto ausgeführt werden, sind für Data Sharing-Verbraucherkonten nicht sichtbar.

  • Verbraucherkonten: Die im Verbraucherkonto ausgeführten Abfragen auf der Datenfreigabe werden protokolliert und sind nur für das Verbraucherkonto sichtbar, nicht aber für das Data Sharing-Anbieterkonto.

    Wenn der Anbieter beispielsweise eine Tabelle und eine aus der Tabelle erstellte Ansicht für das Verbraucherkonto freigibt und eine Abfrage auf der freigegebenen Ansicht ausführt, erfasst Snowflake den Zugriff auf die freigegebene Ansicht in der Spalte base_objects_accessed. Anhand dieses Datensatzes, der die Werte columnName und objectName enthält, kann der Verbraucher erkennen, auf welches Objekt in seinem Konto zugegriffen wurde. Der Anbieter ist nun geschützt, da die zugrunde liegende Tabelle (über die Werte objectId und columnId) dem Verbraucher nicht offengelegt wird.

  • Spaltenherkunft:

    Wenn ein Data-Sharing-Anbieter dem Data-Sharing-Verbraucher eine Ansicht zur Verfügung stellt, sind die Quellspalten der Ansicht für den Verbraucher nicht sichtbar, da die Spalten vom Data-Sharing-Anbieter stammen.

    Wenn der Data Sharing-Verbraucher Daten aus der freigegebenen Ansicht in eine Tabelle verschiebt, erfasst Snowflake die Ansichtsspalten nicht als baseSources der neu erstellten Tabelle.

  • Bei freigegebenen UDFs und UDTFs:

    • Im Verbraucherkonto erfasst die lokale ACCESS_HISTORY-Ansicht die vom Anbieter freigegebene UDF/UDTF, wenn die freigegebene UDF/UDTF vom Verbraucher aufgerufen werden.

    • Im Anbieterkonto erfasst die lokale ACCESS_HISTORY-Ansicht die Nutzung einer freigegebenen UDF/UDTF durch den Anbieter. Benutzern im Verbraucherkonto wird nicht angezeigt, wie das Anbieterkonto die freigegebene UDF/UDTF verwendet.

  • Für die Verfolgung von Richtlinienreferenzen:

    Die Spalte policies_referenced enthält Richtlinien, die für das Konto, das die Daten abfragt, lokal sind.

    Wenn ein Anbieter eine richtliniengeschützte Tabelle freigibt und ein Verbraucher auf diese Tabelle zugreift, kann der Verbraucher die vom Anbieter für die Tabelle oder deren Spalten festgelegte Richtlinie nicht sehen.

    Wenn ein Verbraucher aus dem freigegebenen Objekt eine Ansicht (v1) erstellt, dann eine Richtlinie für die Ansicht (v1) oder eine ihrer Spalten festlegt und nun ein Benutzer im Verbraucherkonto auf die geschützte Ansicht (v1) oder eine andere Ansicht (v2) zugreift, die aus der geschützten Ansicht (v1) erstellt wurde, enthält die Ansicht ACCESS_HISTORY im Verbraucherkonto die Richtlinie, die die Ansicht (v1) und deren Spalten schützt. Der Anbieter kann den Datensatz, der v1 entspricht, nicht sehen.

Hinweise zur Tag-basierten Maskierung

Wenn ein Benutzer auf eine Tabelle oder Ansicht zugreift, die durch eine Tag-basierte Maskierungsrichtlinie geschützt ist, enthält die Spalte policies_referenced die Maskierungsrichtlinie, die über das Tag angewendet wird, wenn Snowflake die Maskierungsrichtlinie für die geschützte Spalte erzwingt.

In der Ansicht ACCESS_HISTORY werden keine Tag-Informationen erfasst.

Nutzungshinweise zu UDFs und gespeicherten Prozeduren

Diese Hinweise gelten für externe Funktionen, UDFs und UDTFs für alle Sprachen, auch wenn diese Funktionen die Eigenschaft SECURE haben, sowie für gespeicherte Prozeduren mit Eigentümer- und Aufruferrechten:

Spaltendetails:

  • Die Spalte direct_objects_accessed erfasst die ausdrückliche Nennung dieser Funktionen und Prozeduren in einer Abfrage.

    Snowflake erfasst in dieser Spalte keine verschachtelten UDFs (d. h. UDFs, die in der Definition einer anderen UDF genannt werden).

  • Die Spalte base_objects_accessed erfasst externe Funktionen, freigegebene Funktionen, Nicht-SQL-UDFs und gespeicherte Prozeduren, die in einer Abfrage aufgerufen werden.

  • Die objects_modified-Spalte erfasst Folgendes:

    • Die UDF/UDTF, wenn das Ergebnis des Aufrufs der Funktion das Ergebnis in eine andere Spalte kopiert.

    • UDF, UDTF und externe Funktion können in den Arrays für baseSources und directSources erfasst werden, je nachdem wie die Abfrage geschrieben ist.

Nicht unterstützt

Diese Ansicht protokolliert nicht den Zugriff folgender Typen:

  • Die von Snowflake bereitgestellten Tabellenfunktionen, Account Usage-Ansichten und Organization Usage-Ansichten.

  • RESULT_SCAN zum Ermitteln vorheriger Ergebnisse.

  • Sequenzen, einschließlich der Generierung neuer Werte.

  • Zwischenansichten, auf die zwischen der Basistabelle und dem direkten Objekt zugegriffen wird.

    Betrachten Sie zum Beispiel eine Abfrage auf View_A mit der folgenden Objektstruktur: View_A » View_B » View_C » Base_Table.

    Die ACCESS_HISTORY-Ansicht erfasst die Abfrage auf Ansicht_A und auf die Basistabelle, aber nicht Ansicht_B und Ansicht_C.

  • Operationen zum Aktualisieren der Streams

  • Verschieben von Daten für Replikation

Nutzungshinweise: Spaltenherkunft

Diese zusätzlichen Hinweise beziehen sich auf die Spaltenherkunft:

Unterstützte Operationen

Die Spaltenherkunft verfolgt Details zu den folgenden SQL-Operationen:

Abfragebedingungen
  • Abfrageprofil/Abfrageplan

    Der von Snowflake geschriebene Abfrageplan bestimmt, ob die Ansicht ACCESS_HISTORY die Spaltenherkunft enthält oder nicht. Wenn eine Spalte als Teil des Abfrageplans ausgewertet werden muss, übernimmt Snowflake die Spalte selbst dann in die Ansicht ACCESS_HISTORY, wenn das Endergebnis des Abfrageplans darin besteht, dass die Spalte nicht im Endergebnis enthalten ist.

    Betrachten Sie beispielsweise die folgende INSERT-Anweisung mit einer WHERE-Klausel für einen bestimmten Spaltenwert:

    insert into a(c1)
    select c2
    from b
    where c3 > 1;
    
    Copy

    Auch wenn die WHERE-Klausel den Wert FALSE ergibt, erfasst Snowflake die Spalte c2 als Quellspalte der Spalte c1. Die Spalte c3 ist weder für baseSources noch für directSources als Quellspalte aufgeführt.

  • Maskierte Spalten:

    • Eine maskierte Spalte wird immer im Feld directSources aufgeführt.

    • Der Datensatz im Feld baseSources hängt von der Definition der Richtlinie ab. Beispiel:

      • Wenn in den Bedingungen der Maskierungsrichtlinie eine CASE-Funktion verwendet wird, werden im Feld baseSources alle Spalten erfasst, auf die in den CASE-Zweigen verwiesen wird.

      • Wenn in den Bedingungen der Maskierungsrichtlinie nur ein konstanter Wert angeben ist (z. B. *****), bleibt das Feld baseSources leer.

  • UDFs:

    • Wenn eine Spalte als Argument an einen UDF übergeben und das Ergebnis in eine andere Spalte geschrieben wird, wird die als Argument übergebene Spalte im Feld directSources erfasst. Beispiel:

      insert into A(col1) select f(col2) from B;
      
      Copy

      In diesem Beispiel erfasst Snowflake col2 im Feld directSources, weil die Spalte ein Argument der UDF mit dem Namen f ist.

    • Der Datensatz im Feld baseSources hängt von der UDF-Definition ab.

Ansichtsspalten

Ansichtspalten gelten nicht als Quellspalten, sodass sie beim Kopieren von Daten aus einer Ansichtsspalte in eine Tabellenspalte nicht im Feld baseSources erfasst. Ansichtsspalten werden in diesem Fall im Feld directSources erfasst.

EXISTS-Unterabfrage

Spalten, auf die in der Klausel der EXISTS-Unterabfrage verwiesen wird, gelten nicht als Quellspalten.

Nutzungshinweise: Spalte object_modified_by_ddl

  • IF [ NOT ] EXISTS-Klausel: Die Spalte object_modified_by_ddl erfasst beim Erstellen oder Ändern eines Objekts nur CREATE oder REPLACE.

  • Snowflake unterstützt die folgenden Objektdomänen:

    • Tabelle und externe Tabelle

    • Ansicht und materialisierte Ansicht

    • Schema

    • Datenbank

Die Spalte erfasst diese Änderungen anhand der folgenden SQL-Operationen. Die Operationen DROP und UNDROP gelten für Tabellen und Ansichten, nicht für Spalten.

CREATE OR REPLACE

ALTER ... { SET | UNSET }

ALTER ... ADD ROW ACCESS POLICY

ALTER ... DROP ROW ACCESS POLICY

ALTER ... DROP ALL ROW ACCESS POLICIES

DROP | UNDROP
Copy

Die folgende Tabelle fasst die Beziehung zwischen DDL-Operationen, unterstützten Domänen und den Eigenschaften der Snowflake-Datensätze zusammen.

Operation

Domäne

Eigenschaften

Anmerkungen

CREATE [ OR REPLACE ]

TABLE | EXTERNAL TABLE | VIEW | MATERIALIZED VIEW

Spaltenname, Spaltenbezeichner

Für die Operationen CREATE DATABASE und CREATE SCHEMA werden keine Eigenschaften erfasst.

CREATE

TABLE … { AS SELECT | USING TEMPLATE | LIKE | CLONE }

Spaltenname, Spaltenbezeichner

Snowflake erfasst die Erstellungsquelle für LIKE- und CLONE-Operationen.

Snowflake erfasst die Erstellungsquelle nicht, wenn das Quellobjekt aus einer Freigabe stammt oder mit der USING TEMPLATE-Klausel erstellt wurde.

ALTER … RENAME TO

ALTER TABLE … RENAME COLUMN

TABLE | VIEW | MATERIALIZED VIEW | DATABASE | SCHEMA

Der neue Name des Objekts oder der Spalte.

ALTER … SWAP WITH

TABLE | SCHEMA | DATABASE

objectName, objectId, objectDomain

Es gibt zwei Datensätze in der Ansicht, einen für jedes Swap-Ziel. Jeder Datensatz enthält denselben Wert für die Abfrage-ID.

ALTER … { ADD | DROP } COLUMN

TABLE

Spaltenname, Spaltenbezeichner und subOperationType-Wert ADD oder DROP.

DROP

TABLE | VIEW | MATERIALIZED VIEW | DATABASE | SCHEMA

Snowflake erfasst keine Eigenschaften zu diesen Operationen.

UNDROP

TABLE | SCHEMA | DATABASE

Snowflake erfasst keine Eigenschaften zu diesen Operationen.