- Schema:
Ansicht LISTING_ACCESS_HISTORY¶
Diese Ansicht im DATA_SHARING_USAGE-Schema kann verwendet werden, um den Zugriffsverlauf für alle Angebote zu untersuchen, die eine Datenfreigabe veröffentlichen, die Ihrem Konto gehört. LISTING_ACCESS_HISTORY liefert detaillierte Informationen zu Abfragen, die auf den Datenfreigaben Ihrer Freigabeangebote ausgeführt wurden. 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 enthält einen einzelnen Zugriff auf eine Datenfreigabe durch eine Verbraucherabfrage. Es ist wahrscheinlich, dass dieselbe Datenfreigabe mehrfach angezeigt wird, denn für jede Abfrage, die in einem bestimmten Zeitraum auf die Freigabe zugegriffen hat, wird eine separate Zeile erstellt.
Bemerkung
In dieser Ansicht werden keine Angebote angezeigt, die ein Anwendungspaket als Datenprodukt enthalten.
Mit einer einzigen Verbraucherabfrage kann auf mehrere Datenfreigaben zugegriffen werden. Anhand des QUERY_TOKEN-Werts kann die Abfrage identifiziert werden, die eine Zeile im Zugriffsverlauf des Freigabeangebots generiert hat. Um alle Freigaben zu identifizieren, auf die von derselben Verbraucherabfrage zugegriffen wurde, verwenden Sie den QUERY_TOKEN-Wert.
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 Freigaben 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. |
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 |
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. |
Nutzungshinweise¶
In dieser Ansicht werden keine Angebote angezeigt, die ein Anwendungspaket als Datenprodukt enthalten.
Die Latenz der Ansicht kann bis zu 2 Tage betragen.
Daten werden 365 Tage (1 Jahr) lang aufbewahrt.
LISTING_OBJECTS_ACCESSED-Array¶
Das LISTING_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"
}
Gespeicherte Prozeduren:
{
"argumentSignature": (function_signature varchar),
"objectName": "DATABASE_NAME.SCHEMA_NAME.PROCEDURE_NAME"
"objectID":"12345"
"objectDomain":"Procedure"
}
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"
}
]
Beispiele¶
Dieser Abschnitt enthält SQL-Beispielabfragen für die Ansicht LISTING_ACCESS_HISTORY.
Beispiele:
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;