Azure Databricksって何？ (Databricks SQL 編)

# プロローグ

**ほげ君**：ねえねえ、 Azure Databricks って知ってる？
**ふが君**：何それ？知らない。
**ほげ君**：僕も知らないんでよね！どんなものなのか教えてよ、 Microsoft 公式ドキュメント君！
**公式ドキュメント君**：分かりました。





# Databricks概要

**公式ドキュメント君**：Azure Databricks は、Microsoft Azure クラウド サービス プラットフォーム用に最適化された Data Analytics プラットフォームです。 Azure Databricks には、Databricks SQL、Databricks Data Science & Engineering、Databricks Machine Learning という、データ集中型アプリケーションを開発するための 3 つの環境が用意されています。

**ほげ君**：え？何言ってるのか全然わからない。
**ふが君**：とりあえず、Azure Databricks は三つの部分：
・Databricks SQL
・Databricks Data Science & Engineering
・Databricks Machine Learning
に分かれている。辛うじてこれだけ分かったよ。
**ほげ君**：何ができるのか全然想像ができない！





# Databricks SQLとは

**ふが君**：一つずつ教えてよ。まず、Databricks SQL は何ができるの？
**公式ドキュメント君**：Databricks SQL では、データ レイクで SQL クエリを実行したり、複数の視覚化の種類を作成してさまざまなパースペクティブからクエリ結果を探索したり、ダッシュボードを構築して共有したりするための、使いやすいプラットフォームが提供されます。
(https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/what-is-azure-databricks)

**ほげ君**：データレイクってなんだっけ？
**ふが君**：また忘れたの？データレイクは大量のいろんな形式のデータが置かれてる場所だよ。それを分析しやすいようにきれいにするのがデータウェアハウスね。
**ほげ君**：横文字の専門用語って気持ちが伝わってこないから覚えにくいなあ。

**ふが君**：元の話に戻るよ。ええと、Databricks SQL は何ができるんだっけ？
**公式ドキュメント君**：Databricks SQL では、データ レイクで SQL クエリを実行したり、複数の視覚化の種類を作成してさまざまなパースペクティブからクエリ結果を探索したり、ダッシュボードを構築して共有したりするための、使いやすいプラットフォームが提供されます。

**ほげ君**：やっぱりよくわかんない！パースペクティブとか意味わかんない横文字嫌い！
**ふが君**：確かにこのパースペクティブの使い方はやばいね。もう少し詳しく教えてよ。
**公式ドキュメント君**：404-ページが見つかりません。
(https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/azure/databricks/scenarios/what-is-databricks-sql)

**ほげ君**：へ？こいつついにいかれたぞ！
**ふが君**：確かに公式でこれはやばいね。Databricks SQLの主な特徴は何？
**公式ドキュメント君**：Fully managed SQL warehouses in the cloud
(https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/what-is-databricks-sql)

**ほげ君**：うっわ。こいつ英語喋り始めたぞ！
**ふが君**：公式でこれはやばいね。とにかく、SQLの処理ができるらしい。あとは？
**公式ドキュメント君**：Dashboards for sharing insights

**ほげ君**：一個一個聞いてたら切りねえよ。一遍に全部吐け！
**公式ドキュメント君**：
１．Fully managed SQL warehouses in the cloud
２．Dashboards for sharing insights
３．Alerts help you monitor and integrate
４．Enterprise security
５．Integration with Azure services
６．Integration with Power BI

**ふが君**：とにかく、Databricks SQL は SQL処理が強い、いろんな機能が付いたデータレイクってことだね。
**ほげ君**：公式ドキュメント君め、ごたごた難しい言葉使いやがって、この一言で十分じゃねえか。にしても結局Databricks SQLは何に使うんだ？
**ふが君**：それを知るには実際に使ってみたほうが早そうだね。公式ドキュメント君、Databricks SQLをちょっと使わせてよ。





# Databricks SQL 触ってみた

