チュートリアル:ノートブックからCSVデータをインポートして可視化する
1. 事前準備
このチュートリアルを開始する前に、以下の条件を満たしている必要があります。
-
Unity Catalog上にデータを格納するためのカタログ、スキーマ、ボリュームが作成済みであること。
- 詳細な作成手順については、以下の記事を参照してください。
- DatabricksでUnity Catalogの外部ボリュームを作成する手順
2. 目的
Databricksプラットフォームを利用して、Web上にある公開データ(CSV)をDatabricksノートブックに取り込み、分析・可視化し、最終的に管理されたテーブルとして保存するまでの一連のプロセスを実践します。
具体的には、以下の項目を試します。
- ノートブックから直接CSVファイルをダウンロードし、Unity Catalogボリュームに格納。
- ボリューム上のCSVファイルをSparkデータフレームとして読み込み。
-
display()関数を用いたデータのテーブル表示と、組み込みの可視化機能(ワードクラウド)の利用。 - 処理後のデータフレームを、永続的なDelta LakeテーブルとしてUnity Catalogに保存。
3. 実行環境
- プラットフォーム: Databricks Free Edition
4. 試してみた
ステップ1: 新規ノートブックの作成と変数の定義
まず、データ操作を行うためのノートブックを準備し、事前準備で作成したカタログ、スキーマ、ボリュームを参照するための変数を定義しました。
実行手順:
-
サイドバーの
+ 新規>ノートブックをクリックして、新しいノートブックを作成します。 -
最初のセルに、チュートリアルページから以下のPythonコードをコピー&ペーストします。
catalog = "<catalog_name>" schema = "<schema_name>" volume = "<volume_name>" download_url = "https://health.data.ny.gov/api/views/jxy9-yhdk/rows.csv" file_name = "baby_names.csv" table_name = "baby_names" path_volume = "/Volumes/" + catalog + "/" + schema + "/" + volume path_table = catalog + "." + schema print(path_table) # Show the complete path print(path_volume) # Show the complete path -
"<catalog_name>","<schema_name>","<volume_name>"の部分を、事前準備で作成した実際の名前(例:"hello","dataaifan","vol")に書き換えます。 -
セルを実行(
Shift + Enter)し、パスが正しく表示されることを確認します。
ステップ2: CSVファイルのダウンロードとボリュームへの格納
定義した変数を使って、Web上からCSVファイルをダウンロードし、作成したボリュームに直接コピーします。
実行コード:
dbutils.fs.cp(f"{download_url}", f"{path_volume}" + "/" + f"{file_name}")
このセルを実行すると、指定されたURLのCSVファイルがボリューム内に保存されます。カタログエクスプローラーでボリュームの中身を確認すると、baby_names.csvが格納されていることがわかります。
ステップ3: CSVデータをデータフレームに読み込み
ボリュームに格納したCSVファイルを、Sparkデータフレームとして読み込みます。
実行コード:
df = spark.read.csv(f"{path_volume}/{file_name}",
header=True,
inferSchema=True,
sep=",")
ステップ4: データの可視化
display()関数を使用してデータフレームの内容をテーブル形式で表示し、さらに組み込みの可視化ツールでワードクラウドを作成します。
実行手順:
-
新しいセルで以下のコードを実行し、データをテーブルで表示します。
display(df) -
表示されたテーブルタブの横にある
+アイコンをクリックし、可視化を選択します。 -
可視化エディタが開きます。以下の通り設定します。
-
可視化タイプ (Visualization type):
Word cloudを選択します。 -
単語列 (Words column):
First Nameを選択します。 -
頻度制限 (Frequencies limit): 最小値の入力欄に
35を入力し、頻度が35回以上の単語のみを表示するようにフィルタリングします。
-
可視化タイプ (Visualization type):
-
ワードクラウドが自動で生成されるのを確認し、
保存をクリックします。
ステップ5: データフレームをDelta Lakeテーブルとして保存
最後に、分析しやすいように整形したデータフレームを、Unity Catalogで管理される永続的なDelta Lakeテーブルとして保存します。
実行手順:
-
テーブルとして保存する際、列名にスペースが含まれているとエラーになるため、先に列名を置換します。
df = df.withColumnRenamed("First Name", "First_Name") df.printSchema() -
saveAsTableメソッドを使用して、データフレームをテーブルに書き込みます。df.write.mode("overwrite").saveAsTable(f"{path_table}" + "." + f"{table_name}")
この操作が完了すると、カタログエクスプローラーのスキーマ配下にbaby_namesという新しいテーブルが作成されます。**サンプルデータ**タブをクリックすることで、テーブルの内容を直接確認できます。
5. 最後に
このチュートリアルを通じて、Databricksノートブックを使い、外部のCSVデータソースからデータを取得、加工、可視化し、最終的にUnity Catalogで管理されるDelta Lakeテーブルとして保存するまでの一連のワークフローを体験しました。
- Unity Catalogのボリューム機能を使うことで、生データを構造化データとは別に管理しつつ、ノートブックから簡単にアクセスできることがわかりました。
-
display()関数と可視化エディタの組み合わせは、コーディングとGUI操作をシームレスに行き来しながら、迅速なデータ探索とインサイト発見を可能にします。 - 最終的にデータをDelta Lakeテーブルとして保存することで、信頼性の高いデータ基盤を構築し、後続のBIツールでの分析や機械学習モデルのトレーニングなど、さらなるデータ活用へと繋げることができます。
Discussion