メインコンテンツまでスキップ

Delta Sharing の共有を作成して管理する

このページでは、Delta Sharing の共有を作成および管理する方法について説明します。

共有は、Unity Catalog 内のセキュリティ保護可能なオブジェクトであり、次のデータ資産を 1 人以上の受信者と共有するために使用します。

  • テーブルとテーブルパーティション
  • ストリーミングテーブル
  • 管理された Iceberg テーブル
  • 外部スキーマとテーブル
  • ビュー (行レベルと列レベルでアクセスを制限する動的ビューを含む)
  • マテリアライズドビュー
  • ボリューム
  • ノートブック
  • AIモデル

スキーマ (データベース) 全体を共有する場合、受信者は、スキーマを共有した時点でスキーマ内のすべてのテーブル、ストリーミングテーブル、ビュー、マテリアライズドビュー、モデル、ボリュームにアクセスできるほか、将来スキーマに追加されるデータや AI アセットにもアクセスできます。

共有には、1 つの Unity Catalog メタストアからのデータと AI アセットのみを含めることができます。 データ資産と AI 資産は、いつでも共有に追加したり、共有から削除したりできます。

共有を作成する前に、 アカウント (プロバイダー用) に Delta Sharing が設定されていることを確認してください。

共有モデルの詳細については、共有、プロバイダー、および受信者を参照してください。

必要条件

完了するタスクごとに、記載されている要件を満たしていることを確認してください。

タスク

要件

シェアを作成する

  • メタストア管理者であるか、共有するデータが登録されている Unity Catalog メタストアの CREATE SHARE 特権を持っている。
  • その Unity Catalog メタストアがアタッチされている Databricks ワークスペースを使用して共有を作成します。

以下を共有に追加します。

  • テーブル
  • ストリーミングテーブル
  • 管理された Iceberg テーブル
  • フォーリンテーブル
  • ビュー
  • マテリアライズドビュー
  • 共有の所有者になります。
  • データ アセットを含むカタログとスキーマに対するUSE CATALOGおよびUSE SCHEMA権限を持っている必要があります。
  • データ資産に対するSELECT権限を持っています。資産を引き続き共有するには、その権限を保持する必要があります。紛失した場合、受信者は共有を通じて資産にアクセスできなくなります。Databricks では、共有所有者としてグループを使用することをお勧めします。

スキーマ全体または外部スキーマを共有する

  • 共有所有者かつスキーマ所有者であるか、 USE SCHEMA持っている必要があります。
  • テーブルを共有するスキーマに対する SELECT 権限がある。
  • ボリュームを共有するスキーマに対する READ VOLUME 権限がある。

共有へのボリュームの追加

  • 共有の所有者になります。
  • カタログまたはスキーマのボリュームまたは所有権を含むカタログおよびスキーマに対する USE CATALOG 権限と USE SCHEMA 権限を持っている。
  • ボリュームに対する READ VOLUME 権限を持っている。ボリュームを引き続き共有するには、その特権を保持する必要があります。紛失すると、受信者は共有を通じてボリュームにアクセスできなくなります。Databricks では、共有所有者としてグループを使用することをお勧めします。

共有にモデルを追加する

  • 共有の所有者になります。
  • モデルを含むカタログとスキーマに対する USE CATALOG 権限と USE SCHEMA 権限を持っているか、カタログまたはスキーマの所有権を持っている。
  • モデルに対する EXECUTE 権限を持っている。モデルを引き続き共有するには、その権限を保持する必要があります。紛失した場合、受信者は共有を通じてモデルにアクセスできません。Databricks では、共有所有者としてグループを使用することをお勧めします。

ノートブックファイルを共有に追加する

  • ノートブックの CAN READ 権限を持つ共有所有者になります。

受信者に共有へのアクセスを許可する

  • メタストア管理者になる。

または

  • 共有オブジェクトと受信者オブジェクトの両方に対して委任された権限または所有権を持つユーザーである必要があります。つまり、ユーザーは次の両方の要件を満たす必要があります。

  • USE SHARESET SHARE PERMISSION両方の権限を持っているか、共有所有者である必要があります

  • USE RECIPIENT権限を持っているか、受信者の所有者である

シェアを見る

  • メタストア管理者になる (すべて表示可能)。

または

  • USE SHARE権限を持つユーザーであること(すべて表示可能)。

または

  • 共有オブジェクトの所有者になります。

共有所有者を更新

  • メタストア管理者になる。

共有名を更新

  • CREATE SHARE権限を持っています。
  • 共有の所有者になります。

その他の共有プロパティを更新する

  • 共有の所有者になります。

共有を削除する

  • 共有オブジェクトの所有者になります。

コンピュート要件

  • Databricks ノートブックを使用して共有を作成する場合、コンピュート リソースは Databricks Runtime 11.3 LTS 以上を使用し、標準または専用アクセス モード (以前の共有およびシングル ユーザー) を持っている必要があります。
  • SQLステートメントを使用して共有にスキーマを追加する場合 (またはスキーマを更新または削除する場合)、 Databricks Runtime 13.3 LTS以上を実行している SQL ウェアハウスまたはコンピュートを使用する必要があります。 カタログエクスプローラ を使用して同じことを実行する場合、コンピュートの要件はありません。

