次の方法で共有


Delta Sharing の共有を作成および管理する

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

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

  • テーブルとテーブル パーティション
  • ストリーミング テーブル
  • マネージド Iceberg テーブル
  • ビュー (行と列のレベルでアクセスを制限する動的ビューなど)
  • マテリアライズド・ビュー
  • ボリューム
  • ノートブック
  • AI モデル

スキーマ (データベース) 全体を共有する場合、受信者は、スキーマを共有する時点で、スキーマ内のすべてのテーブル、ストリーミング テーブル、ビュー、具体化されたビュー、モデル、ボリュームに、将来スキーマに追加されたデータと AI 資産にアクセスできます。

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

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

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

要件

共有を作成するには、次の条件を満たす必要があります。

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

テーブル、ストリーミング テーブル、マネージド Iceberg テーブル、ビュー、または具体化されたビューを共有に追加するには、次の操作を行う必要があります。

  • 共有の所有者であること。
  • カタログとスキーマにおけるUSE CATALOG およびUSE SCHEMA 権限を持ち、それらが含むテーブル、ストリーミングテーブル、マネージドIcebergテーブル、ビュー、またはマテリアライズドビュー、もしくはカタログまたはスキーマ自体の所有権を持っています。
  • テーブル、ストリーミング テーブル、マネージド Iceberg テーブル、ビュー、または具体化されたビューに対する SELECT 権限を持っていること。 資産を引き続き共有するには、その特権を保持する必要があります。 紛失した場合、受信者は共有を介して資産にアクセスできません。 Databricks では、共有所有者としてグループを使用することをお勧めします。

共有にボリュームを追加するには、次の条件を満たす必要があります。

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

共有にモデルを追加するには、次の条件を満たす必要があります。

  • 共有の所有者であること。
  • モデルを含むカタログとスキーマに対する USE CATALOGUSE 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 ウェアハウスまたはコンピューティングを使用する必要があります。 Catalog Explorer を使用して同じことを実行する場合、コンピューティング要件はありません。

共有オブジェクトを作成する

共有を作成するには、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで Catalog Explorer、Databricks Unity Catalog CLI、もしくは CREATE SHARE SQL コマンドを使用できます。

必要なアクセス許可: メタストア管理者であるか、メタストアの CREATE SHARE 特権を持つユーザーである必要があります。

カタログ エクスプローラー

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

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

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

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

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

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

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

  6. [ データ資産の追加 ] タブで、共有するテーブル、ストリーミング テーブル、ボリューム、ビュー、具体化されたビュー、モデルを選択します。

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

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

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

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

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

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

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

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

CREATE SHARE [IF NOT EXISTS] <share-name>
[COMMENT "<comment>"];

これで、テーブル、ストリーミング テーブル、ボリューム、ビュー、具体化されたビュー、モデルを共有に追加できるようになりました。

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

コマンドラインインターフェース(CLI)

Databricks CLI を使用して次のコマンドを実行します。

databricks shares create <share-name>

--comment を使用してコメントを追加したり、--json を使用して共有に資産を追加したりできます。 詳細については、続くセクションを参照してください。

これで、テーブル、ストリーミング テーブル、ボリューム、ビュー、具体化されたビュー、モデルを共有に追加できるようになりました。

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

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

共有にテーブルを追加するには、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで Catalog Explorer、Databricks Unity Catalog CLI、もしくは SQL コマンドを使用できます。

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

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

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

カタログ エクスプローラー

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

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

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

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

  4. [資産の管理] > [データ資産の追加] をクリックします。

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

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

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

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

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

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

    table_changes() 関数を使用して顧客がテーブルの変更データ フィード (CDF) に対してクエリを実行できるようにする場合は、共有する前WITH HISTORY必要があります。

  7. (省略可能) エイリアスまたはパーティションを追加するには、Speech bubble plus icon.[エイリアス] 列または [パーティション] 列で をクリックします。 スキーマ全体を選択すると、エイリアスとパーティションは使用できません。 スキーマ全体を選択すると、テーブル履歴が既定で含まれます。

  8. 保存 をクリックします。

