- 스키마:
LISTING_ACCESS_HISTORY 뷰¶
DATA_SHARING_USAGE 스키마의 이 뷰는 컨슈머가 내 목록을 사용한 기록을 탐색하는 데 사용할 수 있습니다. LISTING_ACCESS_HISTORY는 목록에 연결된 데이터 공유나 Native App에 대해 실행되는 쿼리에 대한 오브젝트 수준 정보를 제공합니다. 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 |
컨슈머가 액세스한 데이터 공유의 이름입니다. IS_SHARE가 FALSE인 경우 값은 NULL입니다. |
CONSUMER_ACCOUNT_LOCATOR |
VARCHAR |
컨슈머의 계정 로케이터입니다. |
CONSUMER_ACCOUNT_NAME |
VARCHAR |
컨슈머의 계정 이름입니다. |
CONSUMER_ACCOUNT_ORGANIZATION |
VARCHAR |
컨슈머 계정의 조직 이름입니다. |
LISTING_OBJECTS_ACCESSED |
ARRAY |
SHARE_OBJECTS_ACCESSED는 동일한 데이터를 포함하고 있으므로 이를 사용합니다. IS_SHARE가 FALSE인 경우 값은 NULL입니다. 형식은 LISTING_OBJECTS_ACCESSED 배열 섹션을 참조하십시오. |
REGION_GROUP |
VARCHAR |
컨슈머 계정이 있는 리전 그룹 입니다. |
CONSUMER_NAME |
VARCHAR |
목록에 액세스하거나 목록을 사용 또는 요청한 컨슈머 계정의 이름을 포함합니다. 평가판 계정과 같이 사용할 수 있는 이름이 없는 경우 값은 NULL입니다. |
IS_SHARE |
BOOLEAN |
공유를 통해 액세스할 경우 TRUE. TRUE인 경우 SHARE_OBJECTS_ACCESSED 열은 컨슈머 쿼리에서 액세스한 공유 오브젝트에 대한 세부 정보를 제공합니다. |
IS_APPLICATION |
BOOLEAN |
애플리케이션을 통해 액세스할 경우 TRUE. TRUE인 경우, APPLICATION_OBJECTS_ACCESSED 열은 컨슈머 쿼리에서 액세스한 애플리케이션 오브젝트에 대한 세부 정보를 제공합니다. |
SHARE_OBJECTS_ACCESSED |
ARRAY |
컨슈머 쿼리를 통해 액세스하는 공유 오브젝트를 자세히 설명합니다. IS_SHARE가 FALSE인 경우 값은 NULL입니다. 형식은 SHARE_OBJECTS_ACCESSED 배열 섹션을 참조하십시오. |
APPLICATION_OBJECTS_ACCESSED |
ARRAY |
컨슈머 쿼리를 통해 액세스하는 애플리케이션 오브젝트를 자세히 설명합니다. IS_APPLICATION이 FALSE인 경우 값은 NULL입니다. APPLICATION_OBJECTS_ACCESSED 배열 섹션을 참조하십시오. |
APPLICATION_PACKAGE_NAME |
VARCHAR |
애플리케이션이 설치된 애플리케이션 패키지의 현재 이름입니다. IS_APPLICATION이 FALSE인 경우 값은 NULL입니다. |
APPLICATION_VERSION |
VARCHAR |
쿼리가 발생한 시점의 애플리케이션 버전입니다. IS_APPLICATION이 FALSE인 경우 값은 NULL입니다. |
APPLICATION_PATCH_ID |
INTEGER |
쿼리가 발생한 시점의 애플리케이션 패치 번호입니다. IS_APPLICATION이 FALSE인 경우 값은 NULL입니다. |
사용법 노트¶
뷰의 지연 시간은 최대 2일입니다.
데이터는 365일(1년) 동안 보관됩니다.
APPLICATION_OBJECTS_ACCESSED 배열¶
APPLICATION_OBJECTS_ACCESSED 배열은 컨슈머 쿼리가 액세스하는 Native App의 오브젝트에 대한 세부 정보를 제공합니다. 배열에 있는 항목의 형식은 액세스한 오브젝트의 유형에 따라 다릅니다.
LISTING_OBJECTS_ACCESSED 열 배열 결과와 달리, 오브젝트 ID를 포함하는 APPLICATION_OBJECTS_ACCESSED 결과는 사용할 수 없으며 데이터베이스 이름이 마스킹됩니다.
함수:
{
"argumentSignature": (function_signature varchar),
"objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.FUNCTION_NAME",
"objectDomain": "Function"
}
저장 프로시저:
{
"argumentSignature": (function_signature varchar),
"objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.PROCEDURE_NAME"
"objectDomain":"Procedure"
}
테이블, 뷰, 열:
[
{
"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"
}
]
LISTING_OBJECTS_ACCESSED 배열¶
대신 SHARE_OBJECTS_ACCESSED 배열 을 사용합니다.
예¶
이 섹션에는 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;