- スキーマ:
LISTING_ACCESS_HISTORY ビュー¶
DATA_SHARING_USAGE スキーマのビューを使用して、顧客によるリストの使用状況の履歴を調べることができます。LISTING_ACCESS_HISTORY では、リストにアタッチされたデータ共有またはNative Appsに対して実行されたクエリに関する情報をオブジェクトレベルで確認できます。LISTING_ACCESS_HISTORY ビューによって提供されるデータの詳細については、 列 セクションをご参照ください。
LISTING_ACCESS_HISTORY から返される各行は、コンシューマーがリストにアクセスした1回を表します。各行はセッションではなく各クエリを表すため、同じリストが複数回表示されるのが普通です。
1つのコンシューマークエリで、複数のリストからオブジェクトにアクセスできます。QUERY_TOKEN は、リストのアクセス履歴に行を生成したクエリを識別します。1つのコンシューマークエリによってアクセスされるリストオブジェクトのコレクションを識別するには、 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 列の配列の結果とは異なり、オブジェクト IDs を含む 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;