共有オブジェクトを作成してください

共有オブジェクトを作成する前に、要件を満たしていることを確認してください。

共有を作成するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのCREATE SHARE SQLコマンドを使用します。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. 自分が共有 タブで、 データの共有 ボタンをクリックします。

  4. 共有の作成 ページで、共有の 名前 とオプションのコメントを入力します。

  5. 保存して続行 をクリックします。

    データ資産を引き続き追加することも、停止して後で戻ることもできます。

  6. [データ アセットの追加] タブで、共有するデータ アセットを選択します。

    詳細な手順、追加要件、および関連する制限については、以下を参照してください。

  7. 保存して続行 をクリックします。

  8. [ ノートブックの追加 ] タブで、共有するノートブックを選択します。

    詳細な手順については、「 共有にノートブック ファイルを追加する」を参照してください。

  9. 保存して続行 をクリックします。

  10. [ 受信者の追加 ] タブで、共有する受信者を選択します。

    詳細な手順については、Delta Sharing データ共有へのアクセスを管理する (プロバイダー向け)を参照してください。

  11. データの共有 」をクリックして、受信者とデータを共有します。

共有にテーブルを追加する

共有にテーブルを追加する前に、要件を満たしていることを確認してください。

ワークスペース管理者であり、テーブルを含むスキーマとカタログに対する USE SCHEMA および USE CATALOG のアクセス許可をワークスペース管理者グループから継承した場合、テーブルを共有に追加することはできません。 まず、スキーマとカタログに対する USE SCHEMA 権限と USE CATALOG 権限を自分自身に付与する必要があります。

注記

テーブルコメント、列コメント、 および主キー制約 は、2024 年 7 月 25 日以降に Databricks-to-Databricks 共有を使用して受信者と共有される共有に含まれます。 リリース日より前に受信者と共有された共有を通じてコメントと制約の共有を開始する場合は、コメントと制約の共有をトリガーするために、受信者のアクセス権を取り消して再付与する必要があります。

テーブルを共有に追加するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのSQLコマンドを使用します。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. 自分が共有 タブで、テーブルを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理 > データ アセットの追加 をクリックします。

  5. [ テーブルの追加 ] ページで、スキーマ全体 (データベース) または個々のテーブルを選択します。

    • テーブルまたはビューを選択するには、まずカタログを選択し、次にテーブルを含むスキーマを選択し、次にテーブルまたはビュー自体を選択します。

      ワークスペース検索を使用して、名前、列名、またはコメントでテーブルを検索できます。ワークスペースオブジェクトの検索を参照してください。

    • スキーマを選択するには、まずカタログを選択し、次にスキーマを選択します。

      共有スキーマの詳細については、「 共有にスキーマを追加する」を参照してください。

  6. 履歴 : テーブル履歴を共有して、受信者がタイムトラベルクエリを実行したり、 Spark 構造化ストリーミングを使用してテーブルを読み取ったりできるようにします。 Databricks-to-Databricks共有の場合、パフォーマンスを向上させるために、テーブルのDeltaログも共有されます。履歴共有によるテーブル読み取りパフォーマンスの向上を参照してください。履歴共有には、Databricks Runtime 12.2 LTS 以降が必要です。

注記

また、顧客が table_changes() 関数を使用してテーブルのチェンジデータフィード (CDF) をクエリできるようにする場合は、 テーブルで CDF を有効にして から、 WITH HISTORYで共有する必要があります。

  1. (オプション) エイリアス または パーティション 列の下にある吹き出しとアイコン。をクリックして、エイリアスまたはパーティションを追加します。エイリアスとパーティションは、スキーマ全体を選択した場合には使用できません。テーブル履歴は、スキーマ全体を選択する場合、デフォルトによって含まれます。

  2. [ 保存 ]をクリックします。

共有からテーブルを削除する方法については、共有の更新を参照してください。

共有するテーブルパーティションの指定

テーブルを共有に追加するときにテーブルの一部のみを共有するには、パーティション仕様を指定します。カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのSQLコマンドを使用して、共有にテーブルを追加するとき、または共有を更新するときにパーティションを指定します。 「共有にテーブルを追加する」および「共有を更新する」を参照してください。

次の SQL の例では、 inventory テーブルのデータの一部を共有し、 yearmonthdate の各カラムでパーティション化されています。

  • 2021年のデータ。
  • 2020年12月のデータ。
  • 2019年12月25日のデータ。
SQL
ALTER SHARE share_name
ADD TABLE inventory
PARTITION (year = "2021"),
(year = "2020", month = "Dec"),
(year = "2019", month = "Dec", date = "2019-12-25");

受信者のプロパティを使用してパーティションフィルタリングを行います

データ受信者のプロパティに一致するテーブルパーティションを共有できます (パラメータ化されたパーティション共有とも呼ばれます)。

デフォルトのプロパティには、次のものが含まれます。

  • databricks.accountId:データ受信者が所属する Databricks アカウント(Databricks-to-Databricks 共有のみ)。
  • databricks.metastoreId: データ受信者が属する Unity Catalog メタストア (Databricks間共有のみ)。
  • databricks.name: データ受信者の名前。

受信者を作成または更新するときに、任意のカスタム プロパティを作成できます。

