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?

Databricksで実現するデータガバナンス:データの発見から利用承認まで

Posted at

みなさん、こんにちは!

組織でデータを管理している場合、部門間でデータを連携したいという場合があると思います。
例えば、データエンジニアリング部門が用意したデータをユーザ部門がBI開発のために利用する、といったケースです。

このような場合に、必要とするデータを発見→利用申請→利用承認→利用開始というステップを踏むことになりますが、そのデータ利用フローはDatabricksの純正機能だけで(外部のカタログツールを使わずに)実現可能です。

本記事では、Databricksの基本的なデータカタログ機能に加え、上記のデータ利用フローを実現する方法について具体的な例とともにご紹介します。

事前準備

ユーザ作成&追加

共有の確認用に以下のGoogleアカウントを作成しておきます。

Databricksワークスペースに上記アカウントを追加します。

リネージの取得・参照

サンプルのスキーマ、テーブル、ビューを作成します。

qiita.rb
-- スキーマ作成
CREATE SCHEMA IF NOT EXISTS SALES;
USE SCHEMA SALES;

-- テーブル作成
CREATE TABLE products (
  id INT,
  name STRING,
  unit_price FLOAT
);

CREATE TABLE daily_sales (
  id INT,
  product_id INT,
  quantity INT,
  sales_at TIMESTAMP
);

-- データ挿入
INSERT INTO products VALUES
(1, 'Desktop', 800),
(2, 'Laptop', 400),
(3, 'Monitor', 100);

INSERT INTO daily_sales VALUES
(1, 2, 2, '2024-01-14 09:00:00'),
(2, 3, 3, '2024-01-15 10:00:00'),
(3, 1, 1, '2024-01-16 15:00:00'),
(4, 3, 1, '2024-02-01 11:00:00'),
(5, 1, 2, '2024-02-01 11:00:00');

-- ビュー作成
CREATE VIEW sales_summary_view AS
WITH daily_sales_view AS (
  SELECT
    d.id AS id,
    p.id AS product_id,
    p.name AS product_name,
    d.quantity * p.unit_price AS sales,
    d.sales_at AS sales_at
  FROM daily_sales d
  LEFT JOIN products p
  ON d.product_id = p.id
)
SELECT
  product_id,
  product_name,
  SUM(sales) AS total_sales
FROM daily_sales_view
GROUP BY 1, 2
ORDER BY 1, 2;

作成したテーブルとビューは以下の通りです。

  • テーブル
    ・products:製品データを格納したテーブル
    ・daily_sales:売上データを格納したテーブル

  • ビュー
    ・salesview:productsとdailysalesから作成した売上確認用ビュー

テーブルやビューを作成すると、それらの関係が自動的に取得され、「依存関係」タブから参照できるようになります。
image.png

ビジネスメタデータの登録・編集

「データ」→「データベース」から個別のテーブルやビューを確認し、テーブルや列のメタデータを登録、編集することができます。
image.png
※説明はAIに生成してもらうことも可能です。

画面上部の検索欄から、テーブルやビューのデータを検索できます。
image.png

データ共有と権限制御

通常の場合

オブジェクトへのアクセス権設定

上記で作成したサンプルデータについて、以下のようにアクセス権を設定します。

qiita.rb
-- アカウント内の全ユーザに対しカタログworkspace_01内のオブジェクトに対するメタデータ参照権限を与える
GRANT BROWSE ON CATALOG workspace_01 TO `account users`;

この場合、全員がworkspace_01カタログ内のテーブルとビューの情報を参照できます。

データの検索・利用

ReQ Taroはテーブルやビューのメタデータを参照できますが、SELECT権限が与えられていないため実際のデータのプレビューや参照はできません。ReQ Taroから見たとき、salesスキーマは画像のようにグレーアウトされています。
image.png

salesスキーマの所有者がスキーマのメニューで「アクセス権リクエストの宛先を管理」を開き、宛先を設定することで権限のリクエストが可能になります。
image.png
image.png

上記設定後、ReQ Taroから権限をリクエストすることが可能になります。
image.png

リクエストを送信すると宛先のアカウントにメール通知されます。
image.png

メール内のリンクを開いて内容を確認し、権限の付与を行います。
image.png

権限が付与されると、ReQ Taroからもsalesスキーマのデータが参照できるようになります。
image.png

プライベートエクスチェンジを利用する場合

プライベートエクスチェンジは、マーケットプレイスで特定のコンシューマーに対してのみデータ製品を展開することができる機能です。

メニューの「Marketplace」を開き、「プロバイダーコンソール」をクリックします。
image.png

プロファイル作成

次の画面で「プライベートプロバイダーの利用規約に同意」をクリックし、マーケットプレイスプライベートエクスチェンジプロバイダーを有効化します。

利用規約に同意後、「マーケットプレイスの管理者を割り当て」をクリックします。開いたアカウントコンソールの画面で、「マーケットプレイスのアドミン」を有効化します。
image.png

マーケットプレイス管理者の割り当てが完了したら、次の画面で「プロバイダーのプロファイルを作成」をクリックします。開いた画面でプロファイルを作成し、必要事項を記入して送信します。
image.png

作成が完了すると、以下のように表示されます。
image.png
※プロファイルは複数作成可能

取引所作成

リスティング作成時に必要となる取引所を作成します。

「取引所」タブを開き、「取引所を作成」をクリックします。
適当な名前を入力し、取引所を作成します。
image.png
取引所の作成後、「メンバー」タブから共有対象アカウントを設定することができます。

リスティング作成・公開

「リスティング」タブを開き、「リスティングを作成する」をクリックします。

リスティングの基本情報やアクセス、データアセットなどを設定し、「公開」をクリックします。
image.png

今回の設定内容は以下の通りです。

  • 一般
    ・リスティング名:リスティングの名前
    ・説明:リスティングの説明
    ・プロバイダープロファイル:上記で作成したプロファイル

  • アクセス
    ・公開先:プライベート取引所(上記で作成した取引所)

  • データアセット
    ・コンシューマーのアクセス:リストへのアクセスリクエストが必要
    ・共有対象アセット:テーブル

  • 属性
    ・カテゴリー:小売
    ・アクセス:無料

  • 詳細
    ・説明:データの説明

データの検索・利用

公開すると、同ワークスペース内および共有対象アカウントからデータ製品を検索できるようになります。
image.png
image.png

「アクセス権をリクエスト」をクリックし、必要事項を記入してリクエストを送信します。
image.png

リクエストを送信すると連絡先のアカウントにメール通知されます。
image.png

メール内のリンクを開いて内容を確認し、承認(と共有の設定)を行います。

共有は「カタログ」の歯車アイコンから「Delta Sharing」→「自分が共有」→「データを共有」で作成可能です。
共有対象のアカウントと、共有対象のアセット(スキーマやテーブル)を設定します。

承認すると、ReQ Taro側のデータ製品ページの内容が更新されます。
image.png

「即時アクセス権を取得」ボタンをクリックすると、カタログのDelta共有にデータが追加され、利用可能になります。
image.png

補足:共有方法の使い分けについて

通常の共有とプライベートエクスチェンジには以下の違いがあります。

通常 プライベートエクスチェンジ
共有対象 組織内 グローバル
権限付与 簡単 簡単
オブジェクト共有先 カタログ Delta共有
データ探索 △(※1)

※1:自分で詳細情報を入力しないと、期待する形で検索に表示されない。含まれるテーブルやビューのメタデータが一切表示されない

組織内でデータを連携したい場合、通常の方法が最もシンプルかつスムーズなのでおすすめです。

参考

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?