ノーコードでDatabricks SQLダッシュボードを作成するでは、1行のPython/SQLを記述することなくダッシュボードを作成する手順をご紹介しました。ノーコード開発はコーディングを必要としないため、敷居が低いというメリットがある一方、コーディングによって得られる柔軟性を犠牲にしているといえます。ノーコードで対応しきれないユースケースに対しては、何かしらのコーディングが必要となります。
こちらでは可能な限りコーディングの量を減らしつつも、柔軟性を確保し機能性の高いダッシュボードを作成する手順をご紹介します。
「ローコード」の定義は人によって異なるかと思います。本書ではSQLのコーディングのみをご紹介していますが、人によってはコーディングが多いと感じられる場合があることをご承知おきください。
テーブルの作成
ノーコードでDatabricks SQLダッシュボードを作成するでは、最初からDatabricksワークスペースに存在しているテーブルを参照してダッシュボードを作成しました。こちらでは、外部からデータを取り込んでテーブルを作成する流れをご紹介します。このステップはノーコードとなります。
データのダウンロード
ここでは、政府統計の総合窓口で公開されている男女別人口-全国,都道府県(大正9年~平成27年)のデータを使用します。リンク先にアクセスし、表番号1のCSVをダウンロードします。
このCSVファイルの文字コードはShift_JISなので、UTF-8への変換が必要となります。Databricksにおける文字コードはUTF-8となります。
こちらの記事を参考にしていただくなどして、メモ帳でUTF-8を指定して保存し直してください。
Databrikcsへのデータのアップロード
DatabricksワークスペースにCSVファイルをアップロードしてテーブルを作成します。
-
Databricksワークスペースにログインし、サイドバーのデータをクリックし右上のテーブルを作成ボタンをクリックします。
-
テーブル作成画面に移動します。テーブルの格納場所をDBFSターゲットディレクトリで指定します。
-
UIでテーブルを作成ボタンをクリックします。
-
テーブルのプレビューを表示するために使用するクラスターをクラスターから選択します。クラスターが起動していない場合には起動してください。クラスターを選択したらテーブルをプレビューボタンをクリックします。
-
テーブルのプレビューが表示されますので、以下の設定を行います。
- テーブル名: 作成するテーブルの名称を指定します。
-
データベース: テーブルを作成するデータベースを選択します。デフォルトのデータベースは
default
となります。 - 1行目はヘッダー: このCSVファイルの1行目はヘッダーなのでチェックします。
- カラムのデータ型: 以下のカラムのデータ型を
INT
に設定します。- 和暦(年)
- 西暦(年)
- 人口(総数)
- 人口(男)
- 人口(女)
-
テーブルを作成ボタンをクリックしてテーブルを作成します。テーブルの作成が完了するとテーブルが表示されます。ここまではすべてノーコードです。
ダッシュボードの作成
上のステップで作成したテーブルに対して、ノーコードでDatabricks SQLダッシュボードを作成するで紹介したクイックダッシュボードを使用すれば、テーブルの作成からダッシュボードの作成まですべてをノーコードで完了することが可能です。
しかし、ここでは西暦、都道府県でのフィルタリングなどが行えるより機能的なダッシュボードを作成するために、SQLによるコーディングを行います。このダッシュボードでは、上で作成したテーブルにアクセスし、集計を行うための以下の4つのクエリー(SQL)を作成します。
- 西暦一覧
- 都道府県一覧
- 都道府県別人口遷移
- 人口
DatabricksワークスペースのサイドバーにあるペルソナスイッチャーでSQLを選択してDatabricks SQLに移動します。
クエリーの作成
- サイドメニューのクエリを選択します。
- 画面右上のクエリを作成ボタンをクリックします。
- クエリエディタに移動します。この画面でSQLを記述してクエリーを作成します。
- Databricks SQLでクエリーを実行するにはSQLエンドポイントが必要となります。SQLエンドポイントが起動していない場合には起動の上、画面上部中央からSQLエンドポイントを選択してください。
- 画面左側でデータベース、テーブルを一覧することができます。テーブル名、カラム名の右にある >> をクリックすると右側のエディタにテーブル名、カラム名を入力することができます。
- クエリーを記述したら画面右上の実行でクエリーの動作確認を行い、問題がなければ保存ボタンをクリックしてクエリーを保存します。タブをクリックしてクエリー名を変更します。
まず、フィルタリングの部品を作るための2つのクエリーを作成します。
SELECT
`西暦(年)`
FROM
<データベース名>.<テーブル名>
WHERE
`西暦(年)` IS NOT NULL
GROUP BY
`西暦(年)`
ORDER BY
`西暦(年)` DESC
SELECT
`都道府県名`,
`都道府県コード`
FROM
<データベース名>.<テーブル名>
WHERE
`都道府県名` IS NOT NULL
AND `都道府県名` NOT IN ("人口集中地区", "人口集中地区以外の地区")
GROUP BY
`都道府県名`,
`都道府県コード`
ORDER BY
`都道府県コード` ASC
上のフィルタリング条件を入力として集計を行う、以下の2つのクエリーを作成します。{{}}
で囲まれている部分がパラメーターとして置き換えられます。
SELECT
*
FROM
<データベース名>.<テーブル名>
WHERE
(
'全国' in ({{ 都道府県名 }})
OR `都道府県名` IN ({{ 都道府県名 }})
)
AND `都道府県名` NOT IN ("全国", "人口集中地区", "人口集中地区以外の地区")
ORDER BY
`人口(総数)` DESC
上のクエリーを実行すると、以下のように結果の上部にフィルタリングのための部品が表示されます。この部品が上で作成したクエリーの結果を読み込むように設定を行います。
- Type: クエリベースのドロップダウンリスト
- クエリー: 都道府県一覧
- 複数の値を許容: チェックします
- 引用符: 引用符を選択します
SELECT
*
FROM
<データベース名>.<テーブル名>
WHERE
(
'全国' in ({{ 都道府県名 }})
OR `都道府県名` IN ({{ 都道府県名 }})
)
AND `西暦(年)` = {{ 西暦 }}
AND `都道府県名` NOT IN ("全国", "人口集中地区", "人口集中地区以外の地区")
ORDER BY
`人口(総数)` DESC
上のクエリーを実行すると、以下のように結果の上部にフィルタリングのための部品が表示されます。この部品が上で作成したクエリーの結果を読み込むように設定を行います。
都道府県名
- Type: クエリベースのドロップダウンリスト
- クエリー: 都道府県一覧
- 複数の値を許容: チェックします
- 引用符: 引用符を選択します
西暦
- Type: クエリベースのドロップダウンリスト
- クエリー: 西暦一覧
可視化(ビジュアライゼーション)の作成
上で作成したクエリーは結果をテーブル形式で返却します。これを様々な形で可視化することができます。
クエリー都道府県別人口遷移では折れ線グラフで可視化を行います。画面右側中央の +可視化を追加 をクリックします。以下の設定を行います。設定が完了したら保存をクリックします。
- Visualization Type: Line
- X Column: 西暦(年)
- Y Column: 人口(総数)、Sum
- Group By: 都道府県名
- X AxisタブのSort Valuesをオンに
可視化のタブをクリックし、時系列変化と名前をつけます。
クエリー人口では、人口総数を地図上に描画します。以下の設定を行い、設定が完了したら保存をクリックします。
- Visualization Type: Map(Choropleth)
- Map: Japan/Prefectures
- Key Column: 都道府県名
- Target Field: Name(local)
- Value Column: 人口(総数)
可視化のタブをクリックし、地図と名前をつけます。
ダッシュボードの作成
サイドメニューのダッシュボードクリックし、画面右上のダッシュボードを作成ボタンをクリックします。ダッシュボードに名前をつけて保存ボタンをクリックします。
キャンバスが表示されますので、ここで上のステップで作成した可視化を配置していきます。
- 画面右上の可視化を追加ボタンをクリックします。
- クエリー一覧が表示されるので、追加したい可視化を含むクエリーと可視化を選択します。
- 人口: 地図
- 都道府県別人口遷移: 時系列変化
-
ダッシュボードレベルフィルタを使用にチェックをつけます。
- 編集完了をクリックします。
これでダッシュボードの完成です。画面上部に表示されている都道府県名、西暦を変更して変更を適用をクリックし、変更が適用されることを確認してください。
この他にも要件に応じて様々な可視化を追加することができるので、いろいろ試してみてください。
参考資料
- Databricks SQLのコンセプト
- Databricks SQLクイックスタート:サンプルダッシュボードギャラリーからダッシュボードをインポートしてDatabricks SQLを学ぶ
- Databricks SQLのダッシュボード
- DatabricksのSQLエンドポイント