受信者プロパティによるフィルター処理を使用すると、複数の Databricks アカウント、ワークスペース、およびユーザー間で同じ共有を使用して同じテーブルを共有できますが、それらの間のデータ境界は維持されます。

たとえば、テーブルに Databricks アカウント ID 列が含まれている場合は、Databricks アカウント ID で定義されたテーブルパーティションを持つ 1 つの共有を作成できます。 共有すると、Delta Sharing は、各受信者に Databricks アカウントに関連付けられているデータのみを動的に配信します。

Delta Sharing でのパラメーターベースの動的パーティション共有の図

プロパティごとに動的にパーティション分割する機能がなければ、受信者ごとに個別の共有を作成する必要があります。

共有を作成または更新するときに受信者のプロパティでフィルター処理するパーティションを指定するには、カタログ エクスプローラーを使用するか、Databricks ノートブックまたは Databricks SQL クエリ エディターの CURRENT_RECIPIENT SQL 関数を使用できます。

注記

受信者のプロパティは、Databricks Runtime 12.2 以降で使用できます。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. 自分が共有 タブで、更新する共有を見つけて、その名前をクリックします。

  4. アセットの管理 > データ アセットの追加 をクリックします。

  5. [ テーブルの追加 ] ページで、テーブルを含むカタログとデータベースを選択し、テーブルを選択します。

    テーブルが含まれているカタログとデータベースがわからない場合は、ワークスペース検索を使用して、名前、列名、またはコメントでテーブルを検索できます。ワークスペースオブジェクトの検索を参照してください。

  6. (オプション) パーティション 列の下の吹き出しとアイコン。をクリックして、パーティションを追加します。

    パーティションをテーブルに追加 ダイアログで、次の構文を使用してプロパティ・ベースのパーティション仕様を追加します。

    (<column-name> = CURRENT_RECIPIENT().<property-key>)

    例えば

    (country = CURRENT_RECIPIENT().'country')
  7. [ 保存 ]をクリックします。

削除ベクトルまたは列マッピングを含むテーブルを共有に追加する

備考

プレビュー

この機能は パブリック プレビュー段階です。

削除ベクトルは、Delta テーブルで有効にできるストレージ最適化機能です。 削除ベクトルとはを参照してください。

Databricks では、Delta テーブルの列マッピングもサポートされています。 Delta Lake 列マッピングを使用した列の名前変更と削除を参照してください。

削除ベクトルまたは列マッピングを使用してテーブルを共有するには、履歴と共有する必要があります。 共有にテーブルを追加するを参照してください。

削除ベクトルまたは列マッピングを使用してテーブルを共有すると、受信者は SQLウェアハウス、 Databricks Runtime 14.1 以降を実行しているコンピュート、またはオープンソース delta-sharing-spark 3.1 以上を実行しているコンピュートを使用してテーブルをクエリできます。 削除ベクトルまたは列マッピングが有効になっているテーブルの読み取りおよび削除ベクトルまたは列マッピングが有効になっているテーブルの読み取りを参照してください。

共有にスキーマを追加する

スキーマを共有に追加する前に、要件を満たしていることを確認してください。

スキーマ全体を共有に追加すると、受信者は共有を作成した時点のスキーマ内のすべてのデータ資産だけでなく、時間の経過とともにスキーマに追加されたすべての資産にアクセスできるようになります。これには、スキーマ内のすべてのテーブル、ビュー、ボリュームが含まれます。この方法で共有されるテーブルには、常に完全な履歴が含まれます。

受信者とスキーマを共有する

共有にスキーマを追加するには、「 共有にテーブルを追加する」の指示に従い、スキーマの追加方法を指定する内容に注意してください。

SQLを使用してスキーマを追加、更新、または削除するには、 Databricks Runtime 13.3 LTS以上を実行している SQL ウェアハウスまたはクラスターが必要です。 カタログエクスプローラ を使用して同じことを実行する場合、コンピュートの要件はありません。

制限事項

  • スキーマ全体を共有する場合、テーブル別名、パーティション、ボリューム別名は使用できません。スキーマ内のアセットにエイリアスまたはパーティションを作成した場合、スキーマ全体を共有に追加すると、それらは削除されます。

  • スキーマ内のテーブルまたはボリュームの詳細オプションを指定する場合は、SQL を使用してテーブルまたはボリュームを共有し、テーブルまたはボリュームに別のスキーマ名を持つエイリアスを付ける必要があります。

ABAC ポリシーによって保護されたテーブルとスキーマを共有に追加する

備考

ベータ版

この機能は ベータ版です。

属性ベースのアクセス制御 (ABAC)は、 Databricks全体に柔軟でスケーラブルな一元的なアクセス制御を提供するデータガバナンス モデルです。

標準テーブルと同様に、ABAC ポリシーによって保護されたテーブルまたはスキーマを共有できます。データ資産に ABAC ポリシーを適用する方法については、 「属性ベースのアクセス制御 (ABAC) ポリシーの作成と管理」を参照してください。

ただし、 特権ユーザー である必要があります。特権ユーザーは共有所有者で あり、 データ資産に適用される ABAC ポリシーから除外されるユーザーです。このポリシーは受信者のアクセスを管理するものではありません。受信者は共有アセットに完全にアクセスできます。ABAC 制限が適用されます。

