カタログ・コンテンツの整理

このトピックでは、Snowflakeオープンカタログで内部カタログの名前空間とテーブルを作成する方法を説明します。

重要

カタログに定義されたアクセス権限が正しく実施されるようにするには、以下の条件を満たす必要があります。

  • ディレクトリに1つのテーブルに属するデータファイルのみが格納されている。

  • ディレクトリ階層はカタログの名前空間階層と一致する。

例えば、カタログに以下のような項目がある場合:

  • トップレベル名前空間の namespace1

  • ネストされた名前空間 namespace1a

  • ネストされた名前空間 namespace1a の下にグループ化された customers テーブル

  • ネストされた名前空間 namespace1a の下にグループ化された orders テーブル

カタログのディレクトリ階層は次のようにする必要があります。

  • /namespace1/namespace1a/customers/<files for the customers table *only*>

  • /namespace1/namespace1a/orders/<files for the orders table *only*>

カタログコンテンツの整理

カタログ管理者は、オープンカタログまたはサードパーティのクエリエンジンを使用して、カタログコンテンツを次のように整理することができます。

オブジェクト

使用

名前空間

<ul><li>オープンカタログ</li><li>サードパーティーのクエリエンジン</li></ul>

テーブル

サードパーティのクエリエンジン

注意

外部カタログのテーブルと名前空間は、オープンカタログでは読み取り専用です。外部カタログのカタログコンテンツを整理する必要がある場合は、Snowflakeを使用する必要があります。詳細については、Snowflakeで管理されるApache Iceberg™テーブルをご参照ください。

このトピックのコード例は、Apache Sparkを使用してカタログコンテンツを整理する方法を示しています。サンプルコードは PySpark を使用しています。

名前空間の作成

このセクションでは、トップレベルまたはネストされた名前空間の作成方法を説明します。

重要

ネームスペースを作成する際には、名前空間名にピリオドやスペースを使用しないでください。

トップレベル名前空間の作成

トップレベル名前空間を作成するには、Apache Sparkまたはオープンカタログを使用できます。

例: Apache Sparkを使用したトップレベル名前空間の作成

次のコード例は、 namespace1 というトップレベルの名前空間を catalog1 カタログに作成します。

spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1")
Copy

オープンカタログを使用したトップレベル名前空間の作成

  1. オープンカタログにサインインします。

  2. 左側のメニューから、 カタログ を選択します。

  3. カタログのリストから、トップレベルの名前空間を作成するカタログを選択します。

  4. +名前空間 を選択します。

  5. 名前 に名前空間の名前を入力し、 送信 を選択します。

ネストされた名前空間の作成

ネストされた名前空間を作成するには、Apache Sparkまたはオープンカタログを使用できます。

例: Apache Sparkを使用してネストされた名前空間を作成する

次のコード例は、 namespace1a という名前のネストされた名前空間をカタログ catalog1 に作成します。このネストされた名前空間は、既存のトップレベルの名前空間 namespace1 の下に作成されます。

spark.catalog.setCurrentCatalog("catalog1")
spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1.namespace1a")
Copy

オープンカタログを使用したネストされた名前空間の作成

  1. オープンカタログにサインインします。

  2. 左側のメニューから、 カタログ を選択します。

  3. カタログのリストから、ネストされた名前空間を作成するカタログを選択します。

  4. 名前空間 タブで、ネストされた名前空間を作成する親名前空間に移動します。

  5. +名前空間 を選択します。

  6. 名前 にネストされた名前空間の名前を入力し、 送信 を選択します。

テーブルを作成する

このセクションでは、Apache Sparkを使用してテーブルを作成する例を示します。

例: テーブルを作成する

以下のコード例は、カタログ catalog1 内のネストされた名前空間 namespace1a の下に customers テーブルを作成します。idcustnum 列で作成され、両列のデータ型は integer です。

spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("CREATE OR REPLACE TABLE customers (id int, custnum int) using iceberg")
Copy

例: テーブルに行を挿入する

以下のコード例では、 customers テーブルに行を挿入しています。

spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("INSERT INTO customers VALUES (123,456)")
Copy