SQL

テーブルを追加するには、ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share-name> ADD TABLE <catalog-name>.<schema-name>.<table-name>  [COMMENT "<comment>"]
   [PARTITION(<clause>)] [AS <alias>]
   [WITH HISTORY | WITHOUT HISTORY];

次を実行してスキーマ全体を追加します。 ADD SCHEMA コマンドには、Databricks Runtime 13.3 LTS 以降を実行する SQL ウェアハウスまたはコンピューティングが必要です。 スキーマの共有の詳細については、「共有にスキーマを追加する」を参照してください。

ALTER SHARE <share-name> ADD SCHEMA <catalog-name>.<schema-name>
[COMMENT "<comment>"];

選択できる方法は次のとおりです。 スキーマ全体を選択した場合、PARTITIONAS <alias> は使用できません。

  • PARTITION(<clause>): テーブルの一部のみを共有する場合は、パーティションを指定できます。 たとえば、(column = 'value')。「共有するテーブル パーティションを指定する」と「受信者プロパティを使用してパーティションのフィルター処理を行う」を参照してください。

  • AS <alias>: テーブル名を読みやすくするための代替テーブル名 (エイリアス)。 別名は、受信者に表示されるテーブル名であり、クエリ内で使用する必要があります。 別名が指定されている場合、受信者は実際のテーブル名を使用できません。 「<schema-name>.<table-name>」の形式を使用します。

  • WITH HISTORY または WITHOUT HISTORY: WITH HISTORY が指定されている場合、完全な履歴を含むテーブルを共有して、受信者がタイム トラベル クエリとストリーミング読み取りを実行できるようにします。 Databricks から Databricks への共有の場合、履歴共有ではテーブルの Delta ログも共有され、パフォーマンスが向上します。 テーブル共有の既定の動作は、コンピューティングで Databricks Runtime 16.2 以降が実行されている場合は WITH HISTORY であり、以前のバージョンの Databricks Runtime の場合は WITHOUT HISTORY です。 スキーマ共有の場合、Databricks ランタイムのバージョンに関係なく、既定値は WITH HISTORY です。 WITH HISTORYWITHOUT HISTORY には、Databricks Runtime 12.2 LTS 以降が必要です。 「履歴共有を使用してテーブルの読み取りパフォーマンスを向上させる」も参照してください。

    タイム トラベル クエリとストリーミング読み取りを実行するだけでなく、顧客が table_changes() 関数を使用してテーブルの変更データ フィード (CDF) に対してクエリを実行できるようにする場合は、共有する前WITH HISTORY必要があります。

ALTER SHARE オプションの詳細については、「ALTER SHARE」を参照してください。

コマンドラインインターフェース(CLI)

テーブルを追加するには、Databricks CLI を使用して次のコマンドを実行します。

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<table-full-name>",
          "data_object_type": "TABLE",
          "shared_as": "<table-alias>"
        }
      }
    ]
  }'

スキーマを追加するには、次の Databricks CLI コマンドを実行します。

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<schema-full-name>",
          "data_object_type": "SCHEMA"
        }
      }
    ]
  }'

テーブルの場合はテーブルに限って、"data_object_type" を省略できます。

この例に示されているオプションの詳細については、[SQL] タブの説明を参照してください。

追加のパラメータの詳細については、databricks shares update --help を実行するか、REST API リファレンスのPATCH /api/2.1/unity-catalog/shares/ を参照してください。

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

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

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

基本的な例

次の SQL の例では、inventory 列、year 列、month 列でパーティション分割されている date テーブル内のデータの一部を共有しています。

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

受信者プロパティを使用してパーティションのフィルター処理を行う

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

既定のプロパティには、次のようなものがあります。

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

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

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

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

