Esquema:

Uso de Data Sharing

Exibição LISTING_ACCESS_HISTORY

Essa exibição no esquema DATA_SHARING_USAGE pode ser usada para explorar o histórico de uso de suas listagens pelos consumidores. LISTING_ACCESS_HISTORY fornece informações em nível de objeto sobre consultas executadas nos compartilhamentos de dados ou Native Apps anexados às 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 vez que a listagem foi acessada por um consumidor. Como as linhas representam consultas em vez de sessões, é provável que a mesma listagem apareça várias vezes, uma linha para cada consulta.

Uma única consulta do consumidor pode acessar objetos de várias listagens. O QUERY_TOKEN identifica a consulta que gerou uma linha no histórico de acesso à listagem. Para identificar uma coleção de objetos de listagem acessados 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 unir dados de sua listagem com seus próprios dados ou com dados de outro provedor, somente os objetos de listagem que você possui serão retornados 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. Quando IS_SHARE é FALSE, o valor é NULL.

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

Use SHARE_OBJECTS_ACCESSED visto que ele contém os mesmos dados. Quando IS_SHARE é FALSE, o valor é NULL. 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.

IS_SHARE

BOOLEAN

TRUE se o acesso estivesse em um compartilhamento. Quando TRUE, a coluna SHARE_OBJECTS_ACCESSED fornece detalhes sobre os objetos compartilhados acessados pela consulta do consumidor.

IS_APPLICATION

BOOLEAN

TRUE se o acesso foi em um aplicativo. Quando TRUE, a coluna APPLICATION_OBJECTS_ACCESSED fornece detalhes sobre os objetos do aplicativo acessados pela consulta do consumidor.

SHARE_OBJECTS_ACCESSED

ARRAY

Detalha os objetos compartilhados acessados pela consulta do consumidor. Quando IS_SHARE é FALSE, o valor é NULL. Consulte Matriz SHARE_OBJECTS_ACCESSED para formatação.

APPLICATION_OBJECTS_ACCESSED

ARRAY

Detalha os objetos do aplicativo acessados pela consulta do consumidor. Quando IS_APPLICATION é FALSE, o valor é NULL. Consulte Matriz APPLICATION_OBJECTS_ACCESSED.

APPLICATION_PACKAGE_NAME

VARCHAR

O nome atual do pacote do aplicativo a partir do qual o aplicativo foi instalado. Quando IS_APPLICATION é FALSE, o valor é NULL.

APPLICATION_VERSION

VARCHAR

A versão do aplicativo quando a consulta ocorreu. Quando IS_APPLICATION é FALSE, o valor é NULL.

APPLICATION_PATCH_ID

INTEGER

O número do patch do aplicativo quando a consulta ocorreu. Quando IS_APPLICATION é FALSE, o valor é NULL.

Notas de uso

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

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

Matriz SHARE_OBJECTS_ACCESSED

A matriz SHARE_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

Matriz APPLICATION_OBJECTS_ACCESSED

A matriz APPLICATION_OBJECTS_ACCESSED fornece detalhes sobre os objetos em um Native App acessados por uma consulta do consumidor. O formato de um item da matriz depende do tipo de objeto que foi acessado.

Diferentemente dos resultados da matriz de colunas LISTING_OBJECTS_ACCESSED, os resultados de APPLICATION_OBJECTS_ACCESSED com IDs de objeto não estão disponíveis e os nomes dos banco de dados são mascarados.

Funções:

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

Procedimentos armazenados:

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

Tabelas, exibições e colunas:

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

Matriz LISTING_OBJECTS_ACCESSED

Em vez disso, use a matriz SHARE_OBJECTS_ACCESSED.

Exemplos

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

Exibição de agregação do acesso ao longo do tempo

Uma exibição de agregação das quais funções, procedimentos armazenados, tabelas, visualizaçõ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 de agregação do acesso ao longo do tempo por consumidor

Este exemplo é semelhante ao Exibição de agregação 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