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_onnamekindkind列の値は常に ICEBERG TABLE です。database_nameschema_name
デフォルト:値なし(出力にすべての列を含む)
ICEBERGIcebergテーブルのみを返します。
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 権限を持っている必要があります。 |
スキーマ内のオブジェクトに対して操作を実行するには、親データベースとスキーマに対する USAGE 権限が必要です。スキーマに対する 任意の権限を付与されたロールは、そのロールがスキーマを解決できることに注意してください。たとえば、スキーマに対するCREATE権限を付与されたロールは、そのスキーマにオブジェクトを作成できますが、そのスキーマに対するUSAGE*も*付与されている必要はありません。
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
使用上の注意¶
アカウント(またはデータベースまたはスキーマ)に多数のIcebergテーブルがある場合、アカウント全体(またはデータベースまたはスキーマ)を検索すると、大量のコンピューティングリソースが消費される可能性があります。
このコマンドの実行には、稼働中のウェアハウスは必要ありません。
このコマンドは、現在のユーザーの現在のロールに少なくとも1つのアクセス権限が付与されているオブジェクトのみを返します。
MANAGE GRANTS アクセス権限により、所有者はアカウント内のすべてのオブジェクトを暗黙的に参照できます。デフォルトでは、アカウント管理者( ACCOUNTADMIN ロールを持つユーザー)とセキュリティ管理者( SECURITYADMIN ロールを持つユーザー)のみが MANAGE GRANTS 権限を持っています。
このコマンドの出力を後処理するには、 パイプ演算子 (
->>)または RESULT_SCAN 関数。どちらのコンストラクトも、出力を クエリできる結果セットとして扱います。このコマンドの出力列名は小文字で生成されます。パイプ演算子または でこのコマンドの結果セットを消費する場合 RESULT_SCAN 関数の場合は、を使用します 二重引用符で囲まれた識別子 クエリの列名に を使用し、スキャンされた出力の列名と一致するようにします。たとえば、出力列の名前が次の場合
type``次に を指定します ``"type"識別子用。
LIMIT rowsの値は10000を超えることはできません。LIMIT rowsを省略した場合、結果セットが1万行を超えるとコマンドはエラーになります。1万件を超える記録が存在する結果を表示するには、
LIMIT rowsを含めるか、 Snowflake Information Schema の対応するビューをクエリします。
出力¶
注釈
次の出力スキーマは SHOW ICEBERG TABLES コマンドのものです。SHOW TABLES の出力の情報については、 SHOW TABLES によるIcebergテーブルの識別 (このトピック内)をご参照ください。
コマンド出力では、次の列にテーブルプロパティとメタデータが提供されます。
列 |
説明 |
|---|---|
|
テーブルが作成された日時。 |
|
テーブルの名前。 |
|
テーブルが保存されているデータベース。 |
|
テーブルが保存されているスキーマ。 |
|
テーブルを所有するロール。 |
|
Icebergテーブルのデータとメタデータが保存されている外部ボリュームの名前。 |
|
テーブルがSnowflakeによって管理されていない場合、Icebergテーブルに関連付けられたカタログ統合オブジェクトの名前。テーブルがSnowflakeによって管理されている場合は |
|
Icebergテーブルのタイプ。テーブルがSnowflakeによって管理されていない場合は |
|
カタログが認識するテーブル名。 |
|
外部管理テーブルの場合は、テーブル作成時に定義された名前空間。テーブルレベルで定義されていない場合、テーブルが使用するカタログ統合に関連付けられたデフォルトの名前空間。Snowflake Open Catalogと同期するSnowflake管理テーブルの場合、このフィールドは必須ではないため、値は |
|
|
|
Snowflakeが |
|
テーブルのコメント。 |
|
列の投影 を使用するテーブル列に関する情報を持つオブジェクトのリスト。詳細については、 name_mapping をご参照ください。 |
|
オブジェクトを所有するロールのタイプ。例えば |
|
Snowflakeが管理するApache Iceberg™テーブルが同期するSnowflake Open Catalogのカタログ統合名を表します。テーブルがSnowflake Open Catalogと同期していない場合、またはSnowflakeによって管理されていない場合、値は |
|
外部管理Icebergテーブルの自動更新ステータス。この列は、 SYSTEM$AUTO_REFRESH_STATUS 関数と同じ結果をテーブルに対して表示します。 |
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 は連続しない可能性があります。
例¶
tpch.public スキーマで表示する権限がある、名前が glue で始まるすべてのIcebergテーブルを表示します。
SHOW ICEBERG TABLES LIKE 'glue%' IN tpch.public;
SHOW TABLES によるIcebergテーブルの識別¶
SHOW TABLES コマンドの出力には、テーブルがIcebergテーブルであるかどうかを示す列があります。この列は、通常の SHOW TABLES 出力列 に加えて表示されます。
この列には次のような名前と可能な値があります。
列名 |
値 |
|---|---|
is_iceberg |
テーブルがIcebergテーブルの場合は |