Delta Sharing におけるパラメーター ベースの動的パーティション共有を示す図

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

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

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

カタログ エクスプローラー

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

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

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

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

  4. [資産の管理] > [データ資産の追加] をクリックします。

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

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

  6. (省略可能) パーティションを追加するには、Speech bubble plus icon.[パーティション] 列で をクリックします。

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

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

    たとえば、次のように入力します。

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share-name> ADD TABLE <catalog-name>.<schema-name>.<table-name>
   PARTITION (<column-name> = CURRENT_RECIPIENT().<property-key>);

たとえば、次のように入力します。

ALTER SHARE acme ADD TABLE acme.default.some_table
  PARTITION (country = CURRENT_RECIPIENT().'country');

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

重要

この機能はパブリック プレビュー段階にあります。

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

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

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

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

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

重要

この機能はパブリック プレビュー段階にあります。

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

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

その他の要件:

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

制限:

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

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

カタログ エクスプローラー

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

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

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

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

  4. [資産の管理] > [資産の編集] をクリックします。

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

  6. (省略可能) [エイリアス ] 列で、[ Speech bubble plus] アイコン をクリックします。ストリーミング テーブル名を読みやすくするために、エイリアスまたは代替ストリーミング テーブル名を指定します。 エイリアスは、受信者に表示される名前であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のストリーミング テーブル名を使用できません。

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share_name> ADD TABLE <st_name> [COMMENT <comment>] [AS <shared_st_name>];

コマンドラインインターフェース(CLI)

次の Databricks CLI コマンドを実行します。

databricks shares update <share-name> \
  --json '{
    “updates”: [
      {
        “action”: “ADD”,
        “data_object”: {
          “name”: “<st-full-name>",
          “data_object_type”: “TABLE”,
          “comment”: “<comment>”
        }
      }
    ]
  }'

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

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

重要

この機能はパブリック プレビュー段階にあります。

Azure Databricks では、管理 された Iceberg テーブル と呼ばれる Unity カタログに Iceberg テーブルを作成できます。 Apache Iceberg は、分析ワークロード用のオープン ソース テーブル形式です。

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

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

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

カタログ エクスプローラー

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

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

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

  3. [ 自分で共有 ] タブで、管理された Iceberg テーブルを追加する共有を見つけて、その名前をクリックします。

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

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

  6. (省略可能)[ エイリアス ] 列で、[ Speech bubble plus] アイコン をクリックします。エイリアスまたは代替のマネージド Iceberg テーブル名を指定して、名前を読みやすくします。 エイリアスは、受信者に表示される名前であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際に管理されている Iceberg テーブル名を使用できません。

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 必要に応じて、別の名前でマネージド Iceberg テーブルを公開する <shared_iceberg_table_name> を指定します。

ALTER SHARE <share_name> ADD TABLE <managed_iceberg_name> [COMMENT <comment>] [AS <shared_iceberg_table_name>];

コマンドラインインターフェース(CLI)

次の Databricks CLI コマンドを実行します。

databricks shares update <share-name> \
  --json '{
    “updates”: [
      {
        “action”: “ADD”,
        “data_object”: {
          “name”: “<managed-iceberg-full-name>",
          “data_object_type”: “TABLE”,
          “comment”: “<comment>”
        }
      }
    ]
  }'

ビューを共有に追加する

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

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

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

その他の要件:

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

共有にビューを追加するには、次の手順を実行します。

カタログ エクスプローラー

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

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

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

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

  4. [資産の管理] > [データ資産の追加] をクリックします。

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

  6. (省略可能) ビュー名を読みやすくするために、Speech bubble plus icon.[エイリアス] 列で をクリックして代替ビュー名 (エイリアス) を指定します。 エイリアスは、受信者に表示される名前であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のビュー名を使用できません。

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share-name> ADD VIEW <catalog-name>.<schema-name>.<view-name>
   [COMMENT "<comment>"]
   [AS <alias>];

