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

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 テーブル、ビュー、またはマテリアライズドビューを共有に追加するには、次の操作を行う必要があります。

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

共有にボリュームを追加するには、次の操作を行う必要があります。

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

共有にモデルを追加するには、次の操作を行う必要があります。

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

スキーマ全体を共有するには、次の操作を行う必要があります。

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

ノートブック ファイルを共有に追加するには、次の条件を満たしている必要があります。

  • ノートブックに対する CAN READ 権限を持つ共有所有者。

受信者に共有へのアクセス権を付与するには、次のいずれかである必要があります。

  • メタストア管理者。
  • 共有オブジェクトと受信者オブジェクト (USE SHARE + SET SHARE PERMISSION) または共有の所有者) および (USE RECIPIENT または受信者の所有者) の両方に対する委任されたアクセス許可または所有権を持つユーザー。

共有を表示するには、次のいずれかである必要があります。

  • メタストアの管理者(すべてを表示できる)
  • USE SHARE 権限を持つユーザー (すべて閲覧可能)
  • シェアオブジェクトの所有者

コンピュートの要件:

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

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

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

必要な権限 : メタストア管理者、またはメタストアの CREATE SHARE 権限を持つユーザーである必要があります。

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

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

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

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

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

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

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

  6. データ資産の追加 タブで、共有するテーブル、ストリーミングテーブル、ボリューム、ビュー、マテリアライズドビュー、およびモデルを選択します。

    詳細な手順については、以下を参照してください。

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

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

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

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

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

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

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

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

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

注記

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

必要なパーミッション : 共有オブジェクトの所有者であること、テーブルを含むカタログとスキーマに対する USE CATALOGUSE SCHEMA 、およびテーブルに対する SELECT 権限を持っている必要があります。テーブルを共有する限り、 SELECT 権限を維持する必要があります。詳細については、「 要件」を参照してください。

注記

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

  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 、またはSQL Databricksノートブックの コマンド、またはDatabricks 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 以上を実行しているコンピュートを使用してテーブルをクエリできます。 削除ベクトルまたは列マッピングが有効になっているテーブルの読み取りおよび削除ベクトルまたは列マッピングが有効になっているテーブルの読み取りを参照してください。

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

備考

プレビュー

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

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

必要な権限 : 共有オブジェクトの所有者であり、ストリーミングテーブルを含むカタログとスキーマに USE CATALOGUSE SCHEMA があり、ストリーミングテーブルに SELECT ている必要があります。 ストリーミングテーブルを共有する限り、 SELECT 権限を維持する必要があります。詳細については、「 要件」を参照してください。

追加要件:

  • サーバレス コンピュート for ワークフロー、ノートブック、Lakeflow 宣言型パイプライン は、ストリーミングテーブル共有が設定されているアカウントで有効にする必要があります。Enable サーバレス コンピュートを参照してください。
  • ワークスペースでワークスペースとカタログのバインディングが有効になっている場合は、ワークスペースにストリーミングテーブルが存在するカタログへの読み取りおよび書き込みアクセス権があることを確認します。 詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。
  • Shareable ストリーミングテーブルは、 Delta テーブルまたはその他の共有可能なストリーミングテーブルまたはビューで定義する必要があります。
  • ストリーミングテーブルを共有に追加するときは、Databricks Runtime LTS 13.3 以上のコンピュートあるいはSQLウェアハウスを使用する必要があります。

制限:

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

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

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

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

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

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

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

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

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

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

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

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

備考

プレビュー

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

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

必要な権限 : 共有オブジェクトの所有者であること、管理対象の Iceberg テーブルを含むカタログとスキーマの USE CATALOGUSE SCHEMA 、管理対象の Iceberg テーブルに SELECT ている必要があります。管理された Iceberg テーブルを共有する限り、 SELECT 権限を維持する必要があります。詳細については、「 要件」を参照してください。

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

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

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

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

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

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

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

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

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

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

共有にビューを追加する

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

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

必要な権限 : 共有オブジェクトの所有者であり、ビューを含むカタログとスキーマに対する USE CATALOGUSE SCHEMA を持ち、ビューに対して SELECT 必要があります。ビューを共有する限り、 SELECT 特権を維持する必要があります。詳細については、「 要件」を参照してください。

追加要件 :

  • ワークフロー、ノートブック、およびLakeflow 宣言型パイプラインのサーバレス コンピュート は、ビュー共有が設定されているアカウントで有効にする必要があります。Enable サーバレス コンピュートを参照してください。
  • 共有可能なビューは、Delta テーブルまたはその他の共有可能なビューで定義する必要があります。
  • 共有テーブルまたは共有ビューを参照するビューは共有できません。
  • SQL共有にビューを追加するときは、Databricks Runtime 13.3LTS 以上で ウェアハウスまたはコンピュートを使用する必要があります。
  • ワークスペースでワークスペースとカタログのバインドが有効になっている場合は、ワークスペースにカタログへの読み取りおよび書き込みアクセス権があることを確認してください。詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。
  • 受信者がビューを使用する際の要件と制限については、「共有ビューを読み込む」を参照してください。

共有にビューを追加するには:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

