スキーマ:

Data Sharingの更新

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年間)保持されます。

SHARE_OBJECTS_ACCESSED 配列

SHARE_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

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

ストアドプロシージャ:

{
  "argumentSignature": (function_signature varchar),
  "objectName": "23662386A408C571B77FDC53691793E4992D1C12.SCHEMA_NAME.PROCEDURE_NAME"
  "objectDomain":"Procedure"
}
Copy

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

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

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