次のオプションがあります。

  • AS <alias>: ビュー名を読みやすくするための代替ビュー名 (エイリアス)。 エイリアスは、受信者に表示されるビュー名であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のビュー名を使用できません。 「<schema-name>.<view-name>」の形式を使用します。
  • COMMENT "<comment>": コメントは、Catalog Explorer UI に表示されるほか、SQL ステートメントを使用してビューの詳細を一覧表示したり表示したりするときにも表示されます。

ALTER SHARE オプションの詳細については、「ALTER SHARE」を参照してください。

コマンドラインインターフェース(CLI)

次の Databricks コマンドを実行します。

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "ADD",
        "data_object": {
          "name": "<view-full-name>",
          "data_object_type": "VIEW",
          "shared_as": "<view-alias>"
        }
      }
    ]
  }'

"shared_as": "<view-alias>" は省略可能であり、ビュー名を読みやすくするために代替ビュー名 (エイリアス) を指定します。 エイリアスは、受信者に表示されるビュー名であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のビュー名を使用できません。 「<schema-name>.<view-name>」の形式を使用します。

追加のパラメータの詳細については、databricks shares update --help を実行するか、REST API リファレンスのPATCH /api/2.1/unity-catalog/shares/ を参照してください。

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

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

動的ビューを使用して、次のようにテーブル データへのアクセス制御をきめ細かく構成できます。

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

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

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

要件

  • Databricks Runtime バージョン: CURRENT_RECIPIENT 関数は Databricks Runtime 14.2 以降でサポートされています。
  • アクセス許可:
    • ビューを作成するには、共有オブジェクトの所有者であり、ビューを含むカタログとスキーマに対する USE CATALOGUSE SCHEMA を、ビューに対する SELECT と共に持っている必要があります。 ビューを共有する限り、SELECT 特権を維持する必要があります。
    • 受信者にプロパティを設定するには、受信者オブジェクトの所有者である必要があります。
  • 制限事項: Databricks 間の共有の制限など、ビュー共有に関するすべての制限事項に加えて、次の制限事項があります。
    • プロバイダーが CURRENT_RECIPIENT 関数を使用するビューを共有する場合、共有コンテキストのため、プロバイダーはビューに直接クエリを実行できません。 このような動的ビューをテストするには、プロバイダーがビューを自らと共有し、受信者としてビューのクエリを実行する必要があります。
    • プロバイダーは、動的ビューを参照するビューを作成できません。

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

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

受信者プロパティは、Azure Databricks ノートブックまたは SQL クエリ エディターで Catalog Explorer もしくは SQL コマンドを使用して設定できます。

カタログ エクスプローラー

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

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

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

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

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

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

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

SQL

受信者にプロパティを設定するには、ALTER RECIPIENT を使用します。 この例では、country プロパティは CA に設定されています。

ALTER RECIPIENT recipient1 SET PROPERTIES ('country' = 'CA');

受信者に対して行レベルのアクセス許可を設定した動的ビューを作成する

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

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

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

受信者に対して列レベルのアクセス許可を設定した動的ビューを作成する

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

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 での具体化されたビューの使用」を参照してください。

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

必要なアクセス許可: 共有オブジェクトの所有者であること、具体化されたビューを含むカタログとスキーマに USE CATALOGUSE SCHEMA があること、および具体化されたビューで SELECT する必要があります。 具体化されたビューを共有する限り、 SELECT 権限を維持する必要があります。 詳細については、「要件」を参照してください。

その他の要件:

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

制限:

  • 具体化されたビューには、行フィルターと列マスクを含めることはできません。
    • 具体化されたビューのベース テーブルには、行フィルターと列マスクを含めることができます。

