Unity Catalogを使い始める

[Get started using Unity Catalog \| Databricks on AWS](https://docs.databricks.com/data-governance/unity-catalog/get-started.html) [2022/12/14時点]の翻訳です。

:::note alert
こちらの記事の内容は古いものとなっています。Unity Catalogの概要理解にのみご利用ください。最新のマニュアルをご覧ください。

- [Unity Catalogとは \| Databricks on AWS](https://docs.databricks.com/ja/data-governance/unity-catalog/index.html)
- [Unity Catalog の設定と管理 \| Databricks on AWS](https://docs.databricks.com/ja/data-governance/unity-catalog/get-started.html)
:::

本書では、あなたの組織でUnity Catalogをセットアップするためのステップバイステップの手順を提供します。Unity Catalogを使用するためにあなたのDatabricksアカウントでの有効化の方法と、Unity Catalogで最初のテーブルを作成する方法を説明します。

# Unity Catalogセットアップの概要

このセクションでは、Unity Catalogを使用するためにどのようにDatabricksアカウントをセットアップするのか、どの様に最初のテーブルを作成するのかに関して、ハイレベルの概要を説明します。詳細なステップバイステップの指示に関しては以降のセクションをご覧ください。

Unity Catalogを使えるようにDatabricksアカウントを有効化するには、以下の手順を踏んでください。

1. Unity CatalogがあなたのAWSアカウントにデータを格納、アクセスできるようにS3バケットとIAMロールを設定します。
1. 皆様の企業が利用しているリージョンのそれぞれにメタストアを作成します。このメタストアは、Unity Catalogのすべてのデータに対するトップレベルのコンテナとして動作します。

    メタストアの作成者として、あなたはオーナーでありメタストアの管理者となります。
1. メタストアにワークスペースをアタッチします。それぞれのワークスペースでは、Unity Catalogで管理するデータに対して同じビューを持つことになります。
1. Databricksアカウントにユーザー、グループ、サービスプリンシパルを追加します。

    既存のDatabricksアカウントにおいては、これらのIDは既に表示されます。

1. (オプション)メタストア管理者のロールをグループに移譲します。

ユーザーに対するデータアクセスをセットアップするには、以下の手順を踏みます。

1. ワークスペースで少なくとも1つの計算資源、クラスターかSQLウェアハウスを作成します。

    Unity Catalogによって保護されるデータオブジェクトに対するgrant文を含み、クエリーやコマンドの実行にこの計算資源を使用します。

1. 少なくとも1つのカタログを作成します。

    カタログはあなたが操作するテーブルを保持するスキーマ(データベース)を保持します。

1. 少なくとも1つのスキーマを作成します。
1. テーブルを作成します。

データ階層のそれぞれのレベル(カタログ、スキーマ、テーブル)において、ユーザー、グループ、サービスプリンシパルに対して権限を付与します。また、[dynamic views](https://docs.databricks.com/data-governance/unity-catalog/create-views.html#dynamic-view)を用いて行・列レベルのアクセス権を付与することができます。

# 要件

- Databricksのアカウント管理者である必要があります。
- Databricksのアカウントは[Premiumプラン](https://databricks.com/jp/product/aws-pricing)である必要があります。
- AWSにおいては、S3バケット、IAMロールとポリシー、クロスアカウントの信頼関係を作成できる必要があります。
- Unity Catalogを使用する最低1つのワークスペース。[Create and manage workspaces using the account console](https://docs.databricks.com/administration-guide/account-settings-e2/workspaces.html)をご覧ください。

# AWSにおけるストレージバケットとIAMロールの設定

このステップでは、Unity CatalogがあなたのAWSアカウントにデータを格納アクセスするために必要なAWSオブジェクトを作成します。

1. DatabricksアカウントIDを特定します。
    1. Databricks[アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
    1. ![](https://docs.databricks.com/_images/account-icon.png)**User Profile**をクリックします。
    1. ポップアップから、**Account ID**の隣の値をコピーします。

1. AWSでS3バケットを作成します。

    このバケットは、Unity Catalogにおける[マネージドテーブル](https://docs.databricks.com/data-governance/unity-catalog/index.html#managed-table)のルートストレージロケーションとなります。メタストアごとに専用のS3バケットを使用し、データにアクセスしたいワークスペースと同じリージョンに配置してください。`s3://`で始まるS3バケットのパスをメモしておきます。

    このデフォルトストレージロケーションはカタログ、スキーマレベルで上書きされます。

   :::note warn
   **重要！**
    バケット名にはドットを含めないでください(例:`incorrect.bucket.name.notation`)。バケットの命名に関するガイドについては、[AWS bucket naming rules](https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html)をご覧ください。
   :::

    S3バケットでKMSの暗号化を有効化する場合には、KMS暗号化キーの名前をメモしておきます。

1. S3バケットへのアクセスを許可するIAMロールを作成します。

    Unity CatalogがDatabricksユーザーの代わりにバケットのデータにアクセスするためのロールを仮定できるように、クロスアカウントの信頼関係をセットアップします。**Trust Relationship**タブに以下のポリシーJSONを貼り付けます。

    - Databricksによって作成されたロールを参照している静的な値である`Principal`のロールARNは変更しないでください。
    - 二つ目のロールARNは作成するロールに対する自己参照です。これは、このロールはself-assumingである必要があるためです。こちらの[Amazon のブログ記事](https://aws.amazon.com/blogs/security/announcing-an-update-to-iam-role-trust-policy-behavior/)をご覧ください。`<YOUR_AWS_ACCOUNT_ID>`と`<THIS_ROLE_NAME>`を実際のIAMロールの値で置き換えてください。
    - `sts:ExternalId`セクションでは、`<DATABRICKS_ACCOUNT_ID>`を、最初のステップで取得したお使いのDatabricksアカウントID(AWSアカウントIDではありません)で置き換えてください。

    ```json:JSON
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
             "AWS": [
               "arn:aws:iam::414351767826:role/unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL",
               "arn:aws:iam::<YOUR_AWS_ACCOUNT_ID>:role/<THIS_ROLE_NAME>"
             ]
          },
          "Action": "sts:AssumeRole",
          "Condition": {
            "StringEquals": {
              "sts:ExternalId": "<DATABRICKS_ACCOUNT_ID>"
            }
          }
        }
      ]
    }
    ```

1. S3バケットと同じAWSアカウントでIAMポリシーを作成します。

    予期しない問題を回避するために、以下のサンプルポリシーを使ってください。以下のポリシーでは、以下の値を置き換えます。

    - `<BUCKET>`: 上のステップで作成したS3バケット名
    - `<KMS_KEY>`: 暗号化が有効化されている場合には、S3バケットのコンテンツを暗号化するKMSキーの名前。**暗号化が無効化されている場合には、IAMポリシーの最後の部分を削除します。**
    - `<AWS_ACCOUNT_ID>`: 現在のAWSアカウントのアカウントID(Databricksアカウントではありません)
    - `<AWS_IAM_ROLE_NAME>`: 上のステップで作成したAWS IAMロールの名前

    ```json:JSON
    {
     "Version": "2012-10-17",
     "Statement": [
         {
             "Action": [
                 "s3:GetObject",
                 "s3:PutObject",
                 "s3:DeleteObject",
                 "s3:ListBucket",
                 "s3:GetBucketLocation",
                 "s3:PutLifecycleConfiguration",
                 "s3:GetLifecycleConfiguration"
             ],
             "Resource": [
                 "arn:aws:s3:::<BUCKET>/*",
                 "arn:aws:s3:::<BUCKET>"
             ],
             "Effect": "Allow"
         },
         {
             "Action": [
                 "kms:Decrypt",
                 "kms:Encrypt",
                 "kms:GenerateDataKey*"
             ],
             "Resource": [
                 "arn:aws:kms:<KMS_KEY>"
             ],
             "Effect": "Allow"
         },
         {
             "Action": [
                 "sts:AssumeRole"
             ],
             "Resource": [
                 "arn:aws:iam::<AWS_ACCOUNT_ID>:role/<AWS_IAM_ROLE_NAME>"
             ],
             "Effect": "Allow"
         }
       ]
    }
    ```

    :::note info
    **注意**
    - Unity Catalogに対してより厳密なIAMポリシーを必要とする場合には、支援のためにDatabricks担当者にコンタクトしてください。
    - Partner ConnectとデータアップロードUIで使用されるパーソナルステージングロケーションにおけるライフサイクルポリシーを管理するために、Databricksでは`GetLifecycleConfiguration`と`PutLifecycleConfiguration`を使用します。
   :::

1. IAMロールにIAMポリシーをアタッチします。

    IAMロールの**Permission**タブで、上で作成したIAMポリシーをアタッチします。

# 初めてのメタストアを作成し、ワークスペースにアタッチする

Unity Catalogを使うにはメタストアを作成する必要があります。メタストアはUnity Catalogにおけるデータに対するトップレベルのコンテナとなります。それぞれのメタストアは、データを構成するための3レベルの名前空間(`catalog.schema.table`)を提供します。

あなたの組織で使用しているリージョンのそれぞれに対してメタストアを作成します。これらのリージョンごとのメタストアを同じリージョンの任意の数のワークスペースにリンクすることができます。

リンクされたそれぞれのワークスペースはメタストアのデータに対して一貫性のあるビューを持ち、ワークスペース横断でアクセス制御を行うことができます。

[Delta Sharing](https://qiita.com/taka_yayoi/items/3a53516c4434c0ee76f0)を用いてメタストアを越えてデータにアクセスすることができます。

メタストアを作成するには以下を実行します。

1. [アカウントコンソール](https://accounts.cloud.databricks.com/)にログインします。
1. ![](https://docs.databricks.com/_images/data-icon.png)**Data**をクリックします。
1. **Create Metastore**をクリックします。

    以下を入力します。

    - メタストアの名前。
    - メタストアをデプロイするリージョン。
 
        データにアクセスするワークスペースと同じリージョンでなくてはなりません。上で作成したストレージバケット同じリージョンであることを確認してください。
    - [AWSにおけるストレージバケットとIAMロールの設定](#awsにおけるストレージバケットとiamロールの設定)で作成したS3バケットのパス(`s3://`は含めなくても大丈夫です)とIAMロールの名前。

1. **Create**をクリックします。
1. プロンプトが表示されたら、メタストアにリンクするワークスペースを選択します。
    メタストアへのワークスペースの割り当てに関する詳細については、[Enable a workspace for Unity Catalog](https://docs.databricks.com/data-governance/unity-catalog/enable-workspaces.html)をご覧ください。

メタストアを作成したユーザーがメタストア管理者とも呼ばれるオーナーになります。メタストア管理者はカタログの様なメタストアのトップレベルのオブジェクトを作成でき、テーブルやその他のオブジェクトへのアクセスを管理することができます。メタストア管理者のロールをグループに再割り当てすることをお勧めします。メタストアを作成した後にオーナーシップを変更するには、[(推奨)メタストアのオーナーシップをグループに転送する](#推奨メタストアのオーナーシップをグループに転送する)をご覧ください。

# ユーザー、グループの追加

Unity Catalogのメタストアは複数のDatabricksワークスペースで共有することができます。Databricksが全てのワークスペースに対して一貫性のあるユーザー、グループのビューを持てるように、アカウントレベルのIDとなるユーザー、グループを作成することができます。このステップでは、アカウントコンソールでユーザーやグループを作成し、これらのIDがアクセスできるワークスペースを選択します。

:::note info
**注意**
- 既存のアカウントやワークスペースをお持ちの場合、おそらくアカウント内にユーザーやグループをお持ちなので、このステップをスキップすることができます。
- 大量のユーザー、グループを必要とする場合、あるいはDatabricks外でアイデンティティを管理したい場合、[Databricksにおけるアイデンティティプロバイダーとのユーザー、グループの同期](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295)を行うことができます。
:::

アカウントコンソールでユーザーやグループを追加するには以下を実施します。

1. [Accountコンソール](https://accounts.cloud.databricks.com/)にログインします(アカウント管理者である必要があります)。
1. ![](https://docs.databricks.com/_images/user-management.png)**Users management**をクリックします。
1. ユーザーを追加するには以下を実行します。
    1. **Users**をクリックします。
    1. **Add User**をクリックします。
    1. ユーザーのメールアドレスを入力します。
    1. **Send Invite**をクリックします。

1. グループを追加するには以下を実行します。
    1. **Groups**をクリックします。
    1. **Add Group**をクリックします。
    1. グループ名を入力します。
    1. **Confirm**をクリックします。
    1. プロンプトが表示されたら、グループにユーザーを追加します。

1. ユーザーやグループを、Unity Catalogによって管理されるデータを用いてデータサイエンス、データエンジニアリング、データ分析タスクを行うワークスペースに追加します。
    1. サイドバーで![](https://docs.databricks.com/_images/workspace-icon.png)**Workspaces**をクリックします。
    1. **Permissions**タブで**Add permissions**をクリックします。
    1. ユーザーやグループを検索し、権限レベル(ワークスペース**User**あるいは**Admin**)を選択し**Save**をクリックします。

使い始めるには、**data-consumers**というグループを作成します。このウォークスルーの中でこのグループを使用します。


# クラスターあるいはSQLウェアハウスの作成

Unity Catalogで定義されるテーブルは、きめ細かいアクセスコントロールで保護されます。アクセスコントロールが適用されていることを確実にするために、Unity Catalogはセキュリティ設定に準拠するクラスターを必要とします。Unity Catalogはデフォルトでセキュアなものとなっており、これに準拠していないクラスターはUnity Catalogのテーブルにアクセスできないことを意味します。

Databricksでは2種類の計算資源を提供しています。

- Data Science & EngineeringとDatabricks Machine Learningベースの環境のワークロードで使用される[クラスター](https://qiita.com/taka_yayoi/items/c5d99cd77fe4bfcf69f0)
- Databricks SQLでクエリーを実行する際に用いられる[SQLウェアハウス](https://qiita.com/taka_yayoi/items/23d7789198c2dcd66381)

Databricks SQLであればSQLウェアハウス、Data Science & EngineeringとDatabricks Machine Learningベースの環境であればクラスターという様に使用している環境に応じて、これらのいずれかの計算資源を用いてUnity Catalogを操作することができます。

## クラスターの作成

Unity Catalogにアクセスできるクラスターを作成するには、以下を実行します。

1. ワークスペースの管理者あるいは[クラスター作成権限](https://docs.databricks.com/administration-guide/access-control/cluster-acl.html#configure-cluster-creation-entitlement)を持つユーザーとしてワークスペースにログインします。
1. ![](https://docs.databricks.com/_images/clusters-icon.png)**Compute**をクリックします。
1. **Create cluster**をクリックします。
    1. クラスターの名前を入力します。
    1. **Access mode**を**Single user**に設定します。
    
        **Single user**と**Shared**アクセスモードのみがUnity Catalogをサポートしています。

    1. **Databricks runtime version**を **Runtime: 11.1 (Scala 2.12, Spark 3.2.1)** 以降に設定します。
1. **Create Cluster**をクリックします。

固有の設定オプションに関しては、[Databricksにおけるクラスター作成](https://qiita.com/taka_yayoi/items/d36a469a1e0c0cebaf1b)をご覧ください。

## SQLウェアハウスの作成

SQLウェアハウスではデフォルトでUnity Catalogをサポートしており、追加の設定は不要です。

SQLウェアハウスを作成するには以下の手順を踏みます。

1. ワークスペースの管理者あるいは[クラスター作成権限](https://docs.databricks.com/administration-guide/access-control/cluster-acl.html#configure-cluster-creation-entitlement)を持つユーザーとしてワークスペースにログインします。
1. ペルソナスイッチャーで**SQL**を選択します。
1. **Create**をクリックし、**SQL Warehouse**を選択します。
1. **Advanced Settings**で**Channel**を**Current**に設定します。

固有の設定オプションに関しては、[SQLウェアハウスの作成](https://qiita.com/taka_yayoi/items/23d7789198c2dcd66381#sql%E3%82%A6%E3%82%A7%E3%82%A2%E3%83%8F%E3%82%A6%E3%82%B9%E3%81%AE%E4%BD%9C%E6%88%90)をご覧ください。

# 初めてのテーブルの作成

Unity Catalogでは、メタストアにはスキーマ(データベース)を格納するカタログが保持され、いつでもスキーマにテーブルを作成することができます。

3レベルの記述を用いて、以下の文法でテーブルを参照することができます。

```sql:SQL
<catalog>.<schema>.<table>
```

新規作成されたメタストアには、`default`という名前の空のスキーマを含む`main`というカタログが含まれています。この例では、`main`カタログの`default`スキーマに`department`というテーブルを作成します。

テーブルを作成するには、親のスキーマに対する`CREATE`権限と、親のカタログとスキーマの`USAGE`権限を持っている必要があります。メタストア管理者はデフォルトでこれらの権限を持っています。

カタログ`main`とスキーマ`main.default`に関しては、すべてのユーザーが`USAGE`権限を最初から持っています。あなたがメタストア管理者ではない場合、メタストア管理者やスキーマのオーナーが、`main.default`スキーマに対する`CREATE`権限を付与することができます。

手動でテーブルを作成するには以下のステップを踏みます。カタログ、スキーマ、テーブルを作成し、これらに対するアクセス権を管理する[サンプルノートブック](#サンプルノートブック)をインポートすることもできます。

1. [ノートブックを作成](https://qiita.com/taka_yayoi/items/c306161906d6d34e8bd5#%E3%83%8E%E3%83%BC%E3%83%88%E3%83%96%E3%83%83%E3%82%AF%E3%81%AE%E4%BD%9C%E6%88%90)し、[クラスターあるいはSQLウェアハウスの作成](#クラスターあるいはsqlウェアハウスの作成)で作成したData Science & Engineeringクラスターにアタッチします。

   ノートブックの言語は、使用する言語に応じて**SQL**、**Python**、**R**、**Scala**を選択します。

1. `default`スキーマに対してテーブルを作成する権限を付与します。

   テーブルを作成するには、ユーザーにはカタログにおける`USAGE`権限に加え、スキーマに対する`CREATE`、`USAGE`権限が必要となります。メタストアが作成された場合、全てのユーザーには`main`カタログと`main.default`スキーマに対する`USAGE`権限が与えられます。

    メタストア管理者、`main.default`スキーマのオーナーが、ユーザーあるいはグループに`CREATE`権限を`GRANT`するための以下のコマンドを実行することができます。

    ```sql:SQL
    GRANT CREATE ON SCHEMA <catalog-name>.<schema-name> TO `<EMAIL_ADDRESS>`;
    ```

    ```py:Python
    spark.sql("GRANT CREATE ON SCHEMA <catalog-name>.<schema-name> TO `<EMAIL_ADDRESS>`")
    ```

    ```r:R
    library(SparkR)
    
    sql("GRANT CREATE ON SCHEMA <catalog-name>.<schema-name> TO `<EMAIL_ADDRESS>`")
    ```

    ```scala:Scala
    spark.sql("GRANT CREATE ON SCHEMA <catalog-name>.<schema-name> TO `<EMAIL_ADDRESS>`")
    ```

    例えば、グループ`data-consumers`に対して`main.default`にテーブルを作成するのを許可するには以下を実行します。

    ```sql:SQL
    GRANT CREATE ON SCHEMA main.default to `data-consumers`;
    ```

    ```py:Python
    spark.sql("GRANT CREATE ON SCHEMA main.default to `data-consumers`")
    ```

    ```r:R
    library(SparkR)

    sql("GRANT CREATE ON SCHEMA main.default TO `data-consumers`")
    ```

    ```scala:Scala
    spark.sql("GRANT CREATE ON SCHEMA main.default to `data-consumers`")
    ```

    セルを実行します。

1. ノートブックに新規セルを追加します。カラムを指定して`department `という新規テーブルを作成し、5行を追加するする以下のSQLを貼り付けます。

    ```sql:SQL
    CREATE TABLE main.default.department
     (
        deptcode   INT,
        deptname  STRING,
        location  STRING
     );
    
    INSERT INTO main.default.department VALUES
      (10, 'FINANCE', 'EDINBURGH'),
      (20, 'SOFTWARE', 'PADDINGTON'),
      (30, 'SALES', 'MAIDSTONE'),
      (40, 'MARKETING', 'DARLINGTON'),
      (50, 'ADMIN', 'BIRMINGHAM');
    ```

    ```py:Python
    from pyspark.sql.types import StructType, StructField, IntegerType, StringType
    
    schema = StructType([ \
      StructField("deptcode", IntegerType(), True),
      StructField("deptname", StringType(), True),
      StructField("location", StringType(), True)
    ])
    
    spark.catalog.createTable(
      tableName = "main.default.department",
      schema = schema \
    )
    
    dfInsert = spark.createDataFrame(
      data = [
        (10, "FINANCE", "EDINBURGH"),
        (20, "SOFTWARE", "PADDINGTON"),
        (30, "SALES", "MAIDSTONE"),
        (40, "MARKETING", "DARLINGTON"),
        (50, "ADMIN", "BIRMINGHAM")
      ],
      schema = schema
    )
    
    dfInsert.write.saveAsTable(
      name = "main.default.department",
      mode = "append"
    )
    ```

    ```r:R
    library(SparkR)
    
    schema = structType(
      structField("deptcode", "integer", TRUE),
      structField("deptname", "string", TRUE),
      structField("location", "string", TRUE)
    )
    
    df = createDataFrame(
      data = list(),
      schema = schema
    )
    
    saveAsTable(
      df = df,
      tableName = "main.default.department"
    )
    
    data = list(
      list("deptcode" = 10L, "deptname" = "FINANCE", "location" = "EDINBURGH"),
      list("deptcode" = 20L, "deptname" = "SOFTWARE", "location" = "PADDINGTON"),
      list("deptcode" = 30L, "deptname" = "SALES", "location" = "MAIDSTONE"),
      list("deptcode" = 40L, "deptname" = "MARKETING", "location" = "DARLINGTON"),
      list("deptcode" = 50L, "deptname" = "ADMIN", "location" = "BIRMINGHAM")
    )
    
    dfInsert = createDataFrame(
      data = data,
      schema = schema
    )
    
    insertInto(
      x = dfInsert,
      tableName = "main.default.department"
    )
    ```

    ```scala:Scala
    import spark.implicits._
    import org.apache.spark.sql.types.StructType
    
    val df = spark.createDataFrame(
      new java.util.ArrayList[Row](),
      new StructType()
        .add("deptcode", "int")
        .add("deptname", "string")
        .add("location", "string")
    )
    
    df.write
      .format("delta")
      .saveAsTable("main.default.department")
    
    val dfInsert = Seq(
      (10, "FINANCE", "EDINBURGH"),
      (20, "SOFTWARE", "PADDINGTON"),
      (30, "SALES", "MAIDSTONE"),
      (40, "MARKETING", "DARLINGTON"),
      (50, "ADMIN", "BIRMINGHAM")
    ).toDF("deptcode", "deptname", "location")
    
    dfInsert.write.insertInto("main.default.department")
    ```

    セルを実行します。

1. テーブルに対してクエリーを実行します。ノートブックにセルを追加します。以下のSQLを貼り付けてせるを実行します。

    ```sql:SQL
    SELECT * from main.default.department;
    ```

    ```py:Python
    display(spark.table("main.default.department"))
    ```

    ```r:R
    display(tableToDF("main.default.department"))
    ```

    ```scala:Scala
    display(spark.table("main.default.department"))
    ```

1. [アカウントレベルのユーザー、グループの追加](#アカウントレベルのユーザーグループの追加)で作成した`data-consumers`グループに対して、テーブルを読み取る権限を許可します。ノートブックにセルを追加し、以下のSQLを貼り付け、セルを実行します。

    ```sql:SQL
    GRANT SELECT ON main.default.department TO `data-consumers`;
    ```

    ```py:Python
    spark.sql("GRANT SELECT ON main.default.department TO `data-consumers`")
    ```

    ```r:R
    sql("GRANT SELECT ON main.default.department TO `data-consumers`")
    ```

    ```scala:Scala
    spark.sql("GRANT SELECT ON main.default.department TO `data-consumers`")
    ```

    :::note info
    **注意**
`data-consumers`だけでなく、全てのアカウントレベルユーザーに読み取りアクセス権を付与するには、`account users`グループを使用します。
   :::

    セルを実行します。

# ショートカット：カタログ、スキーマ、テーブルを作成するためにサンプルノートブックを使う

## SQLでUnity Catalogテーブルの作成、管理

https://docs.databricks.com/_static/notebooks/unity-catalog-example-notebook.html

## PythonでUnity Catalogテーブルの作成、管理

https://docs.databricks.com/_static/notebooks/unity-catalog-quickstart-python.html

# (オプション)他のワークスペースにメタストアをリンクする

Unity Catalogの大きなメリットは、単一のメタストアを同じリージョンにある複数のワークスペースで共有できることにあります。ワークスペース間でデータをコピーすることなしに、同じデータに対して異なるタイプのワークロードを実行することができます。それぞれのワークスペースには1つのUnity Catalogメタストアを割り当てることができます。

他のワークスペースにメタストアをリンクする方法に関しては、[Enable a workspace for Unity Catalog](https://docs.databricks.com/data-governance/unity-catalog/enable-workspaces.html)をご覧ください。

# (推奨)お使いのIdPとアカウントレベルのIDを同期する

Oktaのようなアイデンティティプロバイダー(IdP)をセットアップすることで、Databricksのユーザーアクセスを管理することができます。完全な手順については、[Databricksにおけるアイデンティティプロバイダーとのユーザー、グループの同期](https://qiita.com/taka_yayoi/items/6509db71832ae5df9295)をご覧ください。

# (推奨)メタストアのオーナーシップをグループに転送する

[Assign a metastore admin](https://docs.databricks.com/data-governance/unity-catalog/manage-privileges/index.html#metastore-admin)をご覧下さい。

# (オプション)Unity Catalog CLIのインストール

Unity Catalog CLIは[Databricks CLI](https://docs.databricks.com/dev-tools/cli/index.html)の一部です。Unity Catalog CLIを使うには以下の手順を踏んでください。

1. [CLIをセットアップします。](https://docs.databricks.com/dev-tools/cli/index.html#set-up-the-cli)
1. [認証設定を行います。](https://docs.databricks.com/dev-tools/cli/index.html#cli-auth)
1. オプションで、CLIを使うための[接続プロファイル](https://docs.databricks.com/dev-tools/cli/index.html#cli-profile)を1つ以上作成します。
1. 一般的な[Databricks CLIの使い方](https://docs.databricks.com/dev-tools/cli/index.html#use-the-cli)を学びます。
1. [Unity Catalog CLI](https://docs.databricks.com/dev-tools/cli/unity-catalog-cli.html)を使い始めます。


# 次のステップ

- [DatabricksのUnity Catalogとは？](https://qiita.com/taka_yayoi/items/15aede468bdca58ec6a3)を学びます。
- [Create tables](https://docs.databricks.com/data-governance/unity-catalog/create-tables.html)
- [Create views](https://docs.databricks.com/data-governance/unity-catalog/create-views.html)

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)