ストリーミングテーブルを共有に追加する

ストリーミングテーブルは、ストリーミングまたは増分データ処理の追加サポートを備えた通常の Delta テーブルです。 ストリーミングテーブルは、追加専用のデータソース用に設計されており、入力を一度だけ処理します。 「Databricks SQLでストリーミングテーブルを使用する」を参照してください。

ストリーミング テーブルを共有に追加する前に、要件を満たしていることを確認してください。

追加要件

  • ワークフロー、ノートブック向けサーバレス コンピュート、Lakeflow 宣言型パイプライン は、ストリーミングテーブル共有が設定されているアカウントで有効にする必要があります。サーバレス コンピュートへの接続を参照してください。

  • ワークスペースでワークスペースとカタログのバインディングが有効になっている場合は、ワークスペースにストリーミングテーブルが存在するカタログへの読み取りおよび書き込みアクセス権があることを確認します。 詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。

  • 共有可能なストリーミングテーブルは、 Delta テーブルまたはその他の共有可能なストリーミングテーブルまたはビューで定義する必要があります。

  • ストリーミングテーブルを共有に追加するときは、Databricks Runtime LTS 13.3 以上のコンピュートあるいはSQLウェアハウスを使用する必要があります。

制限事項

  • ストリーミングテーブルには、行フィルターと列マスクを含めることはできません。

    • ストリーミングテーブルのベーステーブルには、行フィルターと列マスクを含めることができます。
  • ストリーミングテーブルにはパーティション フィルターを含めることはできません。 代わりに、ストリーミングテーブルの上にビューを作成します。

受信者とストリーミングテーブルを共有する

ストリーミングテーブルを共有に追加するには:

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ Shared by me ] タブで、ストリーミングテーブルを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理」>「アセットの編集 」をクリックします。

  5. [ アセットの編集 ] ページで、共有するストリーミングテーブルを検索または参照して選択します。

  6. (オプション) [エイリアス ] 列で [ 吹き出しとアイコン。 ] をクリックしてエイリアスまたは代替ストリーミングテーブル名を指定し、ストリーミングテーブル名を読みやすくします。エイリアスは、受信者に表示され、クエリで使用する必要がある名前です。エイリアスが指定されている場合、受信者は実際のストリーミングテーブル名を使用できません。

  7. [ 保存 ]をクリックします。

共有からストリーミングテーブルを削除する方法については、「 共有の更新」を参照してください

管理された Iceberg テーブルを共有に追加する

備考

プレビュー

この機能は パブリック プレビュー段階です。

Apache Icebergは、アナリティクス ワークロード用のオープンソース テーブル形式です。 Databricks では、Unity Catalog 内に マネージ Icebergテーブルと呼ばれる Iceberg テーブル を作成できます。

管理対象 Iceberg テーブルを共有に追加する前に、要件を満たしていることを確認してください。

Icebergテーブルと管理対象Icebergテーブルの制限が適用されます。 Icebergテーブルの制限事項を参照してください。

管理された Iceberg テーブルを共有に追加するには、次のようにします。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有 ] タブで、マネージド Iceberg テーブルを追加する共有を見つけて、その名前をクリックします。

  4. [ アセットの管理 ] > [ アセットの編集 ] をクリックします。

  5. アセットの編集 」ページで、共有する管理された Iceberg テーブルを検索または参照し、それを選択します。

  6. (オプション) [エイリアス ] 列で [ 吹き出しとアイコン。 ] をクリックしてエイリアスを指定するか、別のマネージド Iceberg テーブル名を指定すると、名前が読みやすくなります。エイリアスは、受信者に表示され、クエリで使用する必要がある名前です。エイリアスが指定されている場合、受信者は実際のマネージド Iceberg テーブル名を使用できません。

  7. [ 保存 ]をクリックします。

外部スキーマまたはテーブルを共有に追加する

備考

ベータ版

この機能は ベータ版です。

レイクハウスフェデレーションを使用すると、 Databricksを使用して外部データソースに対してクエリを実行できます。 Unity Catalogでデータ ガバナンスを追加して、これらのテーブルをクエリすることで、外部システムによって管理されるデータとメタデータを含む外部スキーマとテーブルを作成できます。 外部ソースへの接続の詳細については、 「レイクハウスフェデレーションとは?」を参照してください。 。

Delta Sharing を使用すると、Databricks にデータをコピーしたり、複雑なネットワーク設定や資格情報の転送を行ったりすることなく、元の場所から外部データを安全に共有できます。

外部スキーマまたはテーブルを共有に追加する前に、要件を満たしていることを確認してください。

追加要件

  • 外部スキーマまたはフォーリンテーブル共有が設定されているアカウントで 、ワークフロー、ノートブック、および LakeFlow 宣言型パイプラインに対してサーバレス コンピュート を有効にする必要があります。 サーバレス コンピュートに接続を参照してください。

  • 安全ストレージの使用を選択した場合は、アカウント レベルで 「安全ストレージのDelta Sharing – 拡張アクセス」 プレビューを有効にする必要があります。 「Databricks プレビューの管理」を参照してください。

マテリアライズドデータの保存場所