カタログ エクスプローラー

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

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

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

  3. 私が共有した タブで、具体化ビューを追加したい共有を見つけて、その名前をクリックします。

  4. [資産の管理] > [資産の編集] をクリックします。

  5. [ アセットの編集] ページで、共有する具体化されたビューを検索または参照して選択します。

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

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share_name> ADD MATERIALIZED VIEW <mv_name> [COMMENT <comment>] [AS <shared_mv_name>];

コマンドラインインターフェース(CLI)

databricks shares update <share-name> \
  --json '{
    “updates”: [
      {
        “action”: “ADD”,
        “data_object”: {
          “name”: “<mat-view-full-name>”,
          “data_object_type”: “MATERIALIZED_VIEW”,
          “comment”: “<comment>”
        }
      }
    ]
  }'

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

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

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

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

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

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

その他の要件:

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

ボリュームを共有に追加するには、次の手順を実行します。

カタログ エクスプローラー

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

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

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

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

  4. [資産の管理] > [資産の編集] をクリックします。

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

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

  6. (省略可能) 吹き出しプラスアイコン をクリックします。「エイリアス」列の下で、代替のボリューム名、または エイリアス を指定して、ボリューム名をより読みやすくします。

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

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

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share-name> ADD VOLUME <catalog-name>.<schema-name>.<volume-name>
   [COMMENT "<comment>"]
   [AS <alias>];

次のオプションがあります。

  • AS <alias>: ボリューム名を読みやすくするための代替ボリューム名 (エイリアス)。 エイリアスは、受信者に表示されるボリューム名であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のボリューム名を使用できません。 「<schema-name>.<volume-name>」の形式を使用します。
  • COMMENT "<comment>": コメントは、Catalog Explorer UI に表示されるほか、SQL ステートメントを使用してボリュームの詳細を一覧表示したり表示したりするときにも表示されます。

ALTER SHARE オプションの詳細については、「ALTER SHARE」を参照してください。

コマンドラインインターフェース(CLI)

Databricks CLI 0.210 以降を使用して次のコマンドを実行します。

 databricks shares update <share-name> \
   --json '{
     "updates": [
       {
         "action": "ADD",
         "data_object": {
           "name": "<volume-full-name>",
           "data_object_type": "VOLUME",
           "string_shared_as": "<volume-alias>"
         }
       }
     ]
   }'

"string_shared_as": "<volume-alias>" は省略可能であり、ボリューム名を読みやすくするために代替ボリューム名 (エイリアス) を指定します。 エイリアスは、受信者に表示されるボリューム名であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のボリューム名を使用できません。 「<schema-name>.<volume-name>」の形式を使用します。

追加のパラメータの詳細については、databricks shares update --help を実行するか、REST API リファレンスのPATCH /api/2.1/unity-catalog/shares/ を参照してください。

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

モデルを共有に追加する

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

Databricks 間の共有を使用して共有された共有にはモデル コメントとモデル バージョン コメントが含まれています。

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

その他の要件:

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

モデルを共有に追加するには、次の手順を実行します。

カタログ エクスプローラー

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

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

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

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

  4. [資産の管理] > [資産の編集] をクリックします。

  5. [資産の編集] ページで、共有するモデルを検索または参照して選択します。

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

  6. (省略可能) 吹き出しプラスアイコン別名の列の下でクリックして、代替モデル名、または別名を指定し、モデル名をより読みやすくしてください。

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

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

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

ALTER SHARE <share-name> ADD MODEL <catalog-name>.<schema-name>.<model-name>
   [COMMENT "<comment>"]
   [AS <alias>];

次のオプションがあります。

  • AS <alias>: モデル名を読みやすくするための代替モデル名 (エイリアス)。 エイリアスは、受信者に表示されるモデル名であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のモデル名を使用できません。 「<schema-name>.<model-name>」の形式を使用します。
  • COMMENT "<comment>": コメントは、Catalog Explorer UI に表示されるほか、SQL ステートメントを使用してモデルの詳細を一覧表示したり表示したりするときにも表示されます。

ALTER SHARE オプションの詳細については、「ALTER SHARE」を参照してください。

