SHOW ICEBERG TABLES

アクセス権限のある Apache Iceberg™ テーブル をリストします。

このコマンドを使用して、現在の/指定されたデータベースまたはスキーマの、またはアカウント全体のIcebergテーブルを一覧表示できます。

このコマンドは SHOW TABLES とは異なる出力列を返します。出力は、データベース、スキーマ、およびIcebergテーブル名の辞書順に並べられたIcebergテーブルのメタデータとプロパティを返します(出力列の説明については、このトピックの 出力 を参照)。提供されたフィルターを使用して結果をフィルターする場合には、これに注意することが重要です。

このトピックでは、 Iceberg tables と指定することで混乱を避ける場合を除き、Icebergテーブルを単に「テーブル」と呼ぶことに注意してください。

こちらもご参照ください。

CREATE ICEBERG TABLE , DROP ICEBERG TABLE , DESCRIBE ICEBERG TABLE , ALTER ICEBERG TABLE , SHOW TABLES

構文

SHOW [ TERSE ] [ ICEBERG ] TABLES [ LIKE '<pattern>' ]
                                  [ IN
                                        {
                                          ACCOUNT                  |

                                          DATABASE                 |
                                          DATABASE <database_name> |

                                          SCHEMA                   |
                                          SCHEMA <schema_name>     |
                                          <schema_name>
                                        }
                                  ]
                                  [ STARTS WITH '<name_string>' ]
                                  [ LIMIT <rows> [ FROM '<name_string>' ] ]

パラメーター

TERSE

オプションで、出力列のサブセットのみを返します。

  • created_on

  • name

  • kind

    kind 列の値は常に ICEBERG TABLE です。

  • database_name

  • schema_name

デフォルト:値なし(出力にすべての列を含む)

ICEBERG

Icebergテーブルのみを返します。

LIKE 'pattern'

オプションで、オブジェクト名でコマンド出力をフィルタリングします。フィルターは、 SQL ワイルドカード文字(% および _)をサポートする、 大文字と小文字を区別しない パターンマッチングを使用します。

たとえば、次のパターンは 同じ 結果を返します。

... LIKE '%testing%' ...
... LIKE '%TESTING%' ...

. デフォルト: 値なし(フィルタリングは出力に非適用)。

[ IN ... ]

オプションで、コマンドのスコープを指定します。次のいずれかを指定します。

ACCOUNT

アカウント全体の記録を返します。

DATABASE、 . DATABASE db_name

現在使用中のデータベースまたは指定されたデータベース(db_name)の記録を返します。

db_name なしで DATABASE を指定し、かつデータベースが使用されていない場合、キーワードは出力に影響しません。

注釈

データベースコンテキストで IN 句を指定せずに SHOW コマンドを使用すると、予想よりも少ない結果になる可能性があります。

IN 句を使用しない場合、同じ名前のオブジェクトは一度だけ表示されます。例えば、 schema1 にテーブル t1 、そして schema2 にテーブル t1 があり、両方とも指定したデータベースコンテキストのスコープ内にある場合(つまり、選択したデータベースが schema1 と schema2 の親である場合)の場合、 SHOW TABLES は t1 テーブルの1つのみを表示します。

SCHEMA、 . SCHEMA schema_name

現在使用中のスキーマまたは指定されたスキーマ(schema_name)の記録を返します。

データベースが使用中の場合、または完全修飾 schema_name (例: db.schema) を指定する場合、 SCHEMA はオプションです。

データベースが使用されていない場合は、 SCHEMA を指定しても出力には影響しません。

IN ... を省略した場合、コマンドのスコープは、セッションで現在使用中のデータベースがあるかどうかによって異なります。

  • データベースが現在使用中の場合、コマンドはデータベースで表示する権限を持つオブジェクトを返します。これは、IN DATABASE を指定するのと同じ効果があります。

  • データベースが現在使用中の場合、コマンドはアカウントで表示する権限を持つオブジェクトを返します。これは、IN ACCOUNT を指定するのと同じ効果があります。

STARTS WITH 'name_string'

オプションで、オブジェクト名の先頭に表示される文字に基づいてコマンド出力をフィルタリングします。文字列は一重引用符で囲む必要があり、 大文字と小文字を区別します。

たとえば、次の文字列は 異なる 結果を返します。

... STARTS WITH 'B' ...
... STARTS WITH 'b' ...

. デフォルト: 値なし(フィルターは出力に適用されない)

LIMIT rows [ FROM 'name_string' ]

オプションで、返される行の最大数を制限すると同時に、結果の「ページネーション」を有効にします。実際に返される行数は、指定された制限より少ない場合があります。例えば、既存のオブジェクトの数が指定された制限より少ないなどです。