必要条件

  • Databricks Runtime バージョン : CURRENT_RECIPIENT 関数は、Databricks Runtime 14.2 以降でサポートされています。

  • 権限 :

    • ビューを作成するには、共有オブジェクトの所有者であること、ビューを含むカタログとスキーマに USE CATALOGUSE SCHEMA があり、ビューに SELECT が必要です。 意見を共有したい限り SELECT 権限を維持する必要があります。
    • 受信者のプロパティを設定するには、受信者オブジェクトの所有者である必要があります。
  • 制限事項 : ビュー共有に関するすべての制限事項 ( Databricks-to-Databricks 共有の制限を含む) に加えて、次の制限があります。

    • プロバイダーが 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の「マテリアライズドビューを使用する」を参照してください。

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

必要な権限 : 共有オブジェクトの所有者であり、マテリアライズドビューを含むカタログとスキーマに USE CATALOGUSE SCHEMA があり、マテリアライズドビューに SELECT ている必要があります。マテリアライズドビューを共有する限り、 SELECT 権限を維持する必要があります。詳細については、「 要件」を参照してください。

追加要件 :

  • サーバレス コンピュート for ワークフロー、ノートブック、Lakeflow 宣言型パイプライン は、マテリアライズドビュー 共有が設定されているアカウントで有効にする必要があります。Enable サーバレス コンピュートを参照してください。
  • ワークスペースでワークスペースとカタログのバインドが有効になっている場合は、そのワークスペースに、マテリアライズドビューを含むカタログへの読み取りおよび書き込みアクセス権があることを確認してください。詳細については、「 カタログへのアクセスを特定のワークスペースに制限する」を参照してください。
  • Shareable マテリアライズドビューは、 Delta テーブルまたはその他の共有可能なストリーミングテーブル、ビュー、またはマテリアライズドビューで定義する必要があります。
  • 共有にマテリアライズドビューを追加するときは 13.3 以上で SQLウェアハウスまたはコンピュートを使用する必要があります。Databricks RuntimeLTS

制限:

  • マテリアライズドビューには、行フィルタと列マスクを含めることはできません。
    • マテリアライズドビューのベーステーブルには、行フィルタと列マスクを含めることができます。
  1. Databricks ワークスペースで、[データアイコン。 カタログ] をクリックします。

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

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

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

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

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

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

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

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

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

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

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

注記

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

必要な権限 : 共有オブジェクトの所有者であり、ボリュームを含むカタログとスキーマに USE CATALOGUSE SCHEMA があり、ボリュームに READ VOLUME ている必要があります。ボリュームを共有する限り、 READ VOLUME 特権を維持する必要があります。詳細については、「 要件」を参照してください。

追加要件 :

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

共有にボリュームを追加するには、次のようにします。

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

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

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

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

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

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

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

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

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

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

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

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

共有にモデルを追加する

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

注記

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

必要な権限 : 共有オブジェクトの所有者であり、モデルを含むカタログとスキーマに USE CATALOGUSE SCHEMA があり、モデルに EXECUTE ている必要があります。モデルを共有する限り、 EXECUTE 権限を維持する必要があります。詳細については、「 要件」を参照してください。

追加要件 :

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

必要な権限 : 共有オブジェクトの所有者およびスキーマの所有者 (またはスキーマに対する USE SCHEMA 権限と SELECT 権限を持つユーザー) である必要があります。

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

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

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

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

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

必要なアクセス許可 : 共有オブジェクトの所有者であり、共有するノートブックに対する CAN READ アクセス許可が必要です。

  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など) を使用することをお勧めします。変更の受取人への通知が必要な場合があります。受信者は、更新を利用するために新しいノートブックを選択して複製する必要があります。

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

受信者に共有アクセス権を付与するには、カタログエクスプローラ、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの GRANT ON SHARE SQL コマンドを使用できます。

必要な権限 : 次のいずれかです。

  • メタストア管理者。
  • 共有オブジェクトと受信者オブジェクト ((USE SHARE + SET SHARE PERMISSION) または共有の所有者) および (USE RECIPIENT または受信者の所有者) の両方に対する委任されたアクセス許可または所有権。

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

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

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

必要な権限 : 返される共有のリストは、ロールと権限によって異なります。 メタストアの管理者と USE SHARE 権限を持つユーザーは、すべての共有を表示します。 それ以外の場合は、自分が共有オブジェクトの所有者である共有のみを表示できます。

詳細は次のとおりです。

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

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

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

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

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

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

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

必要なアクセス許可 : メタストア管理者であるか、 USE SHARE 特権を持っているか、共有オブジェクトの所有者である必要があります。

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

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

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

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

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

共有を更新する

テーブル、ビューボリューム、 ノートブック を共有 に追加する だけでなく、次の操作を行うことができます。

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

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

必要なアクセス許可 : 共有所有者を更新するには、メタストア管理者、共有オブジェクトの所有者、または USE SHARE 権限と SET SHARE PERMISSION 権限の両方を持つユーザーのいずれかである必要があります。共有名を更新するには、 CREATE SHARE 権限を持つユーザー であり 、共有の所有者である必要があります。その他の共有プロパティを更新するには、所有者である必要があります。

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

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

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

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

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

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

共有を削除する

共有を削除するには、カタログエクスプローラ、Databricks Unity Catalog CLI、または Databricks ノートブックまたは Databricks SQL クエリエディターの DELETE SHARE SQL コマンドを使用できます。 共有の所有者である必要があります。

共有を削除すると、受信者は共有データにアクセスできなくなります。

必要な権限 : 共有オブジェクトの所有者である必要があります。

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

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

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

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

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

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