- Schema:
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.
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"
}
Gespeicherte Prozeduren:
{
"argumentSignature": (function_signature varchar),
"objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.PROCEDURE_NAME"
"objectDomain":"Procedure"
}
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"
}
]
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;
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;
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;
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
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;