Databricks SQL : 管理者向けクイックスタート

[Quickstart: Set up a user to query a table \| Databricks on AWS](https://docs.databricks.com/sql/get-started/admin-quickstart.html) [2022/8/17時点]の翻訳です。

*クイックスタート： クエリーを実行するユーザーのセットアップ*

> [Databricksクイックスタートガイド](https://qiita.com/taka_yayoi/items/125231c126a602693610)のコンテンツです。

このクイックスタートでは、ユーザーの作成方法、SQLエンドポイントの作成方法、[Databricks dataset](https://docs.databricks.com/data/databricks-datasets.html)から1000万人のレコードを含むテーブルを作成する方法、ユーザーに対するテーブルアクセス権を設定する方法、クエリーを実行する方法、クエリーのランタイムの詳細を説明します。

:::note warn
**重要!**
Databricks SQLでは、常に[データアクセスコントロール](https://docs.databricks.com/sql/user/security/access-control/data-acl.html)が有効になっていますので、ユーザーは常にデータに対するアクセス権を有している必要があります。
:::

# 要件

- Databricksアカウントは[プレミアムプラン](https://databricks.com/product/aws-pricing)である必要があります。
- Databricksワークスペースは[E2バージョン](https://qiita.com/taka_yayoi/items/7d209bc8d32bc5f2dba4#e2%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%81%E3%83%A3)である必要があります。E2ワークスペースの作成に関しては、[アカウントコンソールによるワークスペースの作成・管理(英語)](https://docs.databricks.com/administration-guide/account-settings-e2/workspaces.html)を参照ください。新たに作成するDatabricksアカウントおよび既存アカウントのほとんどはE2となっています。お使いのアカウントタイプが不明の場合には、Databricks窓口にお問い合わせください。
- Databricksの[ワークスペース管理者](https://qiita.com/taka_yayoi/items/3262ea8529ad96b920ce)である必要があります。

# サイドバーの使用

サイドバーからDatabricksの全てのアセットにアクセスできます。サイドバーのコンテンツは選択するペルソナ(**Data Science & Engineering**、**Machine Learning**、**SQL**)によって決まります。

- デフォルトではサイドバーは畳み込まれた状態で表示され、アイコンのみが表示されます。サイドバー上にカーソルを移動すると全体を表示することができます。
- ペルソナを変更するには、Databricksロゴの直下にあるアイコンからペルソナを選択します。
![](https://docs.databricks.com/_images/change-persona.gif)
- 次回ログイン時に表示されるペルソナを固定するには、ペルソナの隣にある![](https://docs.databricks.com/_images/persona-pin.png)をクリックします。再度クリックするとピンを削除することができます。
- サイドバーの一番下にある**Menu options**で、サイドバーの表示モードを切り替えることができます。Auto(デフォルト)、Expand(展開)、Collapse(畳み込み)から選択できます。

# ステップ1: ユーザーの作成

1. 必要に応じてサイドバーの[ペルソナを変更](#サイドバーを使用)して**Data Science & Engineering**を選択します。
1. Databricksワークスペースから[admin console](https://docs.databricks.com/administration-guide/admin-console.html)に移動します。
1. **Users**タブで**Add User**をクリックします。
1. ユーザーのメールアドレスを入力します。
![](https://docs.databricks.com/_images/users-email-aws.png)
1. **Send invite**をクリックします。

    Databricksは一時パスワードを含む確認メールを送信します。ユーザーが5分以内にメールを受信しない場合には、ユーザーに迷惑メールとして分類されていない確認してください。

    ワークスペースにユーザーが追加されます。

1. 必要に応じて、**Databricks SQL access**チェックボックスをチェックしてユーザーによるDatabricks SQLへのアクセスを許可します。デフォルトでは新規ワークスペースのすべてのユーザーがこの資格を持ちます。

    :::note
    **注意**
    パブリックプレビュー期間中にお使いのワークスペースでDatabricks SQLが有効化されている場合、すなわち2021/7/7の週以前では、変更しない限り、その日以前に割り当てられた資格情報を保持します。言い換えると、パブリックプレビュー期間中に**Databricks SQL access**の資格を有していないユーザーは、管理者が許可しない限り、その権限を持つことはありません。
   :::

    ![](https://docs.databricks.com/_images/add-user.png)

1. **Confirm**をクリックします。

# ステップ2: 1000万人のpeopleテーブルを作成する

1. **SQL**を選択するためにペルソナスイッチャーを使います。

    ランディングページは以下のようになります。
![](https://docs.databricks.com/_images/select-starter-warehouse.png)
1. サイドバーの![](https://docs.databricks.com/_images/create-icon.png)**Create**をクリックし、**Query**を選択します。
1. 左のドロップボックスで**Starter Warehouse**のようなSQLウェアハウスを選択します。
1. 以下のクエリーをSQLエディタに貼り付けます。

    ```sql:SQL
    CREATE TABLE default.people10m OPTIONS (PATH 'dbfs:/databricks-datasets/learning-spark-v2/people/people-10m.delta')
    ```

    このSQL文によって、Databricksデータセットに格納されているDelta Lakeファイルを使ってDeltaテーブルを作成します。
1. **Ctrl/Cmd + Enter**を押すか、**Execute**ボタンをクリックします。このクエリーは`No data was returned`を返します。
1. スキーマを更新するには、スキーマブラウザの下にある![](https://docs.databricks.com/_images/refresh-schema.png)ボタンをクリックします。
1. データベースの右にあるテキストボックスに`peo`と入力します。スキーマブラウザは新たに作成したテーブルを表示します。
![](https://docs.databricks.com/_images/qs-table.png)

# ステップ3: `default.people10m`テーブルに対するアクセス権の設定

[ステップ1](#ステップ1-ユーザーの作成)で作成したユーザーが[ステップ2](#ステップ2-1000万人のpeopleテーブルを作成する)で作成した`default.people10m`テーブルにアクセスできるようします。

[データエクスプローラ](#データエクスプローラ)か[SQLエディタ](#sqlエディタ)を用いてアクセスを設定することができます。

## データエクスプローラ

1. サイドバーの![](https://docs.databricks.com/_images/data-icon.png)**Data**をクリックします。
1. 右上のドロップダウンリストで、**Starter Warehouse**のようなSQLウェアハウスを選択します。`default`データベースが選択されます。データベースのコメントとオーナーが表示されます。
1. `default`データベースの後のテキストボックスに`peo`と入力します。データエクスプローラに`people10m`テーブルが表示されます。
1. **Permissions**タブをクリックします。
1. **Grant**ボタンをクリックします。
![](https://docs.databricks.com/_images/defaultdb-grant.png)
1. `user@example.com`を入力します。
1. **USAGE**チェックボックスをチェックします。
1. **OK**をクリックします。
1. `people10m`テーブルをクリックします。
1. **Permissions**タブをクリックします。
1. **Grant**ボタンをクリックします。
![](https://docs.databricks.com/_images/peopletable-grant.png)
1. `user@example.com`を入力します。
1. **SELECT**と**READ_METADATA**チェックボックスをチェックします。
1. **OK**をクリックします。

## SQLエディタ

1. サイドバーの![](https://docs.databricks.com/_images/create-icon.png)**Create**をクリックし、**Query**を選択します。
1. 左のドロップボックスで**Starter Warehouse**のようなSQLウェアハウスを選択します。
1. 以下のクエリーをSQLエディタに一つづつ貼り付けます。

    ```sql:SQL
    GRANT USAGE ON DATABASE default TO `user@example.com`;
    
    GRANT SELECT, READ_METADATA ON TABLE default.people10m TO `user@example.com`;
    
    SHOW GRANTS `user@example.com` ON TABLE default.people10m;
    ```

それぞれのクエリーの後で、**Ctrl/Cmd + Enter**を押すか、**Execute**ボタンをクリックします。最後のクエリーを実行した後には以下の結果が表示されるはずです。

```
+------------------+---------------+------------+-----------------------+
| Principal        | ActionType    | ObjectType | ObjectKey             |
+------------------+---------------+------------+-----------------------+
| user@example.com | READ_METADATA | TABLE      | `default`.`people10m` |
+------------------+---------------+------------+-----------------------+
| user@example.com | SELECT        | TABLE      | `default`.`people10m` |
+------------------+---------------+------------+-----------------------+
| user@example.com | USAGE         | DATABASE   | default               |
+------------------+---------------+------------+-----------------------+
```

# ステップ4: クエリーの作成

[Databricks SQL: ユーザー向けクイックスタート](https://qiita.com/taka_yayoi/items/fd0d5e4de3c7f50de617)を修了してください。

# ステップ6: クエリー履歴の参照

1. サイドバーの![](https://docs.databricks.com/_images/history-icon.png)**Query History**をクリックします。
1. クエリーの詳細を参照するには、Query列の文字列をクリックします。
![](https://docs.databricks.com/_images/query-details.png)

# 次のステップ

データやテーブルに対するアクセス権の詳細に関しては、[Databricks SQLのセキュリティモデルとデータアクセスの概要](https://qiita.com/taka_yayoi/items/90a464bcbebf9cf1eb6f)を参照ください。

どのようにアクセスを有効化するのかを学ぶために、`https://<databricks-instance>/sql`にアクセスしてください。`<databricks-instance>`を`dbc-a1b2345c-d6e7.cloud.databricks.com`のようなお使いの[ワークスペースインスタンス名](https://qiita.com/taka_yayoi/items/7127cabac70dd994fcba#%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9%E5%90%8Durlid)で置き換えてください。

### Databricks 無料トライアル

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