■ はじめに
業務で、Snowflake の Data Sharing (データ共有)について 扱う機会がでたので、ちょこっと調べてみた。
目次
【1】Snowflake Data Sharing 【2】主な操作 1)CREATE SHARE 2)SHOW SHARES 【3】共有方法 1)共有へのデータベースロールの付与
【1】Snowflake Data Sharing
* 異なるSnowflakeアカウント間でデータ共有する機能
公式ドキュメント
https://docs.snowflake.com/ja/guides-overview-sharing
https://docs.snowflake.com/ja/user-guide/data-sharing-intro
https://docs.snowflake.com/ja/user-guide/data-sharing-provider
【2】主な操作
https://docs.snowflake.com/ja/sql-reference/commands-database#share
1)CREATE SHARE
* Data Sharing オブジェクト を作成
https://docs.snowflake.com/ja/sql-reference/sql/create-share
-- CREATE SHARE <Data Sharing Object Name>; CREATE SHARE sales_s;
2)SHOW SHARES
* 以下の共有オブジェクトを一覧表示 + アウトバウンド共有(コンシューマーへ)。 + インバウンド共有(プロバイダーから)。
https://docs.snowflake.com/ja/sql-reference/sql/show-shares
SHOW SHARES;
【3】共有方法
1)共有へのデータベースロールの付与
* 以下の公式ドキュメントに記載
https://docs.snowflake.com/ja/user-guide/data-sharing-gs#option-1-granting-database-roles-to-a-share
ステップ1: データベースのロールを作成する
CREATE DATABASE ROLE d1.r1; CREATE DATABASE ROLE d1.r2;
ステップ2: オブジェクトに対する権限をデータベースロールに付与する
GRANT USAGE ON SCHEMA d1.s1 TO DATABASE ROLE d1.r1; GRANT SELECT ON VIEW d1.s1.v1 TO DATABASE ROLE d1.r1; GRANT USAGE ON SCHEMA d1.s1 TO DATABASE ROLE d1.r2; GRANT SELECT ON VIEW d1.s1.v2 TO DATABASE ROLE d1.r2; -- 確認 SHOW GRANTS TO DATABASE ROLE d1.r1; SHOW GRANTS TO DATABASE ROLE d1.r2;
ステップ3: 共有を作成する
CREATE SHARE share1;
ステップ4: 共有に USAGE 権限を付与してデータベースを追加する
GRANT USAGE ON DATABASE d1 TO SHARE share1;
ステップ5: データベースのロールを共有に付与してオブジェクトを追加する
GRANT DATABASE ROLE d1.r1 TO SHARE share1; GRANT DATABASE ROLE d1.r2 TO SHARE share1;
ステップ6: データベースオブジェクトを1つ以上のデータコンシューマーアカウントと共有する
ALTER SHARE share1 ADD ACCOUNTS = org1.consumer1,org1.consumer2;
参考文献
https://qiita.com/KimiyukiMuramatsu/items/82e2d567008bc770f919
https://dev.classmethod.jp/articles/20211122_snowflake_data_sharing/
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / アクセス制御 ~
https://dk521123.hatenablog.com/entry/2021/11/16/231010
Snowflake ~ IDENTIFIER / SET ~
https://dk521123.hatenablog.com/entry/2024/02/20/095207