コマンドラインインターフェース(CLI)

Databricks CLI 0.210 以降を使用して次のコマンドを実行します。

 databricks shares update <share-name> \
   --json '{
     "updates": [
       {
         "action": "ADD",
         "data_object": {
           "name": "<model-full-name>",
           "data_object_type": "MODEL",
           "string_shared_as": "<model-alias>"
         }
       }
     ]
   }'

"string_shared_as": "<model-alias>" は省略可能であり、モデル名を読みやすくするために代替モデル名 (エイリアス) を指定します。 エイリアスは、受信者に表示されるモデル名であり、クエリ内で使用する必要があります。 エイリアスが指定されている場合、受信者は実際のモデル名を使用できません。 「<schema-name>.<model-name>」の形式を使用します。

追加のパラメータの詳細については、databricks shares update --help を実行するか、REST API リファレンスのPATCH /api/2.1/unity-catalog/shares/ を参照してください。

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

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

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

SQL を使用してスキーマを追加、更新、削除するには、Databricks Runtime 13.3 LTS 以降を実行している SQL ウェアハウスまたはコンピューティングが必要です。 Catalog Explorer を使用して同じことを実行する場合、コンピューティング要件はありません。

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

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

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

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

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

Catalog Explorer を使用してノートブック ファイルを共有に追加します。

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

  1. Azure Databricks ワークスペースで、[ データ] アイコンをクリックします。カタログ
  2. [クイック アクセス] ページで、[Delta Sharing] > ボタンをクリックします。
  3. [自分と共有] タブで、ノートブックの追加先となる共有を見つけてその名前をクリックします。
  4. [資産の管理] をクリックし、[ノートブック ファイルの追加] を選択します。
  5. [ノートブック ファイルの追加] ページで、ファイル アイコンをクリックして、共有するノートブックを参照します。
    • 共有するファイルをクリックし、[選択] をクリックします。
    • (省略可能) [共有名] フィールドでファイルのわかりやすいエイリアスを指定します。 これは、受信者に表示される識別子です。
    • ストレージの場所で、ノートブックを格納するクラウド ストレージの 外部の場所 を入力します。 定義された外部の場所の下にサブパスを指定できます。 外部の場所を指定しない場合、ノートブックはメタストア レベルのストレージの場所 (または "メタストア ルートの場所") に格納されます。 メタストアにルートの場所が定義されていない場合は、ここに外部の場所を入力する必要があります。 「マネージド ストレージを既存のメタストアに追加する」を参照してください。
  6. 保存 をクリックします。

これで、共有されたノートブック ファイルが [資産] タブの [ノートブック ファイル] リストに表示されます。

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

共有からノートブック ファイルを削除するには、次の手順を実行します。

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

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

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

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

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

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

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

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

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

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

受信者に共有へのアクセスを付与するために、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで Catalog Explorer、Databricks Unity Catalog CLI、もしくは GRANT ON SHARE SQL コマンドを使用できます。

必要なアクセス許可: 次のいずれかになります。

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

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

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

共有の一覧や共有に関する詳細を表示するために、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで Catalog Explorer、Databricks Unity Catalog CLI、もしくは SQL コマンドを使用できます。

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

詳細には次のものが含まれます。

  • 共有の所有者、作成者、作成タイムスタンプ、アップデーター、更新されたタイムスタンプ、コメント。
  • 共有内のデータ資産。
  • 共有にアクセスできる受信者。

カタログ エクスプローラー

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

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

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

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

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

SQL

共有の一覧を表示するには、ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。 必要に応じて、<pattern>LIKE 述語に置き換えます。

SHOW SHARES [LIKE <pattern>];

特定の共有の詳細を表示するには、次のコマンドを実行します。

DESCRIBE SHARE <share-name>;

共有内のすべてのテーブル、ビュー、ボリュームの詳細を表示するには、次のコマンドを実行します。

