【Snowflake】Snowflake ~ Data Sharing ~

■ はじめに

業務で、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