Schema:

Nutzung von Data Sharing

Ansicht LISTING_ACCESS_HISTORY

Diese Ansicht im DATA_SHARING_USAGE-Schema kann verwendet werden, um den Nutzungsverlauf Ihrer Freigabeangebote durch die Verbraucher zu untersuchen. LISTING_ACCESS_HISTORY liefert Informationen auf Objektebene zu Abfragen, stellt Informationen auf Objektebene über Abfragen bereit, die für die Datenfreigaben oder Native Apps ausgeführt werden, die mit ihren Datenfreigabeangeboten verknüpft sind.. Weitere Informationen zu den in der LISTING_ACCESS_HISTORY-Ansicht bereitgestellten Daten finden Sie im Abschnitt Spalten.

Jede von LISTING_ACCESS_HISTORY zurückgegebene Zeile steht für einen einzelnen Zugriff auf das Freigabeangebot durch einen Verbraucher. Da es sich bei den Zeilen um Abfragen und nicht um Sitzungen handelt, ist es wahrscheinlich, dass dasselbe Freigabeangebot mehrmals erscheint, eine Zeile für jede Abfrage.

Eine einzige Abfrage kann auf Objekte aus mehreren Freigabeangeboten zugreifen. Anhand des QUERY_TOKEN-Werts kann die Abfrage identifiziert werden, die eine Zeile im Zugriffsverlauf des Freigabeangebots generiert hat. Um eine Sammlung von Freigabeangebotsobjekten zu identifizieren, auf die mit einer einzigen Abfrage zugegriffen wird, verwenden Sie QUERY_TOKEN.

Mit der LISTING_ACCESS_HISTORY-Ansicht erhalten Anbietern allerdings keine privaten Verbraucherinformationen wie z. B. den eigentlichen Abfragetext. Die Ansicht schließt auch alle Objekte aus, die nicht dem Anbieterkonto gehören. Wenn beispielsweise ein Verbraucher Daten aus Ihrem Freigabeangebot mit seinen eigenen Daten oder den Daten eines anderen Anbieters kombiniert, werden in der LISTING_ACCESS_HISTORY-Ansicht nur die Freigabeangebote zurückgegeben, deren Eigentümer Sie sind.

Spalten

Spaltenname

Datentyp

Beschreibung

QUERY_TOKEN

VARCHAR

Eindeutig ID für jede von einem Verbraucher ausgeführte Abfrage. Ein QUERY_TOKEN-Wert korreliert nicht mit den tatsächlichen Abfragebezeichnern auf Verbraucherseite.

QUERY_DATE

DATE

Datum, an dem die Abfrage ausgeführt wurde.

EXCHANGE_NAME

VARCHAR

Snowflake Marketplace oder die Datenbörse (Data Exchange), in dem das Freigabeangebot verfügbar ist.

SNOWFLAKE_REGION

VARCHAR

Snowflake Region, in der die Nutzung stattfand.

LISTING_GLOBAL_NAME

VARCHAR

Globaler Name des Freigabeangebots auf Snowflake Marketplace oder in der Datenbörse (Data Exchange), wo das die Freigabe bereitgestellt wird.

PROVIDER_ACCOUNT_LOCATOR

VARCHAR

Konto-Locator des Eigentümers der Freigabe.

PROVIDER_ACCOUNT_NAME

VARCHAR

Kontoname des Eigentümers der Freigabe.

SHARE_NAME

VARCHAR

Name der Datenfreigabe, auf die die Verbraucher zugegriffen haben. Wenn IS_SHARE gleich FALSE ist, lautet der Wert NULL.

CONSUMER_ACCOUNT_LOCATOR

VARCHAR

Konto-Locator des Verbrauchers.

CONSUMER_ACCOUNT_NAME

VARCHAR

Kontoname des Verbrauchers.

CONSUMER_ACCOUNT_ORGANIZATION

VARCHAR

Name der Organisation des Verbraucherkontos.

LISTING_OBJECTS_ACCESSED

ARRAY

Verwenden Sie SHARE_OBJECTS_ACCESSED, da es dieselben Daten enthält. Wenn IS_SHARE gleich FALSE ist, lautet der Wert NULL. Weitere Informationen zur Formatierung finden Sie unter LISTING_OBJECTS_ACCESSED-Array.

REGION_GROUP

VARCHAR

Regionsgruppe, in der sich das Konto des Verbrauchers befindet.

CONSUMER_NAME

VARCHAR

Enthält den Namen des Verbraucherkontos, das auf ein Freigabeangebot zugegriffen oder dieses genutzt oder angefordert hat. Wenn kein Name verfügbar ist, wie z. B. bei Testkonten, ist der Wert NULL.

IS_SHARE

BOOLEAN

TRUE, wenn der Zugriff über eine Freigabe erfolgte. Wenn Sie TRUE wählen, finden Sie in der Spalte SHARE_OBJECTS_ACCESSED Details zu den Freigabeobjekten, auf die die Abfrage der Verbraucher zugreift.

IS_APPLICATION

BOOLEAN

