- Esquema:
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 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"
}
Procedimentos armazenados:
{
"argumentSignature": (function_signature varchar),
"objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.PROCEDURE_NAME"
"objectDomain":"Procedure"
}
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"
}
]
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;
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;
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;
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
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;