🐕

チュートリアル:ノートブックからCSVデータをインポートして可視化する

に公開

1. 事前準備

このチュートリアルを開始する前に、以下の条件を満たしている必要があります。

2. 目的

Databricksプラットフォームを利用して、Web上にある公開データ(CSV)をDatabricksノートブックに取り込み、分析・可視化し、最終的に管理されたテーブルとして保存するまでの一連のプロセスを実践します。
具体的には、以下の項目を試します。

  • ノートブックから直接CSVファイルをダウンロードし、Unity Catalogボリュームに格納。
  • ボリューム上のCSVファイルをSparkデータフレームとして読み込み。
  • display()関数を用いたデータのテーブル表示と、組み込みの可視化機能(ワードクラウド)の利用。
  • 処理後のデータフレームを、永続的なDelta LakeテーブルとしてUnity Catalogに保存。

3. 実行環境

  • プラットフォーム: Databricks Free Edition

4. 試してみた

ステップ1: 新規ノートブックの作成と変数の定義

まず、データ操作を行うためのノートブックを準備し、事前準備で作成したカタログ、スキーマ、ボリュームを参照するための変数を定義しました。

実行手順:

  1. サイドバーの + 新規 > ノートブック をクリックして、新しいノートブックを作成します。

  2. 最初のセルに、チュートリアルページから以下の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
    
  3. "<catalog_name>", "<schema_name>", "<volume_name>" の部分を、事前準備で作成した実際の名前(例: "hello", "dataaifan", "vol")に書き換えます。

  4. セルを実行(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()関数を使用してデータフレームの内容をテーブル形式で表示し、さらに組み込みの可視化ツールでワードクラウドを作成します。

実行手順:

  1. 新しいセルで以下のコードを実行し、データをテーブルで表示します。

    display(df)
    
  2. 表示されたテーブルタブの横にある + アイコンをクリックし、可視化 を選択します。

  3. 可視化エディタが開きます。以下の通り設定します。

    • 可視化タイプ (Visualization type): Word cloud を選択します。
    • 単語列 (Words column): First Name を選択します。
    • 頻度制限 (Frequencies limit): 最小値の入力欄に 35 を入力し、頻度が35回以上の単語のみを表示するようにフィルタリングします。
  4. ワードクラウドが自動で生成されるのを確認し、保存 をクリックします。

ステップ5: データフレームをDelta Lakeテーブルとして保存

最後に、分析しやすいように整形したデータフレームを、Unity Catalogで管理される永続的なDelta Lakeテーブルとして保存します。

実行手順:

  1. テーブルとして保存する際、列名にスペースが含まれているとエラーになるため、先に列名を置換します。

    df = df.withColumnRenamed("First Name", "First_Name")
    df.printSchema()
    
  2. 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ツールでの分析や機械学習モデルのトレーニングなど、さらなるデータ活用へと繋げることができます。

6. 参考資料

  1. Databricksの外部ロケーション(External Location)を設定する手順
  2. Databricksのカタログと外部ボリュームを作成

Discussion