Esquema:

Uso de Data Sharing

Exibição LISTING_ACCESS_HISTORY

Esta exibição no esquema DATA_SHARING_USAGE pode ser usada para explorar o histórico de acesso para listagens que publicam um compartilhamento de dados de propriedade de sua conta. LISTING_ACCESS_HISTORY fornece informações granulares sobre as consultas executadas em compartilhamentos de dados fornecidos por suas listagens. Para obter mais informações sobre os dados fornecidos pela exibição LISTING_ACCESS_HISTORY, consulte a seção Colunas.

Cada linha retornada por LISTING_ACCESS_HISTORY representa uma única instância quando um compartilhamento de dados foi acessado por uma consulta do consumidor. É provável que o mesmo compartilhamento de dados apareça várias vezes, uma linha para cada consulta que acessou o compartilhamento em um determinado período.

Nota

Esta exibição não mostra listagens que incluem um pacote de aplicativo como produto de dados.

Uma única consulta do consumidor pode acessar várias ações. O QUERY_TOKEN identifica a consulta que gerou uma linha no histórico de acesso à listagem. Para identificar uma coleção de compartilhamentos alcançada por uma única consulta do consumidor, use o QUERY_TOKEN.

A exibição LISTING_ACCESS_HISTORY não permite que os provedores obtenham qualquer informação privada do consumidor, como o texto real das consultas. A exibição também exclui quaisquer objetos que não sejam de propriedade da conta do provedor. Por exemplo, se um consumidor faz a junção de dados de sua listagem com seus próprios dados ou dados de outro provedor, apenas as ações de sua propriedade são retornadas pela exibição LISTING_ACCESS_HISTORY.

Colunas

Nome da coluna

Tipo de dados

Descrição

QUERY_TOKEN

VARCHAR

ID Única para cada consulta realizada por um consumidor. O QUERY_TOKEN não se correlaciona com nenhum identificador de consulta real no lado do consumidor.

QUERY_DATE

DATE

Data em que a consulta foi executada.

EXCHANGE_NAME

VARCHAR

Snowflake Marketplace ou a troca de dados em que a listagem está disponível.

SNOWFLAKE_REGION

VARCHAR

Snowflake Region onde ocorreu o consumo.

LISTING_GLOBAL_NAME

VARCHAR

Nome global da listagem no Snowflake Marketplace ou troca de dados que fornece o compartilhamento.

PROVIDER_ACCOUNT_LOCATOR

VARCHAR

Localizador de conta do titular do compartilhamento.

PROVIDER_ACCOUNT_NAME

VARCHAR

Nome da conta do titular do compartilhamento.

SHARE_NAME

VARCHAR

Nome do compartilhamento de dados que os consumidores acessaram.

CONSUMER_ACCOUNT_LOCATOR

VARCHAR

Localizador de conta do consumidor.

CONSUMER_ACCOUNT_NAME

VARCHAR

Nome da conta do consumidor.

CONSUMER_ACCOUNT_ORGANIZATION

VARCHAR

Nome da organização para a conta do consumidor.

LISTING_OBJECTS_ACCESSED

ARRAY

Consulte Matriz LISTING_OBJECTS_ACCESSED para formatação.

REGION_GROUP

VARCHAR

Grupo de regiões onde se encontra a conta do consumidor.

CONSUMER_NAME

VARCHAR

Contém o nome da conta do consumidor que acessou, usou ou solicitou uma listagem. Se nenhum nome estiver disponível, como para contas de teste, o valor será NULL.

Notas de uso

  • Esta exibição não mostra listagens que incluem um pacote de aplicativo como produto de dados.

  • A latência da visualização pode ser de até 2 dias.

  • Os dados são retidos por 365 dias (1 ano).

Matriz LISTING_OBJECTS_ACCESSED

A matriz LISTING_OBJECTS_ACCESSED fornece detalhes sobre os objetos de uma ação acessados por uma consulta do consumidor. O formato de um item da matriz depende do tipo de objeto que foi acessado.

Funções:

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

Procedimentos armazenados:

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

Tabelas, exibições e colunas:

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

Exemplos

Esta seção contém exemplos de consultas SQL para a exibição LISTING_ACCESS_HISTORY.

Exemplos:

Exibição agregada do acesso ao longo do tempo

Uma exibição agregada de quais funções, procedimentos armazenados, tabelas, exibições e colunas foram acessados (durante um determinado período) e o número total de vezes.

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

Exibição agregada do acesso ao longo do tempo por consumidor

Este exemplo é semelhante ao Exibição agregada do acesso ao longo do tempo, discriminado por consumidor.

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

Contagem de acesso por coluna

Para um determinado objeto (tabela, exibição), quantas vezes cada coluna foi acessada.

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

Junções de tabela

Uma exibição de qual combinação de tabelas está sendo unida.

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

Junções de tabela por consumidor

Uma exibição de quais tabelas estão sendo unidas (pares), discriminadas por consumidor.

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