- 스키마:
LISTING_ACCESS_HISTORY 뷰¶
DATA_SHARING_USAGE 스키마의 이 뷰를 사용해 자신의 계정이 소유한 데이터 공유를 게시하는 목록에 대한 액세스 기록을 탐색할 수 있습니다. LISTING_ACCESS_HISTORY는 목록에서 제공된 데이터 공유에 대해 실행된 쿼리에 대해 세부적인 정보를 제공합니다. LISTING_ACCESS_HISTORY 뷰에서 제공하는 데이터에 대한 자세한 내용은 열 섹션을 참조하십시오.
LISTING_ACCESS_HISTORY에서 반환된 각각의 행은 컨슈머 쿼리에서 데이터 공유에 액세스할 때의 단일 인스턴스를 나타냅니다. 주어진 기간 동안 공유에 액세스한 각 쿼리에 대해 한 행씩 여러 번 똑같은 데이터 공유가 나타날 가능성이 큽니다.
참고
이 뷰에는 애플리케이션 패키지를 데이터 제품으로 포함하는 목록이 표시되지 않습니다.
단일 컨슈머 쿼리가 여러 공유에 액세스할 수 있습니다. QUERY_TOKEN은 목록 액세스 기록에서 행을 생성한 쿼리를 식별합니다. 단일 컨슈머 쿼리에서 다룬 공유 모음을 식별하려면 QUERY_TOKEN을 사용하십시오.
LISTING_ACCESS_HISTORY 뷰에서는 공급자가 실제 쿼리 텍스트와 같은 비공개 컨슈머 정보를 얻을 수 없습니다. 또한 이 뷰에서는 공급자 계정이 소유하지 않은 오브젝트도 모두 제외됩니다. 예를 들어, 컨슈머가 목록의 데이터를 자신의 데이터 또는 다른 공급자의 데이터와 조인하는 경우 LISTING_ACCESS_HISTORY 뷰에서 자신이 소유한 공유만 반환됩니다.
열¶
열 이름 |
데이터 타입 |
설명 |
---|---|---|
QUERY_TOKEN |
VARCHAR |
컨슈머가 실행하는 각 쿼리의 고유 ID입니다. QUERY_TOKEN은 컨슈머 측의 실제 쿼리 식별자와 상관관계가 없습니다. |
QUERY_DATE |
DATE |
쿼리가 실행된 날짜입니다. |
EXCHANGE_NAME |
VARCHAR |
Snowflake Marketplace 또는 목록이 제공되는 데이터 교환입니다. |
SNOWFLAKE_REGION |
VARCHAR |
소비가 발생한 Snowflake 리전입니다. |
LISTING_GLOBAL_NAME |
VARCHAR |
Snowflake Marketplace 또는 공유를 제공하는 데이터 교환에 있는 목록의 전역 이름입니다. |
PROVIDER_ACCOUNT_LOCATOR |
VARCHAR |
공유 소유자의 계정 로케이터입니다. |
PROVIDER_ACCOUNT_NAME |
VARCHAR |
공유 소유자의 계정 이름입니다. |
SHARE_NAME |
VARCHAR |
컨슈머가 액세스한 데이터 공유의 이름입니다. |
CONSUMER_ACCOUNT_LOCATOR |
VARCHAR |
컨슈머의 계정 로케이터입니다. |
CONSUMER_ACCOUNT_NAME |
VARCHAR |
컨슈머의 계정 이름입니다. |
CONSUMER_ACCOUNT_ORGANIZATION |
VARCHAR |
컨슈머 계정의 조직 이름입니다. |
LISTING_OBJECTS_ACCESSED |
ARRAY |
형식은 LISTING_OBJECTS_ACCESSED 배열 섹션을 참조하십시오. |
REGION_GROUP |
VARCHAR |
컨슈머 계정이 있는 리전 그룹 입니다. |
CONSUMER_NAME |
VARCHAR |
목록에 액세스하거나 목록을 사용 또는 요청한 컨슈머 계정의 이름을 포함합니다. 평가판 계정과 같이 사용할 수 있는 이름이 없는 경우 값은 NULL입니다. |
사용법 노트¶
이 뷰에는 애플리케이션 패키지를 데이터 제품으로 포함하는 목록이 표시되지 않습니다.
뷰의 지연 시간은 최대 2일입니다.
데이터는 365일(1년) 동안 보관됩니다.
LISTING_OBJECTS_ACCESSED 배열¶
LISTING_OBJECTS_ACCESSED 배열은 컨슈머 쿼리가 액세스하는 공유의 오브젝트에 대한 세부 정보를 제공합니다. 배열에 있는 항목의 형식은 액세스한 오브젝트의 유형에 따라 다릅니다.
함수:
{
"argumentSignature": (function_signature varchar),
"objectName": "DATABASE_NAME.SCHEMA_NAME.FUNCTION_NAME",
"objectID": "12345",
"objectDomain": "Function"
}
저장 프로시저:
{
"argumentSignature": (function_signature varchar),
"objectName": "DATABASE_NAME.SCHEMA_NAME.PROCEDURE_NAME"
"objectID":"12345"
"objectDomain":"Procedure"
}
테이블, 뷰, 열:
[
{
"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"
}
]
예¶
이 섹션에는 LISTING_ACCESS_HISTORY 뷰에 대한 SQL 쿼리 예제가 수록되어 있습니다.
예:
시간 경과에 따른 액세스 집계 뷰¶
(특정 기간에 걸쳐) 액세스한 함수, 저장 프로시저, 테이블, 뷰, 열 그리고 총 횟수에 대한 집계 뷰입니다.
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;
시간 경과에 따른 컨슈머별 액세스 집계 뷰¶
이 예는 컨슈머별로 분류된 시간 경과에 따른 액세스 집계 뷰 과 유사합니다.
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;
열 기준 액세스 횟수¶
주어진 오브젝트(테이블, 뷰)의 경우, 각 열에 액세스한 횟수입니다.
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;
테이블 조인¶
함께 조인되고 있는 테이블 조합의 뷰입니다.
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
컨슈머별 테이블 조인¶
컨슈머별로 분류되어 함께 조인되고 있는 테이블(페어)의 뷰입니다.
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;