1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

DatabricksAdvent Calendar 2023

Day 17

Databricks Unity Catalog のテーブルを再度 Delta Clone した際の権限等のメタデータの保持に関する検証結果

Last updated at Posted at 2023-12-17

概要

Databricks にはテーブルを複製する方法として Delta Clone という機能があり、同一テーブルに対して再度 Delta Clone することで増分連携ができるとも可能なのですが、テーブルへの権限付与等の情報が保持されるかが気になったため検証してみました。下記表に示す項目を検証してみましたが、Unity Catalog に保持される項目については Delta Clone を再度実行しても保持されるようです。〇 が保持されたこと、× が喪失したたことを示しています。本記事では、検証コードと結果を共有します。

項目 Shallow CLONE の場合 Deep CLONE の場合
1 テーブルオーナー
2 権限
3 テーブルコメント
4 カラムコメント × ×
5 テーブルタグ
6 カラムタグ

Shallow CLONE のユースケースとして複製元のテーブルと独立したアクセス制御管理があり、スキーマレベルで権限管理を行いたい場合にデータ提供がとても楽になります。本記事での検証結果から権限が再 Clone したとしても存続することが確認できたため、安心してそのユースケースを実施できることがわかりました。

親テーブルから独立したアクセス制御特権を持つテーブルを作成できます。

image.png

引用元:Unity Catalog テーブルのシャロー クローン - Azure Databricks | Microsoft Learn

検証コードと結果

テーブルの準備

%sql
CREATE CATALOG IF NOT EXISTS clone_test_001;
CREATE SCHEMA IF NOT EXISTS clone_test_001.schema_01;

-- Delta Clone 元テーブルの作成
CREATE OR REPLACE TABLE clone_test_001.schema_01.base_table
AS
SELECT
  *
FROM
  samples.tpch.nation

image.png

Shallow Clone の検証

最初の Shallow Clone の実施

%sql
-- テーブルを削除初期化してからDelta Clone
DROP TABLE IF EXISTS clone_test_001.schema_01.shallow_clon_table
;
CREATE OR REPLACE TABLE clone_test_001.schema_01.shallow_clon_table
 SHALLOW CLONE clone_test_001.schema_01.base_table
;

image.png

存続確認したい項目の設定

%sql
-- テーブルコメント
COMMENT ON TABLE clone_test_001.schema_01.shallow_clon_table
   IS 'テーブルコメントですよ';

-- カラムコメント
ALTER TABLE clone_test_001.schema_01.shallow_clon_table
  CHANGE n_nationkey n_nationkey bigint
  COMMENT 'カラムコメントですよ';

-- テーブルオーナー
ALTER TABLE clone_test_001.schema_01.shallow_clon_table
  OWNER TO `account users`;

-- 権限
GRANT SELECT
  ON TABLE clone_test_001.schema_01.shallow_clon_table
  TO `account users`;

-- テーブルタグ
ALTER TABLE clone_test_001.schema_01.shallow_clon_table
SET
  TAGS ('test' = 'テスト');

-- カラムタグ
-- 手動で設定

image.png

カラムタグについては、カタログエクスプローラーにて手動でタグを設定。

image.png

設定値の確認

image.png

image.png

Shallow Clone の再実行

%sql
CREATE OR REPLACE TABLE clone_test_001.schema_01.shallow_clon_table
  SHALLOW CLONE clone_test_001.schema_01.base_table

image.png

設定値の再確認

image.png

image.png

DEEP Clone の検証

最初の Deep Clone の実施

%sql
DROP TABLE IF EXISTS clone_test_001.schema_01.deep_clone_table
;
CREATE OR REPLACE TABLE clone_test_001.schema_01.deep_clone_table
 DEEP CLONE clone_test_001.schema_01.base_table
;

image.png

存続確認したい項目の設定

%sql
-- テーブルコメント
COMMENT ON TABLE clone_test_001.schema_01.deep_clone_table
   IS 'テーブルコメントですよ';

-- カラムコメント
ALTER TABLE clone_test_001.schema_01.deep_clone_table
  CHANGE n_nationkey n_nationkey bigint
  COMMENT 'カラムコメントですよ';

-- テーブルオーナー
ALTER TABLE clone_test_001.schema_01.deep_clone_table
  OWNER TO `account users`;

-- 権限
GRANT SELECT
  ON TABLE clone_test_001.schema_01.deep_clone_table
  TO `account users`;

-- テーブルタグ
ALTER TABLE clone_test_001.schema_01.deep_clone_table
SET
  TAGS ('test' = 'テスト');

-- カラムタグ
-- 手動で設定

image.png

カラムタグについては、カタログエクスプローラーにて手動でタグを設定。

image.png

設定値の確認

image.png

image.png

Deep Clone の再実行

%sql
CREATE OR REPLACE TABLE clone_test_001.schema_01.deep_clone_table
  DEEP CLONE clone_test_001.schema_01.base_table

image.png

設定値の再確認

image.png

image.png

リソースの削除

%sql
DROP CATALOG IF EXISTS clone_test_001 CASCADE;

image.png

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?