TRUE, wenn der Zugriff über eine Anwendung erfolgte. Bei TRUE enthält die Spalte APPLICATION_OBJECTS_ACCESSED Details zu den Anwendungsobjekten, auf die die Verbraucherabfrage zugreift.

SHARE_OBJECTS_ACCESSED

ARRAY

Detaillierte Angaben zu den Freigabeobjekten, auf die die Abfrage der Verbraucher zugreift Wenn IS_SHARE gleich FALSE ist, lautet der Wert NULL. Weitere Informationen zur Formatierung finden Sie unter SHARE_OBJECTS_ACCESSED-Array.

APPLICATION_OBJECTS_ACCESSED

ARRAY

Detaillierte Angaben zu den Anwendungsobjekten, auf die die Verbraucherabfrage zugreift. Wenn IS_APPLICATION gleich FALSE ist, lautet der Wert NULL. Siehe APPLICATION_OBJECTS_ACCESSED-Array.

APPLICATION_PACKAGE_NAME

VARCHAR

Der aktuelle Name des Anwendungspakets, aus dem die Anwendung installiert wurde. Wenn IS_APPLICATION gleich FALSE ist, lautet der Wert NULL.

APPLICATION_VERSION

VARCHAR

Die Version der Anwendung zum Zeitpunkt der Abfrage. Wenn IS_APPLICATION FALSE ist, ist der Wert NULL

APPLICATION_PATCH_ID

INTEGER

Die Patchnummer der Anwendung zum Zeitpunkt der Abfrage. Wenn IS_APPLICATION gleich FALSE ist, lautet der Wert NULL.

Nutzungshinweise

  • Die Latenz der Ansicht kann bis zu 2 Tage betragen.

  • Daten werden 365 Tage (1 Jahr) lang aufbewahrt.

SHARE_OBJECTS_ACCESSED-Array

Das SHARE_OBJECTS_ACCESSED-Array enthält Details zu den Objekten einer Freigabe, auf die eine Verbraucherabfrage zugreift. Das Format eines Elements im Array hängt vom Typ des Objekts ab, auf das zugegriffen wurde.

Funktionen:

{
  "argumentSignature": (function_signature varchar),
  "objectName": "DATABASE_NAME.SCHEMA_NAME.FUNCTION_NAME",
  "objectID": "12345",
  "objectDomain": "Function"
}
Copy

Gespeicherte Prozeduren:

{
  "argumentSignature": (function_signature varchar),
  "objectName": "DATABASE_NAME.SCHEMA_NAME.PROCEDURE_NAME"
  "objectID":"12345"
  "objectDomain":"Procedure"
}
Copy

Tabellen, Ansichten und Spalten:

[
  {
    "Columns": [
      {
        "columnId": ######,
        "columnName": "column1_name"
      },
      {
        "columnId": ######,
        "columnName": "column2_name"
      }
    ],
    "objectDomain":"VIEW",
    "objectId": ##view_id##,
    "objectName": "DATABASE_1.PUBLIC.VIEW_1"
  },
  {
    "Columns": [
      {
        "columnId": ######,
        "columnName": "column3_name"
      },
      {
        "columnId": ######,
        "columnName": "column4_name"
      }
    ],
    "objectDomain":"TABLE",
    "objectId": ##table_id##,
    "objectName": "DATABASE_2.PUBLIC.TABLE1"
  }
]
Copy

APPLICATION_OBJECTS_ACCESSED-Array

Das Array APPLICATION_OBJECTS_ACCESSED liefert Details zu den Objekten in einer Native App, auf die eine Verbraucherabfrage zugreift. Das Format eines Elements im Array hängt vom Typ des Objekts ab, auf das zugegriffen wurde.

Im Gegensatz zu den Ergebnissen des Arrays der Spalte LISTING_OBJECTS_ACCESSED sind die Ergebnisse von APPLICATION_OBJECTS_ACCESSED, die die Objekt-IDs enthalten, nicht verfügbar und die Namen der Datenbanken sind maskiert.

Funktionen:

{
  "argumentSignature": (function_signature varchar),
  "objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.FUNCTION_NAME",
  "objectDomain": "Function"
}
Copy

Gespeicherte Prozeduren:

{
  "argumentSignature": (function_signature varchar),
  "objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.PROCEDURE_NAME"
  "objectDomain":"Procedure"
}
Copy

Tabellen, Ansichten und Spalten:

[
  {
    "Columns": [
      {
        "columnName": "column1_name"
      },
      {
        "columnName": "column2_name"
      }
    ],
    "objectDomain":"VIEW",
    "objectName": "5F3297829072D2E23B852D7787825FF762E74EF3.PUBLIC.VIEW_1"
  },
  {
    "Columns": [
      {
        "columnName": "column3_name"
      },
      {
        "columnName": "column4_name"
      }
    ],
    "objectDomain":"TABLE",
    "objectName": "D85A2CE1531C6C1E077FA701713047305BDF5A83.PUBLIC.TABLE1"
  }
]
Copy