オプションの FROM 'name_string' サブ句は、結果の「カーソル」として効果的に機能します。これにより、指定された文字列と一致するオブジェクト名を持つ最初の行に続く指定された行数を取得できます。

  • 文字列は一重引用符で囲む必要があり、 大文字と小文字を区別します。

  • 文字列に完全なオブジェクト名を含める必要はありません。部分的な名前がサポートされています。

デフォルト:値なし(出力に制限は適用されない)

注釈

FROM 'name_string' 句と STARTS WITH 'name_string' 句の両方をサポートする SHOW コマンドの場合、同じステートメントでこれらの両方の句を組み合わせることができます。ただし、両方の条件を満たしている必要があります。そうでない場合、互いにキャンセルされ、結果が返されません。

さらに、オブジェクトは名前の辞書式順序で返されるため、 FROM 'name_string' は、 STARTS WITH 'name_string' によって返される行よりも辞書式の値が大きい行のみを返します。

例:

  • ... STARTS WITH 'A' LIMIT ... FROM 'B' は結果を返しません。

  • ... STARTS WITH 'B' LIMIT ... FROM 'A' は結果を返しません。

  • ... STARTS WITH 'A' LIMIT ... FROM 'AB' は結果を返します(入力文字列に一致する行がある場合)。

アクセス制御の要件

この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。

権限

オブジェクト

注意

SELECT

Icebergテーブル

SHOW ICEBERG TABLES の出力に特定のIcebergテーブルを表示するには、ロールがそのテーブルに対して SELECT 権限を持っている必要があります。

スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

使用上の注意

  • アカウント(またはデータベースまたはスキーマ)に多数のIcebergテーブルがある場合、アカウント全体(またはデータベースまたはスキーマ)を検索すると、大量のコンピューティングリソースが消費される可能性があります。

  • このコマンドの実行には、稼働中のウェアハウスは必要ありません。

  • このコマンドは、現在のユーザーの現在のロールに少なくとも1つのアクセス権限が付与されているオブジェクトのみを返します。

  • MANAGE GRANTS アクセス権限により、所有者はアカウント内のすべてのオブジェクトを暗黙的に参照できます。デフォルトでは、アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)とセキュリティ管理者( SECURITYADMIN ロールを持つユーザー)のみが MANAGE GRANTS 権限を持っています。

  • このコマンドの出力を後処理するには、 パイプ演算子 (->>)または RESULT_SCAN 関数。どちらのコンストラクトも、出力を クエリできる結果セットとして扱います。

    たとえば、パイプ演算子または RESULT_SCAN 関数を使用して、 SHOW コマンド出力から特定の列を選択したり、行をフィルター処理したりできます。

    出力列を参照する場合は、列名に 二重引用符で囲まれた識別子 を使用します。たとえば、出力列 type を選択するには、 SELECT "type" を指定します。

    SHOW コマンドの出力列名は小文字のため、二重引用符で囲まれた識別子を使用する必要があります。二重引用符により、 SELECT リストまたは WHERE 句内の列名が、スキャンされた SHOW コマンド出力内の列名と一致することが保証されます。

  • LIMIT rows の値は 10000 を超えることはできません。LIMIT rows を省略した場合、結果セットが1万行を超えるとコマンドはエラーになります。

    1万件を超える記録が存在する結果を表示するには、 LIMIT rows を含めるか、 Snowflake Information Schema の対応するビューをクエリします。

出力

注釈

次の出力スキーマは SHOW ICEBERG TABLES コマンドのものです。SHOW TABLES の出力の情報については、 SHOW TABLES によるIcebergテーブルの識別 (このトピック内)をご参照ください。

コマンド出力では、次の列にテーブルプロパティとメタデータが提供されます。

列

説明

created_on

テーブルが作成された日時。

name

テーブルの名前。

database_name

テーブルが保存されているデータベース。

schema_name

テーブルが保存されているスキーマ。

owner

テーブルを所有するロール。

external_volume_name

Icebergテーブルのデータとメタデータが保存されている外部ボリュームの名前。

catalog_name

テーブルがSnowflakeによって管理されていない場合、Icebergテーブルに関連付けられたカタログ統合オブジェクトの名前。テーブルがSnowflakeによって管理されている場合は SNOWFLAKE。

iceberg_table_type

Icebergテーブルのタイプ。テーブルがSnowflakeによって管理されていない場合は UNMANAGED。それ以外の場合は、 NOT ICEBERG。

catalog_table_name

カタログが認識するテーブル名。

catalog_namespace

外部管理テーブルの場合は、テーブル作成時に定義された名前空間。テーブルレベルで定義されていない場合、テーブルが使用するカタログ統合に関連付けられたデフォルトの名前空間。Snowflake Open Catalogと同期するSnowflake管理テーブルの場合、このフィールドは必須ではないため、値は null です。