SHOW ALL IN SHARE <share-name>;

コマンドラインインターフェース(CLI)

共有の一覧を表示するには、Databricks CLI を使用して次のコマンドを実行します。

databricks shares list

特定の共有の詳細を表示するには、次のコマンドを実行します。

databricks shares get <share-name>

共有に対するアクセス許可を持つ受信者を表示する

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

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

カタログ エクスプローラー

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

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

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

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

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

SHOW GRANTS ON SHARE <share-name>;

コマンドラインインターフェース(CLI)

Databricks CLI を使用して次のコマンドを実行します。

databricks shares share-permissions <share-name>

共有を更新する

テーブルビューボリュームノートブックを共有に追加することに加えて、次のことができます。

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

共有に対してこうした更新を行うには、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで Catalog Explorer、Databricks Unity Catalog CLI、もしくは SQL コマンドを使用できます。 Catalog Explorer を使用して共有の名前を変更できません。

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

カタログ エクスプローラー

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

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

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

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

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

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

SQL

ノートブックまたは Databricks SQL エディターで以下のコマンドを実行します。

共有の名前を変更します。

ALTER SHARE <share-name> RENAME TO <new-share-name>;

共有からテーブルを削除します。

ALTER SHARE share_name REMOVE TABLE <table-name>;

共有からボリュームを削除します。

ALTER SHARE share_name REMOVE VOLUME <volume-name>;

共有に対してコメントを追加または更新します。

COMMENT ON SHARE <share-name> IS '<comment>';

共有内のテーブルのパーティションを追加または変更します。

ALTER SHARE <share-name> ADD TABLE <table-name> PARTITION(<clause>);

共有の所有者を変更します。

ALTER SHARE <share-name> OWNER TO  '<principal>'

-- Principal must be an account-level user email address or group name.

テーブルの履歴共有を有効にします。

ALTER SHARE <share-name> ADD TABLE <table-name> WITH HISTORY;

ALTER SHARE パラメーターの詳細については、ALTER SHAREを参照してください。

コマンドラインインターフェース(CLI)

Databricks CLI を使用して以下のコマンドを実行します。

共有の名前を変更します。

databricks shares update <share-name> --name <new-share-name>

共有からテーブルを削除します。

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "REMOVE",
        "data_object": {
          "name": "<table-full-name>",
          "data_object_type": "TABLE",
          "shared_as": "<table-alias>"
        }
      }
    ]
  }'

(Databricks CLI 0.210 以降を使用して) 共有からボリュームを削除します。

databricks shares update <share-name> \
  --json '{
    "updates": [
      {
        "action": "REMOVE",
        "data_object": {
          "name": "<volume-full-name>",
          "data_object_type": "VOLUME",
          "string_shared_as": "<volume-alias>"
        }
      }
    ]
  }'

ボリュームにエイリアスがない場合は、name プロパティを使用します。 エイリアスがある場合は、string_shared_as を使用します。

共有に対してコメントを追加または更新します。

databricks shares update <share-name> --comment '<comment>'

共有の所有者を変更します。

databricks  shares update <share-name> --owner '<principal>'

プリンシパルは、アカウント レベルのユーザー メール アドレスまたはグループ名である必要があります。

共有を削除する

共有を削除するには、Azure Databricks ノートブックまたは Databricks SQL クエリ エディターで Catalog Explorer、Databricks Unity Catalog CLI、もしくは DELETE SHARE SQL コマンドを使用できます。 自分が共有の所有者である必要があります。

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

必要なアクセス許可: 共有オブジェクトの所有者である必要があります。

カタログ エクスプローラー

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

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

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

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

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

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

SQL

ノートブックまたは Databricks SQL クエリ エディターで次のコマンドを実行します。

DROP SHARE [IF EXISTS] <share-name>;

コマンドラインインターフェース(CLI)

Databricks CLI を使用して次のコマンドを実行します。

databricks shares delete <share-name>