LISTING_OBJECTS_ACCESSED-Array

Verwenden Sie stattdessen SHARE_OBJECTS_ACCESSED Array.

Beispiele

Dieser Abschnitt enthält die folgenden SQL-Beispielabfragen für die Ansicht LISTING_ACCESS_HISTORY:

Aggregierte Ansicht des Zugriffs im Zeitverlauf

Eine aggregierte Ansicht der Funktionen, gespeicherten Prozeduren, Tabellen, Ansichten und Spalten, auf die (innerhalb eines bestimmten Zeitraums) zugegriffen wurde, sowie die Gesamtzahl der Zugriffe.

select
  lah.exchange_name,
  lah.listing_global_name,
  lah.share_name,
  los.value:"objectName"::string as object_name,
  coalesce(los.value:"objectDomain"::string, los.value:"objectDomain"::string) as object_type,
  count(distinct lah.query_token) as n_queries,
  count(distinct lah.consumer_account_locator) as n_distinct_consumer_accounts
from SNOWFLAKE.DATA_SHARING_USAGE.LISTING_ACCESS_HISTORY as lah
join lateral flatten(input=>lah.listing_objects_accessed) as los
where true
  and query_date between '2022-03-01' and '2022-04-30'
group by 1,2,3,4,5
order by 1,2,3,4,5;
Copy

Aggregierte Ansicht des Zugriffs im Zeitverlauf nach Verbraucher

Dieses Beispiel ist ähnlich wie Aggregierte Ansicht des Zugriffs im Zeitverlauf, nur aufgeschlüsselt nach Verbrauchern.

select
  lah.exchange_name,
  lah.listing_global_name,
  lah.share_name,
  los.value:"objectName"::string as object_name,
  coalesce(los.value:"objectDomain"::string, los.value:"objectDomain"::string) as object_type,
  consumer_account_locator,
  count(distinct lah.query_token) as n_queries
from SNOWFLAKE.DATA_SHARING_USAGE.LISTING_ACCESS_HISTORY as lah
join lateral flatten(input=>lah.listing_objects_accessed) as los
where true
  and query_date between '2022-03-01' and '2022-04-30'
group by 1,2,3,4,5,6
order by 1,2,3,4,5,6;
Copy

Anzahl der Zugriffe nach Spalte

Häufigkeit, mit der bei einem bestimmten Objekt (Tabelle, View) auf jede Spalte zugegriffen wurde.

select
  los.value:"objectDomain"::string as object_type,
  los.value:"objectName"::string as object_name,
  cols.value:"columnName"::string as column_name,
  count(distinct lah.query_token) as n_queries,
  count(distinct lah.consumer_account_locator) as n_distinct_consumer_accounts
from SNOWFLAKE.DATA_SHARING_USAGE.LISTING_ACCESS_HISTORY as lah
join lateral flatten(input=>lah.listing_objects_accessed) as los
join lateral flatten(input=>los.value, path=>'columns') as cols
where true
  and los.value:"objectDomain"::string in ('Table', 'View')
  and query_date between '2022-03-01' and '2022-04-30'
  and los.value:"objectName"::string = 'DATABASE_NAME.SCHEMA_NAME.TABLE_NAME'
  and lah.consumer_account_locator = 'CONSUMER_ACCOUNT_LOCATOR'
group by 1,2,3;
Copy

Tabellenverknüpfungen (Joins)

Eine Übersicht darüber, welche Kombinationen von Tabellen miteinander verknüpft werden.

with
accesses as (
  select
    lah.query_token,
    array_agg(distinct los.value:"objectName"::string) as object_names
  from SNOWFLAKE.DATA_SHARING_USAGE.LISTING_ACCESS_HISTORY as lah
  join lateral flatten(input=>lah.listing_objects_accessed) as los
  where true
    and los.value:"objectDomain"::string in ('Table', 'View')
    and query_date between '2022-03-01' and '2022-04-30'
  group by 1
)
select
  object_names,
  sum(1) as n_queries
from accesses
group by 1
Copy

Tabellenverknüpfungen (Joins) nach Verbraucher

Eine nach Verbrauchern aufgeschlüsselte Übersicht über die Tabellen, die paarweise miteinander verknüpft sind.

with
accesses as (
  select distinct
    los.value:"objectDomain"::string as object_type,
    los.value:"objectName"::string as object_name,
    lah.query_token,
    lah.consumer_account_locator
  from SNOWFLAKE.DATA_SHARING_USAGE.LISTING_ACCESS_HISTORY as lah
  join lateral flatten(input=>lah.listing_objects_accessed) as los
  where true
    and los.value:"objectDomain"::string in ('Table', 'View')
    and query_date between '2022-03-01' and '2022-04-30'
)
select
  a1.object_name as object_name_1,
  a2.object_name as object_name_2,
  a1.consumer_account_locator as consumer_account_locator,
  count(distinct a1.query_token) as n_queries
from accesses as a1
join accesses as a2
  on a1.query_token = a2.query_token
  and a1.object_name < a2.object_name
group by 1,2,3;
Copy