外部のスキーマとテーブルを共有する場合、データはプロバイダー側でクエリされ、一時的にマテリアライズされます。デフォルトでは、具体化されたデータは、Databricks のデフォルト ストレージ (プライベート プレビュー)を使用して非表示のスキーマに保存されます。デフォルトのストレージの要件を満たし、制限事項を遵守していることを確認してください。

デフォルトストレージのリージョン可用性は制限されています。 us-central1us-east1europe-west3asia-south1のリージョンでのみ使用できます。

Databricks のデフォルト ストレージの使用をオプトアウトし、一時的な具体化に独自のストレージを使用するには、サポート ケースを開きます。

推奨される使用パターン

クエリ結果はクエリごとにオンデマンドで生成されるため、フォーリンテーブルとスキーマの共有は、テーブルの共有やマテリアライズドビューに比べてコスト効率が低くなる可能性があります。 Databricks では、パフォーマンスを向上させるために次のことを推奨しています。

  • 一般的なクエリ結果のサイズは 10 GB 未満に抑えます。
  • 頻繁なデータ ダンプの代わりに、アドホックな探索的クエリを使用します。
  • クラウドトークン共有を使用する場合は、コスト効率とパフォーマンスを向上させるために、フォーリンテーブルの上に作成されたマテリアライズドビューを共有することを検討してください。

外部スキーマまたはテーブルを受信者と共有する

外部スキーマまたはテーブルを共有に追加するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのSQLコマンドを使用します。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、フォーリンテーブルまたはスキーマを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理」>「アセットの編集 」をクリックします。

  5. [アセットの編集] ページで、共有するフォーリンテーブルまたはスキーマを検索または参照して選択します。

  6. (オプション)「 エイリアス」 列で、「 吹き出しとアイコン。 」をクリックしてエイリアス、または代替の外部スキーマまたは表名を指定し、外部スキーマまたは表名を読みやすくします。エイリアスは、受信者が表示し、クエリで使用する必要がある名前です。エイリアスが指定されている場合、受信者は実際の外部スキーマまたはテーブル名を使用できません。

  7. [ 保存 ]をクリックします。

共有にビューを追加する

ビューは、1 つ以上のテーブルまたは他のビューから作成される読み取り専用オブジェクトです。 ビューは、Unity Catalog メタストア内の複数のスキーマとカタログに含まれるテーブルやその他のビューから作成できます。 ビューの作成と管理を参照してください。

共有にビューを追加する前に、要件を満たしていることを確認してください。

追加要件

  • ワークフロー、ノートブック、およびLakeflow 宣言型パイプラインのサーバレス コンピュート は、ビュー共有が設定されているアカウントで有効にする必要があります。サーバレス コンピュートへの接続を参照してください。

  • 共有可能なビューは、 Delta テーブル、その他の共有可能なビュー、またはローカルのマテリアライズドビューとストリーミングテーブルで定義する必要があります。 共有可能なビューはフォーリンテーブルで定義できません。

  • 共有テーブルまたは共有ビューを参照するビューは共有できません。

  • SQL共有にビューを追加するときは、Databricks Runtime 13.3LTS 以上で ウェアハウスまたはコンピュートを使用する必要があります。

  • ワークスペースでワークスペースとカタログのバインドが有効になっている場合は、ワークスペースにカタログへの読み取りおよび書き込みアクセス権があることを確認してください。詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。

受信者とビューを共有する

このセクションでは、カタログ エクスプローラー、Databricks CLI、または Databricks ノートブックまたは Databricks SQL クエリ エディターの SQL コマンドを使用して、共有にビューを追加する方法について説明します。 Unity Catalog REST API を使用する場合は、REST API リファレンスの PATCH /api/2.1/unity-catalog/shares/ を参照してください。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、ビューを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理 > データ アセットの追加 をクリックします。

  5. [ テーブルの追加 ] ページで、共有するビューを検索または参照し、それを選択します。

  6. (オプション)吹き出しとアイコン。 「エイリアス 」列の下の「 」をクリックして別のビュー名を指定するか、「 エイリアス 」をクリックしてビュー名を読みやすくします。エイリアスは、受信者に表示され、クエリで使用する必要がある名前です。受信者は、エイリアスが指定されている場合、実際のビュー名を使用できません。

  7. [ 保存 ]をクリックします。

共有からビューを削除する方法については、共有の更新を参照してください。

動的ビューを共有に追加して行と列をフィルター処理する

ダイナミックビューを使用して、次のようなテーブルデータへのきめ細かなアクセス制御を設定できます。

  • 列または行のレベルでのセキュリティ。
  • データマスキング。

CURRENT_RECIPIENT() 関数を使用する動的ビューを作成する場合は、受信者定義で指定したプロパティに従って受信者のアクセスを制限できます。

このセクションでは、動的ビューを使用して、行レベルと列レベルの両方でテーブルデータへの受信者のアクセスを制限する例を示します。

必要条件

  • 共有にビューを追加するための要件を満たしていることを確認します。
  • Databricks Runtime バージョン : CURRENT_RECIPIENT 関数は、Databricks Runtime 14.2 以降でサポートされています。

