カタログ・コンテンツの整理¶
このトピックでは、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")
オープンカタログを使用したトップレベル名前空間の作成¶
オープンカタログにサインインします。
左側のメニューから、 カタログ を選択します。
カタログのリストから、トップレベルの名前空間を作成するカタログを選択します。
+名前空間 を選択します。
名前 に名前空間の名前を入力し、 送信 を選択します。
ネストされた名前空間の作成¶
ネストされた名前空間を作成するには、Apache Sparkまたはオープンカタログを使用できます。
例: Apache Sparkを使用してネストされた名前空間を作成する¶
次のコード例は、 namespace1a
という名前のネストされた名前空間をカタログ catalog1
に作成します。このネストされた名前空間は、既存のトップレベルの名前空間 namespace1
の下に作成されます。
spark.catalog.setCurrentCatalog("catalog1")
spark.sql("use catalog1").show()
spark.sql("CREATE NAMESPACE namespace1.namespace1a")
オープンカタログを使用したネストされた名前空間の作成¶
オープンカタログにサインインします。
左側のメニューから、 カタログ を選択します。
カタログのリストから、ネストされた名前空間を作成するカタログを選択します。
名前空間 タブで、ネストされた名前空間を作成する親名前空間に移動します。
+名前空間 を選択します。
名前 にネストされた名前空間の名前を入力し、 送信 を選択します。
テーブルを作成する¶
このセクションでは、Apache Sparkを使用してテーブルを作成する例を示します。
例: テーブルを作成する¶
以下のコード例は、カタログ catalog1
内のネストされた名前空間 namespace1a
の下に customers
テーブルを作成します。id
と custnum
列で作成され、両列のデータ型は integer
です。
spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("CREATE OR REPLACE TABLE customers (id int, custnum int) using iceberg")
例: テーブルに行を挿入する¶
以下のコード例では、 customers
テーブルに行を挿入しています。
spark.sql("use catalog1").show()
spark.sql ("use namespace1.namespace1a")
spark.sql("INSERT INTO customers VALUES (123,456)")