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 de l’utilisation de vos annonces par les consommateurs. LISTING_ACCESS_HISTORY fournit des informations au niveau de l’objet sur les requêtes exécutées sur les partages de données ou les Native Apps attachées à 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 une seule fois où un consommateur a accédé à l’annonce. Comme les lignes représentent des requêtes plutôt que des sessions, il est probable que la même annonce apparaisse plusieurs fois, une ligne pour chaque requête.

Une seule requête de consommateur peut accéder à des objets provenant de plusieurs annonces. Le QUERY_TOKEN identifie la requête qui a généré une ligne dans l’historique d’accès à l’annonce. Pour identifier une collection d’objets d’annonce à laquelle une seule requête de consommateur accède, 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, seuls les objets d’annonce que vous possédez sont retournés 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é. Quand IS_SHARE est FALSE, la valeur est NULL.

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

Utilisez SHARE_OBJECTS_ACCESSED car il contient les mêmes données. Quand IS_SHARE est FALSE, la valeur est NULL. 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.

IS_SHARE

BOOLEAN

TRUE si l’accès était sur un partage. Quand TRUE, la colonne SHARE_OBJECTS_ACCESSED fournit des détails sur les objets de partage auxquels accède la requête du consommateur.

IS_APPLICATION

BOOLEAN

TRUE si l’accès était sur une application. Quand TRUE, la colonne APPLICATION_OBJECTS_ACCESSED fournit des détails sur les objets d’application auxquels accède la requête du consommateur.

SHARE_OBJECTS_ACCESSED

ARRAY

Détaille les objets de partage auxquels accède la requête du consommateur. Quand IS_SHARE est FALSE, la valeur est NULL. Voir Tableau SHARE_OBJECTS_ACCESSED pour le formatage.

APPLICATION_OBJECTS_ACCESSED

ARRAY

Détaille les objets d’application auxquels accède la requête du consommateur. Quand IS_APPLICATION est FALSE, la valeur est NULL. Voir Tableau APPLICATION_OBJECTS_ACCESSED.

APPLICATION_PACKAGE_NAME

VARCHAR

Le nom actuel du paquet d’application à partir duquel l’application a été installée. Quand IS_APPLICATION est FALSE, la valeur est NULL.

APPLICATION_VERSION

VARCHAR

La version de l’application lorsque la requête a eu lieu. Quand IS_APPLICATION est FALSE, la valeur est NULL

APPLICATION_PATCH_ID

INTEGER

Le numéro de correctif de l’application lorsque la requête a eu lieu. Quand IS_APPLICATION est FALSE, la valeur est NULL.

Notes sur l’utilisation

  • La latence de la vue peut atteindre 2 jours.

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

Tableau SHARE_OBJECTS_ACCESSED

Le tableau SHARE_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

Tableau APPLICATION_OBJECTS_ACCESSED

Le tableau APPLICATION_OBJECTS_ACCESSED fournit des détails sur les objets d’une Native App à laquelle accède une requête du consommateur. Le format d’un élément du tableau dépend du type d’objet auquel on a accédé.

Contrairement aux résultats du tableau de colonnes LISTING_OBJECTS_ACCESSED, les résultats APPLICATION_OBJECTS_ACCESSED contenant les IDs d’objet ne sont pas disponibles et les noms de bases de données sont masqués.

Fonctions :

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

Procédures stockées :

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

Tables, vues et colonnes :

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

Tableau LISTING_OBJECTS_ACCESSED

Utilisez un tableau SHARE_OBJECTS_ACCESSED à la place.

Exemples

Cette section contient les exemples de requêtes SQL suivants pour la vue LISTING_ACCESS_HISTORY :

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