制限事項

  • ビュー共有のすべての制限が適用されます。
  • プロバイダーが CURRENT_RECIPIENT 関数を使用するビューを共有する場合、プロバイダーは共有コンテキストのためにビューに対して直接クエリを実行できません。このような動的ビューをテストするには、プロバイダーがビューを自分自身と共有し、受信者としてビューに対してクエリを実行する必要があります。
  • プロバイダーは、動的ビューを参照するビューを作成できません。

受信者のプロパティを設定する

これらの例では、共有するテーブルに countryという名前の列があり、一致する country プロパティを持つ受信者のみが特定の行または列を表示できます。

受信者のプロパティは、カタログ エクスプローラーまたは Databricks ノートブックまたは SQL クエリ エディターの SQL コマンドを使用して設定できます。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. 「受信者」 タブで、プロパティを追加する受信者を見つけて、その名前をクリックします。

  4. [プロパティの編集 ] をクリックします。

  5. 「 受信者のプロパティを編集 」ダイアログで、キーとして列名(この場合は country)を入力し、値としてフィルタリングする値( CAなど)を入力します。

  6. [ 保存 ]をクリックします。

受信者に行レベルの権限を持つダイナミックビューを作成してください

この例では、country プロパティが一致する受信者のみが特定の行を表示できます。

SQL
CREATE VIEW my_catalog.default.view1 AS
SELECT * FROM my_catalog.default.my_table
WHERE country = CURRENT_RECIPIENT('country');

別のオプションとして、データ プロバイダーが、ファクト テーブル フィールドを受信者プロパティにマップする別のマッピング テーブルを保持することもできます。これにより、受信者のプロパティとファクト テーブル フィールドを分離して柔軟性を高めることができます。

受信者用に列レベルの権限を持つダイナミックビューを作成してください

この例では、country プロパティに一致する受信者だけが特定の列を表示できます。 他のユーザーには、返されたデータが次のように表示されます REDACTED

SQL
CREATE VIEW my_catalog.default.view2 AS
SELECT
CASE
WHEN CURRENT_RECIPIENT('country') = 'US' THEN pii
ELSE 'REDACTED'
END AS pii
FROM my_catalog.default.my_table;

動的ビューを受信者と共有する

動的ビューを受信者と共有するには、標準ビューの場合と同じ SQL コマンドまたは UI プロシージャを使用します。 共有にビューを追加するを参照してください。

マテリアライズドビューを共有に追加する

ビューと同様に、マテリアライズドビューはクエリの結果であり、テーブルと同様にアクセスできます。通常のビューとは異なり、マテリアライズドビューの結果には、マテリアライズドビューが最後に更新されたときのデータの状態が反映されます。マテリアライズドビューの詳細については、Databricks SQLの「マテリアライズドビューを使用する」を参照してください。

マテリアライズドビューを共有に追加する前に、要件を満たしていることを確認してください。

追加要件

  • サーバレス コンピュート for ワークフロー、ノートブック、Lakeflow 宣言型パイプライン は、マテリアライズドビュー 共有が設定されているアカウントで有効にする必要があります。サーバレス コンピュートへの接続を参照してください。

  • ワークスペースでワークスペースとカタログのバインドが有効になっている場合は、そのワークスペースに、マテリアライズドビューを含むカタログへの読み取りおよび書き込みアクセス権があることを確認してください。詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。

  • Shareable マテリアライズドビューは、 Delta テーブルまたはその他の共有可能なストリーミングテーブル、ビュー、またはマテリアライズドビューで定義する必要があります。

  • 共有にマテリアライズドビューを追加するときは 13.3 以上で SQLウェアハウスまたはコンピュートを使用する必要があります。Databricks RuntimeLTS

制限事項

  • マテリアライズドビューには行フィルターを含めることはできませんが、マテリアライズドビューのベーステーブルには行フィルターと列マスクを含めることができます。
  • マテリアライズドビューには、パーティションフィルタを含めることはできません。 代わりに、マテリアライズドビューの上にビューを作成します。

マテリアライズドビューを受信者と共有する

このセクションでは、DatabricksCLI SQLDatabricksノートブックまたは クエリ エディタで カタログエクスプローラ、 、または コマンドを使用して、マテリアライズドビューを共有に追加する方法について説明します。Databricks SQLUnity Catalog REST API を使用する場合は、REST API リファレンスの PATCH /api/2.1/unity-catalog/shares/ を参照してください。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、マテリアライズドビューを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理」>「アセットの編集 」をクリックします。

  5. [ アセットの編集 ] ページで、共有するマテリアライズドビューを検索または参照し、それを選択します。

  6. (オプション) [エイリアス ] 列で [ 吹き出しとアイコン。 ] をクリックしてエイリアスまたは代替のマテリアライズドビュー名を指定し、マテリアライズドビューの名前を読みやすくします。エイリアスは、受信者に表示され、クエリで使用する必要がある名前です。受信者は、エイリアスが指定されている場合、実際のマテリアライズドビュー名を使用できません。

  7. [ 保存 ]をクリックします。

共有からマテリアライズドビューを削除する方法については、共有の更新を参照してください。

共有にボリュームを追加します

ボリュームは、クラウド オブジェクト ストレージの場所にあるストレージの論理ボリュームを表す Unity Catalog オブジェクトです。 これらは主に、表形式以外のデータ資産に対するガバナンスを提供することを目的としています。 Unity Catalogボリュームとはを参照してください。

