製品 & テクノロジー

Snowflake情報スキーマの使用

Snowflake情報スキーマの使用
注:本記事は(2016年11月1日)に公開された(Using the Snowflake Information Schema)を翻訳して公開したものです。
他の優れたデータベースと同様に、Snowflakeには、ユーザーに公開するデータディクショナリがあります。私たちはこれを情報スキーマと呼んでいます。実際には、メタデータレイヤーに対するビューのセットで、Snowflakeで構築したデータベース、スキーマ、テーブルに関する情報の一部を簡単に調べることができます。

表示できるオブジェクトとは

情報スキーマには、直接クエリできる18のビューがあります。全リストは、こちら
のドキュメントでご覧いただけます。
重要なことは、Snowflakeの各データベースには個別の情報スキーマがあり、クエリは現在のデータベースに関するデータのみを返すということです。
さらに、SQLを記述する際には、情報スキーマのビュー名を完全修飾する必要があり、特に例にあるように「information_schema」を使用する必要があります。
参照しやすいように、情報スキーマのスキーマをリバースエンジニアリングしてデータモデル図にし、適切なPKとFKを追加しました。この図は、スキーマに対してSQLを記述する際のガイドとして使用できます(説明を含むPDFのダウンロードはこちら)。

情報スキーマの使用方法

データディクショナリに対してクエリを作成したことがない人のために、いくつか例を挙げてみましょう。

1.スキーマにテーブルとビューをリストする

簡単に開始する方法は、データベーススキーマの1つにテーブルとビューをリストすることです。
SELECT table_name, table_type

FROM kent_db.information_schema.tables

WHERE table_schema = 'PUBLIC'

ORDER BY 1;
このSQLの例(およびこの記事のすべての例)は、特定のスキーマ(PUBLIC)を指定していることに注意してください。データベースに複数のスキーマがある場合は、可能な限り述語にスキーマ仕様を含めることをお勧めします(データベース内のすべてを実際に確認したい場合を除く)。また、情報スキーマビューの値は通常文字列であり、大文字と小文字が区別されるため、述語句で参照する場合は必ず一重引用符で囲むようにしてください。
結果は次のようになります。

2.データディクショナリを構築する

たとえば、レポートにテーブルに関するデータディクショナリタイプのリストを作成するとします。テーブルに対してCOMMENTを記録している場合は、このクエリを実行してリストを作成できます。
SELECT 'Comment on table.'||table_name||' is '''||nvl(tables.comment||'''', 'No Comment Recorded''')

FROM kent_db.information_schema.tables tables

WHERE table_schema = 'PUBLIC';
このSQLは、PUBLICスキーマの各テーブルのコメントを表示するだけでなく、テーブルにコメントを追加していない箇所も指摘します。
注:ほとんどのBIツールはデータディクショナリからコメントをリバースエンジニアリングできるため、この情報を使用してBIツールでメタデータを構築し、システム内のさまざまなテーブルの意味をユーザーに知らせることができます。
もう1つの可能性は、特定のスキーマで定義したすべての制約のリストが必要な場合です。次のようなSQLを実行できます。
SELECT table_name, constraint_type, constraint_name

FROM sales.information_schema.table_constraints

WHERE constraint_schema = 'TPC_DV_OPT'

ORDER BY table_name;
結果は次のようになります。

3.SQLを動的に生成する

動的SQLは、情報スキーマのデータを使用してSQLステートメントを生成する方法です。たとえば、CREATEスクリプトのリグレッションテストを行うために、データベースをクリーンアップし、ほとんどのテーブルを削除する必要があるとします。これを行うには多くの方法があります。SQLスクリプトを使用してこれを行う場合は、スクリプトを手書きで記述できます。テーブルが少数しかない場合は問題ありませんが、動的にスクリプトを生成する方がよいでしょう。
Snowflakeの情報スキーマを使用すると、次のように実行できます。
SELECT 'drop table '||table_name||' cascade;'

FROM kent_db.information_schema.tables tables

WHERE table_schema = 'PUBLIC'

ORDER BY 1;
この出力は、実行可能なSQLコマンドのセットである必要があります。また、スキーマが進化してテーブルが追加されると、このスクリプトは次に実行するときに新しいテーブルを選択するため、編集することを覚えておく必要はありません(これが「動的SQL」の「動的」の部分です)。
Snowflake UIを使用すると、これらの結果をエクスポートし、スクリプトに保存してから実行できます。
このようなメタデータにアクセスすることで、可能性は無限に広がります。
Snowflakeコンピューティングのすべてのアクションとアクティビティに関する最新情報については、これまでどおり、このブログサイトやSnowflake Twitterフィード(@SnowflakeDB
)に注目してください。
記事をシェアする

Make Your Lakehouse AI-Ready

Snowflake announces new data engineering capabilities for open table formats, empowering you to build a connected, high-performance lakehouse on Iceberg and Delta Lake.

Programmatic access to Query Profile is now in Public Preview

The Query Profile has been available in Snowsight, and we are excited to announce the Public Preview of programmatic access to Query Profile. Learn more here.

Driving Telecom Sustainability Targets Using Autonomous Networks

Explore the impact of AI-driven autonomous networks on reducing carbon footprint, enhancing user experience and sustainability in telecom.

AI and Data Predictions 2025: Strategies to Realize the Promise of AI

Discover 2025’s top AI trends, from operationalizing gen AI and enhancing data readiness to tackling hallucinations and navigating AI-driven transformation.

The Three Essentials to Get to Responsible AI

Explore innovative Responsible AI solutions and use cases focusing on data security, diversity, and organizational maturity.

Snowflake's FedRAMP High Authorization for Public Sector

Snowflake's FedRAMP High authorization advances its mission to securely mobilize data for government agencies and partners.

AI-Powered Sales Assistant: The Future of Sales Productivity

Snowflake’s AI-powered sales chatbot can answer crucial questions with quick answers taken from our sales enablement tool, docs site and 800+ customer stories.

Bring Identity Resolution to Data with Native Applications

Learn how LiveRamp is using Snowflake’s Native Application Framework to build applications and resolve customer identity across data sources. Read more here.

The Future of Life Sciences: The Expanding Role of AI

Explore how AI, Generative AI, and Agentic AI are reshaping the life sciences industry and how organizations can overcome adoption challenges.

Subscribe to our blog newsletter

Get the best, coolest and latest delivered to your inbox each week

Where Data Does More

  • 30日間無料トライアル
  • クレジットカード不要
  • いつでもキャンセル