base_location

EXTERNAL_VOLUME の場所からテーブルのメタデータとデータファイルへの相対パス。

can_write_metadata

Snowflakeが base_location で指定された場所にメタデータを書き込めるかどうかを示します。

comment

テーブルのコメント。

name_mapping

列の投影 を使用するテーブル列に関する情報を持つオブジェクトのリスト。詳細については、 name_mapping をご参照ください。

owner_role_type

オブジェクトを所有するロールのタイプ。例えば ROLE があります。. Snowflake Native App がオブジェクトを所有する場合、値は APPLICATION になります。. 削除されたオブジェクトには所有者ロールがないため、オブジェクトを削除した場合、Snowflakeは NULL を返します。

catalog_sync_name

Snowflakeが管理するApache Iceberg™テーブルが同期するSnowflake Open Catalogのカタログ統合名を示します。テーブルがSnowflake Open Catalogと同期していない場合、またはSnowflakeによって管理されていない場合、値は NULL になります。

auto_refresh_status

外部管理Icebergテーブルの自動更新ステータス。この列は、 SYSTEM$AUTO_REFRESH_STATUS 関数と同じ結果をテーブルに対して表示します。

partition_specs

Icebergメタデータファイルにある、テーブルのApache Iceberg™パーティション仕様を記述するオブジェクトのリスト。Snowflakeで管理されるテーブルと外部で管理されるIcebergテーブルの両方の仕様を含みます。詳細については、 partition_specs をご参照ください。

current_partition_spec_id

Icebergテーブルで現在有効なパーティション仕様の ID。この ID は partition_specs の spec-id の値に対応します。

name_mapping

name_mapping 出力列は、 列の投影 を使用するテーブル列に関する情報を提供します。

テーブルに関連する名前マッピングを持つ列がない場合、出力列の値は [NULL] になります。それ以外の場合、値はオブジェクトのリストであり、各オブジェクトは関連する名前のマッピングを持つ列に対応しています(マッピングされたフィールドと呼ばれることもあります)。各オブジェクトは次の3つのプロパティを含むことができます。

  • field-id:Icebergフィールド ID。

  • names: フィールドの名前文字列のリスト。

  • fields: 構造体、マップ、リスト列の子フィールドのフィールドマッピングのリスト。

例:

[
  {
    "field-id": 1,
    "names": [
      "id",
      "record_id"
    ]
  },
  {
    "field-id": 2,
    "names": [
      "data"
    ]
  },
  {
    "field-id": 3,
    "names": [
      "location"
    ],
    "fields": [
      {
        "field-id": 4,
        "names": [
          "latitude",
          "lat"
        ]
      },
      {
        "field-id": 5,
        "names": [
          "longitude",
          "long"
        ]
      }
    ]
  }
]

注釈

列、または 構造化された型 列のフィールドに関連する名前マッピングがない場合、フィールド IDs は連続しない可能性があります。

partition_specs

partition_specs 列の各オブジェクトには spec-id が含まれ、その後にパーティション仕様のフィールドが続きます。各フィールドは、次のキー値ペアを含む OBJECT 値です。

  • name: パーティションの名前。

  • transform:パーティション値を生成するためにソース列に適用される変換。この値によって、データをパーティションにグループ化する方法が決まります。

  • source-id:パーティショニングに使用される元のテーブル列またはフィールドの識別子。

  • field-id: The partition field ID. This field identifies a partition field and is unique in a partition specification. However, for Iceberg v2 table metadata, the field ID is unique across all partition specifications.

例:

[ {
    "spec-id" : 0,
    "fields" : [ {
      "name" : "COL1",
      "transform" : "identity",
      "source-id" : 1,
      "field-id" : 1000
      }, {
      "name" : "COL1_trunc_100",
      "transform" : "truncate[100]",
      "source-id" : 1,
      "field-id" : 1001
      }
    ]
} ]

この例が示しているのは1つのパーティション仕様です。ただし、1つのテーブルは複数のパーティション仕様を持つことができます。

例

tpch.public スキーマで表示する権限がある、名前が glue で始まるすべてのIcebergテーブルを表示します。

SHOW ICEBERG TABLES LIKE 'glue%' IN tpch.public;

SHOW TABLES によるIcebergテーブルの識別

SHOW TABLES コマンドの出力には、テーブルがIcebergテーブルであるかどうかを示す列があります。この列は、通常の SHOW TABLES 出力列 に加えて表示されます。

この列には次のような名前と可能な値があります。

列名

値

is_iceberg

テーブルがIcebergテーブルの場合は Y。それ以外の場合は N。