ボリュームを共有に追加する前に、要件を満たしていることを確認してください。

追加要件

  • ボリューム共有は、 Databricks-to-Databricks 共有でのみサポートされます。
  • 共有にボリュームを追加するときは、バージョン 2023.50 以降の SQLウェアハウス、または Databricks Runtime 14.1 以降のコンピュート リソースを使用する必要があります。
  • プロバイダー側のボリューム ストレージにカスタム ネットワーク構成 (ファイアウォールやプライベート リンクなど) がある場合、プロバイダーは、受信者のコントロール プレーンとデータ プレーンのアドレスが適切に許可リストに登録されていることを確認して、ボリュームのストレージ場所に接続できるようにする必要があります。
注記

ボリュームコメントは、2024年7月25日以降に Databricks-to-Databricks 共有を使用して受信者と共有される共有に含まれます。 リリース日より前に受信者と共有された共有を通じてコメントの共有を開始する場合、コメント共有をトリガーするには、受信者のアクセス権を取り消して再付与する必要があります。

受信者とボリュームを共有する

このセクションでは、カタログエクスプローラ、Databricks CLI、または Databricks ノートブックまたは SQL クエリ エディターの SQL コマンドを使用して、共有にボリュームを追加する方法について説明します。 Unity Catalog REST APIを使用したい場合は、REST APIリファレンスのPATCH /api/2.1/unity-catalog/shares/ を参照してください。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、ボリュームを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理」>「アセットの編集 」をクリックします。

  5. [ アセットの編集 ] ページで、共有するボリュームを検索または参照して選択します。

    または、ボリュームを含むスキーマ全体を選択することもできます。「共有へのスキーマの追加」を参照してください。

  6. (オプション)吹き出しとアイコン。 「エイリアス 」列の下の「 」をクリックして代替ボリューム名を指定するか、「 エイリアス 」をクリックしてボリューム名を読みやすくします。

    エイリアスは、スキーマ全体を選択した場合は使用できません。

    エイリアスは、受信者に表示され、クエリで使用する必要がある名前です。エイリアスが指定されている場合、受信者は実際のボリューム名を使用できません。

  7. [ 保存 ]をクリックします。

共有からのボリュームの削除に関する情報については、共有の更新を参照してください。

共有にモデルを追加する

モデルを共有に追加する前に、要件を満たしていることを確認してください。

注記

モデル コメントとモデル バージョン コメントは、 Databricks-to-Databricks 共有を使用して共有される共有に含まれます。

追加要件

  • モデル共有は、 Databricks-to-Databricks 共有でのみサポートされます。
  • 共有にモデルを追加するときは、バージョン 2023.50 以降の SQLウェアハウス、または Databricks Runtime 14.0 以降のコンピュート リソースを使用する必要があります。

受信者とモデルを共有する

このセクションでは、カタログ エクスプローラー、Databricks CLI、または Databricks ノートブックまたは SQL クエリ エディターの SQL コマンドを使用して、共有にモデルを追加する方法について説明します。 Unity Catalog REST APIを使用したい場合は、REST APIリファレンスの PATCH /api/2.1/unity-catalog/shares/を参照してください。

共有にモデルを追加するには:

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、モデルを追加する共有を見つけて、その名前をクリックします。

  4. アセットの管理」>「アセットの編集 」をクリックします。

  5. アセットの編集 」ページで、共有するモデルを検索または参照し、それを選択します。

    または、モデルを含むスキーマ全体を選択することもできます。「共有へのスキーマの追加」を参照してください。

  6. (オプション)[エイリアス]吹き出しとアイコン。 列の下の [] をクリックして代替モデル名を指定するか、[ エイリアス] をクリックしてモデル名を読みやすくします。

    エイリアスは、スキーマ全体を選択した場合は使用できません。

    エイリアスは、受信者に表示され、クエリで使用する必要がある名前です。受信者は、エイリアスが指定されている場合、実際のモデル名を使用できません。

  7. [ 保存 ]をクリックします。

共有からモデルを削除する方法については、共有の更新を参照してください。

ノートブック ファイルを共有に追加する

ノートブック ファイルを共有に追加する前に、要件を満たしていることを確認してください。

カタログエクスプローラ を使用して、ノートブック ファイルを共有に追加します。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [クイック アクセス ] ページで、[ Delta Sharing] > ボタンをクリックします。

  3. [ 自分が共有] タブで、ノートブックを追加する共有を見つけて、その名前をクリックします。

  4. [ アセットの管理 ] をクリックし、[ ノートブック ファイルの追加 ] を選択します。

  5. [ ノートブック ファイルの追加 ] ページで、ファイル アイコンをクリックして、共有するノートブックを参照します。

    • 共有したいファイルをクリックして、「 選択 」をクリックします。
    • (オプション) [共有名 ] フィールド に、ファイルのユーザーフレンドリなエイリアスを指定します。これは受信者に表示される識別子です。
    • [ストレージの場所 ] で、ノートブックを保存するクラウド ストレージ内の外部の場所を入力します。 定義された外部位置の下にサブパスを指定できます。 外部ロケーションを指定しない場合、ノートブックはメタストア レベルのストレージの場所 (または「メタストアのルートの場所」) に保存されます。 メタストアのルートの場所が定義されていない場合は、ここに外部の場所を入力する必要があります。 「既存のメタストアに管理対象ストレージを追加する」を参照してください。
  6. [ 保存 ]をクリックします。

