スキーマ:

Data Sharingの更新

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"
}
Copy

ストアドプロシージャ:

{
  "argumentSignature": (function_signature varchar),
  "objectName": "DATABASE_NAME.SCHEMA_NAME.PROCEDURE_NAME"
  "objectID":"12345"
  "objectDomain":"Procedure"
}
Copy

テーブル、ビュー、および列:

[
  {
    "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"
  }
]
Copy

このセクションには、 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;
Copy

コンシューマーごとの時間の経過に伴うアクセスの集計ビュー

この例は 時間の経過に伴うアクセスの集計ビュー に似ており、コンシューマーごとに分類されています。

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;
Copy

列ごとのアクセス数

特定のオブジェクト(テーブル、ビュー)について、各列がアクセスされた回数。

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;
Copy

テーブル結合

テーブルのどの組み合わせが結合されているかのビュー。

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
Copy

コンシューマーごとのテーブル結合

コンシューマーごとに分類された、どのテーブルが結合されているか(ペア)のビュー。

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;
Copy