SHOW TABLES

アクセス権限があるテーブルをリストします。これには、まだTime Travelの保持期間内にあり、削除できないテーブルも含まれます。このコマンドを使用して、現在の/指定されたデータベースまたはスキーマの、またはアカウント全体のテーブルを一覧表示できます。

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

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

CREATE TABLEDROP TABLEUNDROP TABLEALTER TABLEDESCRIBE TABLE

TABLES ビュー (情報スキーマ)

構文

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

                                          DATABASE                                        |
                                          DATABASE <database_name>                        |

                                          SCHEMA                                          |
                                          SCHEMA <schema_name>                            |
                                          <schema_name>

                                          APPLICATION <application_name>                  |
                                          APPLICATION PACKAGE <application_package_name>  |
                                        }
                                  ]
                                  [ STARTS WITH '<name_string>' ]
                                  [ LIMIT <rows> [ FROM '<name_string>' ] ]
Copy

パラメーター

TERSE

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

  • created_on

  • name

  • kind

    kind 列の値は常に TABLE です。

  • database_name

  • schema_name

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

HISTORY

必要に応じて、まだパージされていない(つまり、それぞれのTime Travel保持期間内にある)ドロップされたテーブルを含めます。ドロップされたテーブルに複数のバージョンが存在する場合、出力には各バージョンの行が表示されます。出力には、追加の dropped_on 列も含まれ、次を表示します:

  • 日付とタイムスタンプ(ドロップされたテーブルの場合)。

  • NULL (アクティブなテーブルの場合)。