共有ノートブックファイルが 「アセット 」タブの ノートブックファイル リストに表示されます。

共有からノートブック ファイルを削除する

共有からノートブック ファイルを削除するには:

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、ノートブックを含む共有を見つけ、共有名をクリックします。

  4. [アセット] タブで、共有から削除するノートブック ファイルを見つけます。

  5. 行の右側にある ケバブメニューのアイコン。 ケバブメニューをクリックし、[ ノートブックファイルの削除 ]を選択します。

  6. 確認ダイアログで、[ 削除 ] をクリックします。

共有内のノートブック ファイルを更新する

既に共有しているノートブックを更新するには、再度追加して、[ 共有者 ] フィールドに新しいエイリアスを割り当てる必要があります。Databricks では、ノートブックの改訂された状態を示す名前 ( <old-name>-update-1など) を使用することをお勧めします。変更の受取人への通知が必要な場合があります。受信者は、更新を利用するために新しいノートブックを選択して複製する必要があります。

受信者に共有へのアクセス権を付与する

受信者に共有へのアクセスを許可する前に、要件を満たしていることを確認してください。

手順については、 「Delta Sharing データ共有へのアクセスの管理 (プロバイダー向け)」を参照してください。このページでは、受信者の共有へのアクセスを取り消す方法についても説明します。

株式と共有の詳細を表示する

共有および共有の詳細を表示する前に、要件を満たしていることを確認してください。

共有のリストまたは共有に関する詳細を表示するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのSQLコマンドを使用します。

シェアの詳細は次のとおりです。

  • 共有の所有者、作成者、作成タイムスタンプ、アップデーター、更新されたタイムスタンプ、コメント。
  • 共有内のデータ資産。
  • 共有へのアクセス権を持つ受信者。
  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [共有 ] タブを開いて、共有の一覧を表示します。

  4. [ 詳細 ] タブで共有の詳細を表示します。

共有に対する権限を持っている受信者を表示します

受信者を表示する前に、要件を満たしていることを確認してください。

受信者にアクセスが許可されている共有のリストを表示するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのSHOW GRANTS TO RECIPIENT SQLコマンドを使用します。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有] タブで、受信者を見つけて選択します。

  4. [ 受信者 ] タブに移動して、共有にアクセスできる受信者の一覧を表示します。

共有を更新する

共有を更新する前に、要件を満たしていることを確認してください。

共有は次の方法で更新できます。

  • 共有の名前を変更します。
  • 共有からテーブル、ビュー、ボリューム、スキーマを削除します。
  • 共有のコメントを追加または更新します。
  • テーブルのエイリアス (受信者に表示されるテーブル名) の名前を変更します。
  • テーブルの履歴データへのアクセスを有効または無効にして、受信者がテーブルのタイムトラベルクエリまたはストリーミング読み取りを実行できるようにします。
  • パーティション定義を追加、更新、または削除します。
  • 共有の所有者を変更します。

共有に対してこれらの更新を行うには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのSQLコマンドを使用します。 ただし、カタログ エクスプローラーを使用して共有の名前を変更することはできません。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. 自分が共有 タブで、更新する共有を見つけて、その名前をクリックします。

共有の詳細ページで、次の操作を行います。

  • [所有者] フィールドまたは [コメント] フィールドの横にある 編集アイコン 編集アイコンをクリックして、これらの値を更新します。
  • アセット行のケバブメニュー ケバブメニューのアイコン。 ボタンをクリックして、アセットを削除します。
  • アセットの管理」>「アセットの編集 」をクリックして、他のすべてのプロパティを更新します。
    • アセットを削除するには、アセットの横にあるチェックボックスをオフにします。
    • パーティション定義を追加、更新、または削除するには、[ 詳細オプション ] をクリックします。

共有所有者を更新する際の考慮事項

共有所有者は、ABAC ポリシーなどの承認およびセキュリティ機能の評価方法に影響します。共有所有権を過剰な権限を持つユーザーに譲渡すると、ABAC ポリシーによって保護されたテーブルまたはスキーマがある場合、受信者は過剰な権限を持つことができます。

共有を削除する

共有を削除すると、受信者は共有データにアクセスできなくなります。共有オブジェクトを削除する前に、要件を満たしていることを確認してください。

共有を削除するには、カタログ エクスプローラー、 Databricks Unity Catalog CLI 、またはDatabricksノートブックまたはDatabricks SQLクエリ エディターのDELETE SHARE SQLコマンドを使用します。 あなたはそのシェアの所有者でなければなりません。

  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

  2. [カタログ ] ウィンドウの上部にある [歯車のアイコン。] 歯車アイコンをクリックし、[ Delta Sharing ] を選択します。

    または、[ クイック アクセス ] ページで [Delta Sharing > ] ボタンをクリックします。

  3. [ 自分が共有したユーザー] タブで、削除する共有を見つけて、その名前をクリックします。

  4. ケバブメニューのアイコン。ケバブメニューをクリックし、[ 削除 ]を選択します。

  5. 確認ダイアログで、[ 削除 ] をクリックします。