**公式ドキュメント君**：このクイック スタートでは、Databricks SQL ダッシュボード サンプル ギャラリーでダッシュボードをインポートして操作する方法について説明します。
(https://docs.microsoft.com/ja-jp/azure/databricks/sql/get-started/sample-dashboards)
**ほげ君**：結局手を動かすのか。めんどくさいなあ。
**ふが君**：説明が下手なんだもん。しょうがないよ。






## 準備
**ふが君**：えーっと、とりあえず事前準備は何かある？
**公式ドキュメント君**：このクイック スタートでは、Azure portal を使って Azure Databricks ワークスペースと Apache Spark クラスターを作成します。
(https://docs.microsoft.com/ja-jp/azure/databricks/scenarios/quickstart-create-databricks-workspace-portal?tabs=azure-portal)
**ほげ君**：いつも事前準備がめんどくさいんだよなあ。

**ふが君**：Premium プランの Databrciks のワークスペースを作成したよ。 Splark クラスターの作成はまだしなくていいのかな？
**ほげ君**：いいよそんなの。とりあえず進めて、ダメだったら戻って作成すればいいし。ワークスペースできた！起動するぞ！
**ふが君**：はいはい。

## サンプルダッシュボードを作る
**ほげ君**：変な画面だなあ。ごちゃごちゃしてて見ずらい。
**公式ドキュメント君**：ペルソナを変更するには、Databricks logo の下にあるアイコンをクリックし、ペルソナを選択します。
**ほげ君**：は？ペルソナ？急にゲームの話になったぞ。
**ふが君**：最初に出た Databricks の三つの部分、
・Databricks SQL
・Databricks Data Science & Engineering
・Databricks Machine Learning
はペルソナって呼ばれているらしいね。
**ほげ君**：意味わかんなすぎだろ。
**ふが君**：とりあえずペルソナを Databricks SQL にしたよ。

**公式ドキュメント君**：Databricks SQL にログインすると、ランディング ページは次のように表示されます。
1.サイドバーの Dashboards Iconをクリックします。
2.[ギャラリーへのアクセス] をクリックします。 
3.Retail Revenue & Supply Chain の横の [インポート] をクリックします。
**ほげ君**：ダッシュボードの表示マジで遅いな。
**ふが君**：表示されたよ。何かの売り上げデータのグラフみたいだね。

**公式ドキュメント君**：インポートされたダッシュボードで、National Revenue Trends 視覚化の上にマウスのポインターを重ね、3 つの垂直ドットのように見えるコンテキスト メニューをクリックします。 [クエリを表示] をクリックします。
**ほげ君**：うっわ。コードだ。
**ふが君**：相変わらずコード見るとアレルギー反応起こすね。どうやらこのSQLのコードをもとにグラフが作られているようだね。
**公式ドキュメント君**：ブラウザーの [戻る] ボタンをクリックして、ダッシュボードに戻ります。

## テーブルを作る

**ふが君**：どうやらDatabricks SQLはデータにSQL処理をして、グラフを作れるようだね。
**ほげ君**：にしてもそもそものデータはどう入れるんだ？サンプルダッシュボードを表示させても意味ねえし。
**ふが君**：データ準備するところから試せないの？

**公式ドキュメント君**：このクイック スタートでは、管理者がユーザーを追加し、Databricks データセットから 1,000 万人のユーザー レコードを含むテーブルを作成して、ユーザーにテーブルへのアクセスを許可する方法を示します。
(https://docs.microsoft.com/ja-jp/azure/databricks/sql/get-started/admin-quickstart)
**ほげ君**：最初からそれ言えよ。

**公式ドキュメント君**：
1.サイドバーで[作成] をクリックし、[クエリ] を選択します。
2.SQL エディターに次のコードを貼り付けます。

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

3.[実行] ボタンをクリックします。

**ほげ君**：またコードだ…
**ふが君**：Databricks のサンプルデータを使ってテーブルを作るんだね。


## クエリを実行する
**ほげ君**：テーブル作ってどうすんだ？
**ふが君**：自分たちでダッシュボード作るんじゃない？

**公式ドキュメント君**：このクイックスタートでは、人のテーブルを照会し、誕生年別にグループ化された Mary という名前の女性の数を検索し、結果を視覚化する方法を示します。
(https://docs.microsoft.com/ja-jp/azure/databricks/sql/get-started/user-quickstart)

**ほげ君**：あんま面白くなさそうだな。
**ふが君**：まあそうだね。
**公式ドキュメント君**："Mary" という名前の女性の数を照会する SELECT ステートメントを貼り付け、[実行] ボタンをクリックします。

```
SELECT year(birthDate) as birthYear, count(*) AS total
 FROM default.people10m
 WHERE firstName = 'Mary' AND gender = 'F'
 GROUP BY birthYear
 ORDER BY birthYear
```

**ほげ君**：実行めちゃくちゃ遅いな。
**ふが君**：テーブルが大きいからかな？1000万人のテーブルらしいし。Maryって名前の人は毎年30人ぐらい生まれてるのか。
**公式ドキュメント君**：[+ 視覚化の追加] タブをクリックします。

**ほげ君**：[+ 視覚化の追加] タブどこだ？
**ふが君**：クエリ書いたウィンドウの右下にあるよ。
**ほげ君**：分かりずら。ちゃんと教えろよ、公式ドキュメント君。
**ふが君**：不親切だよね。これは毎年Maryっていう名前の人が何人生まれたかのグラフだね。

**公式ドキュメント君**：[保存] をクリックします。
**ほげ君**：これって喜ぶほどの機能なのか？
**ふが君**：データがすごく大きくてもある程度早いから嬉しいのかな？


## ダッシュボードを作成する
**公式ドキュメント君**：
1.サイドバーで[作成] をクリックし、[ダッシュボード] を選択します。
2.右下にある [ウィジェットの追加] ボタンをクリックします。

**ほげ君**：[ウィジェットの追加] ボタンなんてねえぞ！
**ふが君**：さっきのクエリを保存してから、[追加]の[ビジュアライゼーション]を押して、保存したクエリを選ぶと、保存したグラフが選べるよ。
**ほげ君**：ほんとだ。これは不親切どころじゃないぞ！嘘ついてるじゃねえか！
**ふが君**：公式でこれはやばいね。一応これで作ったテーブルのダッシュボードができたのか。

# エピローグ
**ほげ君**：にしても結局この機能って本当に嬉しいんか？
**ふが君**：うーん。Databricks の残りの二つの部分
・Databricks Data Science & Engineering
・Databricks Machine Learning
について知らないと、Databricksの嬉しさって分からないんじゃないかな？
**ほげ君**：面倒くさいなあ。今日はもう疲れたしやめだやめ。ラーメン食いに行こうぜえー
**ふが君**：そうだね。残りはまた今度にしよう。