デフォルト:値なし(ドロップされたテーブルは出力に 含まれない

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 があり、両方とも指定したデータベースコンテキストのスコープ内にある場合(つまり、選択したデータベースが schema1schema2 の親である場合)の場合、 SHOW TABLES は t1 テーブルの1つのみを表示します。

SCHEMA. SCHEMA schema_name

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

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

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

APPLICATION application_name. APPLICATION PACKAGE application_package_name

名前付き Snowflake Native App またはアプリケーションパッケージの記録を返します。

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

  • If a database is currently in use, the command returns the objects you have privileges to view in the database. This has the same effect as specifying IN DATABASE.

  • If no database is currently in use, the command returns the objects you have privileges to view in your account. This has the same effect as specifying 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' は結果を返します(入力文字列に一致する行がある場合)。

出力

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

説明

created_on

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

name

テーブルの名前。

database_name

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

schema_name

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

kind

テーブルタイプ: TABLE (永続テーブル用)、 TEMPORARY、または TRANSIENT。

comment

テーブルのコメント。

cluster_by

テーブルのクラスタリングキーとして定義された列。

rows

テーブル内の行数。外部テーブルの場合はNULLを返します。

bytes

クエリでテーブル全体がスキャンされる場合にスキャンされるバイト数。この数は、テーブルの実際の物理バイト(ディスクに保存されているバイト)数とは異なる場合があることに注意してください。

owner

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

retention_time

変更および削除されたデータがTime Travel用に保持される日数。

dropped_on

テーブルがドロップされた日時。テーブルがアクティブな場合は NULL。この列は、コマンドに HISTORY キーワードが指定されている場合にのみ表示されます。

automatic_clustering

アカウントで 自動クラスタリング が有効になっている場合、テーブルで明示的に有効(ON)か無効(OFF)かを指定します。アカウントで自動クラスタリングが有効になっていない場合、この列は表示されません。

change_tracking

ON の場合は、変更の追跡が有効になります。ストリーム または SELECT ステートメントの CHANGES 句を使用して、この変更追跡データをクエリできます。OFF の場合、変更の追跡が現在は無効になっていますが、 有効化 されている可能性はあります。

search_optimization

ON の場合、テーブルでは 検索最適化サービス が有効になっています。それ以外では、値は OFF です。

search_optimization_progress

検索用に最適化されたテーブルのパーセンテージ。この値は、最適化が最初にテーブルに追加されたとき、および検索最適化サービスで保守が行われたときに増加します。新しく最適化されたテーブルでの検索最適化のパフォーマンス向上を測定する前に、これがテーブルの完全最適化を示すまで待ちます。

search_optimization_bytes

このテーブルのために検索最適化サービスが消費するストレージの追加バイト数。

is_external

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

enable_schema_evolution

テーブルで スキーマ進化 が有効になっている場合は Y。それ以外の場合は NCREATE TABLE または ALTER TABLE コマンドを使用して、テーブルスキーマの自動進化を有効にできます。

owner_role_type

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

is_event

イベントテーブルである場合は Y。それ以外の場合は N

is_hybrid

ハイブリッドテーブルの場合は Y 。それ以外は N

is_iceberg

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

is_immutable

テーブルが READ ONLY プロパティを使用して作成された場合は Y。それ以外の場合は N

テーブルのために指定できるプロパティの詳細については、 CREATE TABLE をご参照ください。

注釈

クローンテーブルおよび削除されたデータを含むテーブルの場合、テーブルに表示される bytes は、テーブルの物理バイト数と異なる場合があります。

  • クローンテーブルは、新しい行がテーブルに追加されるか、テーブル内の既存の行が変更または削除されるまで、追加のデータストレージを利用しません。テーブルがほとんどまたはまったく変更されていない場合、表示されるバイト数は、テーブルに保存されている実際の物理バイト数よりも 多くなります

  • テーブルから削除されたデータは、データのTime Travel保持期間(デフォルトは1日)とFail-safe期間(7日)の両方が経過するまでSnowflakeで維持されます。これら2つの期間中、表示されるバイト数は、テーブルに保存されている実際の物理バイト数よりも 少なくなります

クローン作成、Time Travel、およびFail-safeに関連するバイト単位のテーブルサイズの詳細については、 TABLE_STORAGE_METRICS Information Schemaビューをご参照ください。

使用上の注意

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

  • 出力では、結果がデータベース名、スキーマ名、そしてテーブル名の順に並べ替えられます。これは、データベースの結果に複数のスキーマからのテーブルが含まれる可能性があり、ページネーションの崩れる可能性があることを意味します。ページネーションが期待どおりに動作するためには、単一のスキーマに対して SHOW TABLES コマンドを実行する必要があります。SHOW TABLES コマンドに IN SCHEMA schema_name パラメーターを使用することができます。あるいは、 SHOW TABLES コマンドを実行する前に USE SCHEMA コマンドを実行すると、現在のコンテキストでスキーマを使用することができます。

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

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

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

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

    For example, you can use the pipe operator or RESULT_SCAN function to select specific columns from the SHOW command output or filter the rows.

    When you refer to the output columns, use double-quoted identifiers for the column names. For example, to select the output column type, specify SELECT "type".

    You must use double-quoted identifiers because the output column names for SHOW commands are in lowercase. The double quotes ensure that the column names in the SELECT list or WHERE clause match the column names in the SHOW command output that was scanned.

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

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

これらの例は、指定されたパラメーターに基づいて表示する権限を持つすべてのテーブルを示しています。

サンプルデータセット のテーブルに対して SHOW TABLES を実行します。例では、 TERSE パラメーターを使用して出力を制限します。

tpch_sf1 スキーマの LINE で始まる名前を持つすべてのテーブルを表示します。

SHOW TERSE TABLES IN tpch_sf1 STARTS WITH 'LINE';
Copy
+-------------------------------+----------+-------+-----------------------+-------------+
| created_on                    | name     | kind  | database_name         | schema_name |
|-------------------------------+----------+-------+-----------------------+-------------|
| 2016-07-08 13:41:59.960 -0700 | LINEITEM | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
+-------------------------------+----------+-------+-----------------------+-------------+

tpch_sf1 スキーマの PART というサブ文字列を含む名前を持つすべてのテーブルを表示します。

SHOW TERSE TABLES LIKE '%PART%' IN tpch_sf1;
Copy
+-------------------------------+-----------+-------+-----------------------+-------------+
| created_on                    | name      | kind  | database_name         | schema_name |
|-------------------------------+-----------+-------+-----------------------+-------------|
| 2016-07-08 13:41:59.960 -0700 | JPART     | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
| 2016-07-08 13:41:59.960 -0700 | JPARTSUPP | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
| 2016-07-08 13:41:59.960 -0700 | PART      | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
| 2016-07-08 13:41:59.960 -0700 | PARTSUPP  | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
+-------------------------------+-----------+-------+-----------------------+-------------+

tpch_sf1 スキーマのテーブルを表示するが、出力は3行に制限し、 J で始まるテーブル名から開始します。

SHOW TERSE TABLES IN tpch_sf1 LIMIT 3 FROM 'J';
Copy
+-------------------------------+-----------+-------+-----------------------+-------------+
| created_on                    | name      | kind  | database_name         | schema_name |
|-------------------------------+-----------+-------+-----------------------+-------------|
| 2016-07-08 13:41:59.960 -0700 | JCUSTOMER | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
| 2016-07-08 13:41:59.960 -0700 | JLINEITEM | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
| 2016-07-08 13:41:59.960 -0700 | JNATION   | TABLE | SNOWFLAKE_SAMPLE_DATA | TPCH_SF1    |
+-------------------------------+-----------+-------+-----------------------+-------------+

HISTORY パラメーターを使用してドロップされたテーブルを表示します。

現在のスキーマにテーブルを作成してから、それをドロップします。

CREATE OR REPLACE TABLE test_show_tables_history(c1 NUMBER);

DROP TABLE test_show_tables_history;
Copy

コマンド出力にドロップされたテーブルを含めるには、 HISTORY パラメーターを使用します。

SHOW TABLES HISTORY LIKE 'test_show_tables_history';
Copy

出力では、 dropped_on 列にテーブルがドロップされた日時が表示されます。

最新のテーブルを最初に表示するようにテーブルを並べ替えます。

SHOW TERSE TABLES ->> SELECT * FROM $1 ORDER BY "created_on" DESC;
Copy

テーブルを並べ替えて、最初に最も多くのデータを持つテーブルを表示します。その 「バイト」 列はSHOWTERSETABLES 出力では利用できません。したがってこの例では、完全な SHOWTABLES コマンドの出力をフィルターします。

SHOW TABLES
  ->> SELECT "name", "database_name", "schema_name", "bytes" FROM $1 ORDER BY "bytes" DESC;
Copy

SHOWTABLES の出力を完全修飾テーブル名のセットにを変換する。

SHOW TABLES IN ACCOUNT
  ->> SELECT "database_name" || '.' || "schema_name" || '.' || "name" AS fully_qualified_name
        FROM $1
        ORDER BY fully_qualified_name;
Copy