- スキーマ:
LISTING_ACCESS_HISTORY ビュー¶
DATA_SHARING_USAGE スキーマのこのビューを使用して、アカウントが所有するデータ共有を公開するリストのアクセス履歴を調べることができます。LISTING_ACCESS_HISTORY は、リストによって提供されたデータ共有に対して実行されたクエリに関する詳細な情報を提供します。LISTING_ACCESS_HISTORY ビューによって提供されるデータの詳細については、 列 セクションをご参照ください。
LISTING_ACCESS_HISTORY によって返される各行は、コンシューマークエリによってデータ共有にアクセスされたときの単一のインスタンスを表します。同じデータ共有が複数回表示される可能性があります。特定の期間に共有にアクセスしたクエリごとに1行です。
注釈
このビューには、データ製品としてアプリケーションパッケージを含むリストは表示されません。
単一のコンシューマークエリで複数の共有にアクセスできます。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;