Schéma :

Utilisation de Data Sharing

Vue LISTING_ACCESS_HISTORY

Cette vue dans le schéma DATA_SHARING_USAGE peut être utilisée pour explorer l’historique des accès aux annonces qui publient un partage de données appartenant à votre compte. LISTING_ACCESS_HISTORY fournit des informations granulaires sur les requêtes exécutées sur les partages de données fournis par vos annonces. Pour plus d’informations sur les données fournies par la vue LISTING_ACCESS_HISTORY, voir la section Colonnes.

Chaque ligne renvoyée par LISTING_ACCESS_HISTORY représente un cas unique où un partage de données a été consulté par une requête d’un consommateur. Le même partage de données est susceptible d’apparaître plusieurs fois, une ligne pour chaque requête qui a accédé au partage pendant une période donnée.

Note

Cette vue n’affiche pas les annonces qui incluent un paquet d’application comme produit de données.

Une seule requête d’un consommateur peut accéder à plusieurs partages. Le QUERY_TOKEN identifie la requête qui a généré une ligne dans l’historique d’accès à l’annonce. Pour identifier un ensemble de partages touchés par une seule requête de consommateur, utilisez le QUERY_TOKEN.

La vue LISTING_ACCESS_HISTORY ne permet pas aux fournisseurs d’obtenir des informations privées sur les consommateurs, telles que le texte réel des requêtes. La vue exclut également tous les objets qui ne sont pas détenus par le compte fournisseur. Par exemple, si un consommateur joint les données de votre annonce à ses propres données ou à celles d’un autre fournisseur, seules les actions que vous possédez sont retournées par la vue LISTING_ACCESS_HISTORY.

Colonnes

Nom de la colonne

Type de données

Description

QUERY_TOKEN

VARCHAR

ID unique pour chaque requête exécutée par un consommateur. Un QUERY_TOKEN ne correspond à aucun identificateur de requête réel du côté du consommateur.

QUERY_DATE

DATE

Date à laquelle la requête a été exécutée.

EXCHANGE_NAME

VARCHAR

Snowflake Marketplace ou l’échange de données où l’annonce est disponible.

SNOWFLAKE_REGION

VARCHAR

Snowflake Region où la consommation a eu lieu.

LISTING_GLOBAL_NAME

VARCHAR

Nom global de l’annonce sur Snowflake Marketplace ou l’échange de données qui fournit le partage.

PROVIDER_ACCOUNT_LOCATOR

VARCHAR

Localisateur de compte du propriétaire du partage.

PROVIDER_ACCOUNT_NAME

VARCHAR

Nom du compte du propriétaire du partage.

SHARE_NAME

VARCHAR

Nom du partage de données auquel les consommateurs ont accédé.

CONSUMER_ACCOUNT_LOCATOR

VARCHAR

Localisateur du compte du consommateur.

CONSUMER_ACCOUNT_NAME

VARCHAR

Nom du compte du consommateur.

CONSUMER_ACCOUNT_ORGANIZATION

VARCHAR

Nom de l’organisation du compte du consommateur.

LISTING_OBJECTS_ACCESSED

ARRAY

Voir Tableau LISTING_OBJECTS_ACCESSED pour le formatage.

REGION_GROUP

VARCHAR

Groupe de régions où se trouve le compte du consommateur.

CONSUMER_NAME

VARCHAR

Contient le nom du compte du consommateur qui a accédé à une annonce, qui l’a utilisée ou qui l’a demandée. Si aucun nom n’est disponible, par exemple pour les comptes d’essai, la valeur est NULL.

Notes sur l’utilisation

  • Cette vue n’affiche pas les annonces qui incluent un paquet d’application comme produit de données.

  • La latence de la vue peut atteindre 2 jours.

  • Les données sont conservées pendant 365 jours (1 an).

Tableau LISTING_OBJECTS_ACCESSED

Le tableau LISTING_OBJECTS_ACCESSED fournit des détails sur les objets d’un partage auquel on accède par une requête du consommateur. Le format d’un élément du tableau dépend du type d’objet auquel on a accédé.

Fonctions :

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

Procédures stockées :

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

Tables, vues et colonnes :

[
  {
    "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

Exemples

Cette section contient des exemples de requêtes SQL pour la vue LISTING_ACCESS_HISTORY.

Exemples :

Vue d’ensemble des accès au fil du temps

Une vue d’ensemble des fonctions, procédures stockées, tables, vues et colonnes qui ont été consultées (sur une période donnée) et le nombre total de fois.

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

Vue d’ensemble des accès au fil du temps par consommateur

Cet exemple est similaire à Vue d’ensemble des accès au fil du temps, mais trié par consommateur.

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

Nombre d’accès par colonne

Pour un objet donné (table, vue), nombre d’accès à chaque colonne.

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

Jointures de table

Une vue de la combinaison de tables qui sont jointes ensemble.

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

Jointures de table par consommateur

Une vue des tables qui sont jointes ensemble (paires), réparties par consommateur.

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