目次
1.はじめに
皆さんこんにちは。
今回は、DatabricksでローコーティングでETL/ELTを実現するためのbamboolibを利用する方法について説明していきます。
bamboolibは、データの読み込み、クリーニング、変換、可視化などの一連のデータ分析タスクを容易に実行するためのインタラクティブなインターフェースを提供します。非常に直感的で使いやすいGUIを備えています。
Pythonに関する知識は若干必要ですが、ローコード開発を行うことができます。
2.前提要件
実施する際の前提条件は
・操作ユーザーは Azure Databricks ワークスペースにアクセス権限があること。
・操作ユーザーは、ノートブックの作成・実行権限があること。権限が付与されていない場合、管理者に権限を付与してもらう様に依頼してください。
3.bamboolib を使用してノートブックを作成する
3-1.CSVファイルをDBFSにアップロードする
まず、Databricks ワークスペース上でCSVファイルを DBFS にアップロードします。
① Databricksワークスペースにログインします。
② Databricks画面でサイドバーから「Data science & Engineering」をクリックします。
③ サイドバーから「データ」をクリックします。
④ データエクスプローラーから「DBFSを閲覧」を選択します。
(このボタンが表示されない場合は、Admin SettingsのWorkspace settingsタブで有効にするよう管理者に相談してください。)
⑤ DBFS から FileStore フォルダを選択して、「アップロード」をクリックします。
⑥ ダイアログでローカル コンピューターからのファイルをアップロードできます。
⑦ ファイルを選択して、「完了」ボタンをクリックします。
3-2.bamboolib のインストール
① サイドバーから「新規」をクリックして、「ノートブック」を選択します。
② 新規作成したノートブック画面が表示されるので、ノートブックに名前を付け、デフォルトの言語として Python を選択します。
③ 以下のコードをノートブックの 1行目と 2行目にコピーして、bamboolib ライブラリをインストールします。
※例
1 |
%pip install bamboolib |
1 2 |
import bamboolib as bam bam |
④「Shift」+「Enter」キーを押して、コマンドを実行します。
⑤ 実行後、bamboolib ライブラリがインストールされ、bamboolib ウィジェットが表示されます。
4.Databricks ワークスペースで ETL/ELT を実行する
4-1.DBFSからデータを読み込む
①「Databricks: Read CSV file from DBFS」をクリックします。
②「Read CSV from DBFS」ダイアログボックスで、前の手順で DBFS にアップロードした csv ファイルを選択し、「Open CSV file」ボタンをクリックします。
③ CSV ファイルのデータとウィジェットが表示されます。
4-2.データを変換する
このデータセットは、2010年から2022年までの地域別の出生数と死亡数です。2022年のみの地域別の死亡数を降順で表示したい場合、「Data」タブの「Search actions」ドロップダウンリストで以下の手順に従ってください。
①「filter」と入力します。
②「Filter rows」を選択します。
③ 最初のフィルタリング条件を指定します。
④ 別のフィルタリング条件を追加するには、「add condition」をクリックし、次のフィルタリング条件を指定します。
⑤「Dataframe name」では、テーブルの内容のプログラム識別子をデータフレームとして指定します。または、デフォルトの「df」のままにします。
⑥「Execute」をクリックします。
実行後の結果を確認できます。
特定のカラムに欠損値がある行を削除したい場合(例えば、このデータセットでは「Region」カラムに欠損値の行を削除したい)、「Data」タブの「Search actions」ドロップダウンリストで以下の手順に従ってください。
①「drop」あるいは「remove」と入力します。
②「Drop missing values」を選択します。
③「Drop missing values」ペインで欠損値をチェックするカラムを指定します。
④「Dataframe name」では、テーブルの内容のプログラム識別子をデータフレームとして指定します。或いは、デフォルトの「df」のままにします。
⑤「Execute」をクリックします。
実行後の結果を確認できます。
フィルタリング後のデータセットの行をカラム別に降順(Z-A)にソートするには、「Data」タブの「Search actions」ドロップダウンリストで以下の手順に従ってください。
①「sort」と入力します。
②「Sort rows」を選択します。
③「Sort column(s)」ペインでソートする最初のカラムとソート順を選択します。
④ 別のソート条件を追加するには、「add column」をクリックし、次のソート条件を指定します。
⑤「Dataframe name」では、テーブルの内容のプログラム識別子をデータフレームとして指定します。或いは、デフォルトの「df」のままにします。
⑥「Execute」をクリックします。
その後、実行後の結果を見ると、2022年のみの地域別の死亡数を降順で表示しました。
4-3.データを抽出する
データを変換した後、抽出して dbfs ストレージに保存できます。
①「Export」をクリックして「Databricks: Export to CSV in DBFS」をクリックします。
② dbfsに保存したいファイル名を入力します。
③「Execute」ボタンをクリックします。
DBFSに保存されたファイルを確認できます。
現在のウィジェットの状態をpandas DataFrame としてプログラム上で再作成するためのPythonコードを取得したい場合、それをコードにエクスポートすることができます。
①「Export」をクリックして「Export code」をクリックします。
②「Copy code」をクリックします。
③ このブック内の別のセル、又は別のブックにコードを貼り付けます。
④ この pandas DataFrameとプログラム上で連携するための追加のコードを記載し、そのセルを実行します。 たとえば、DataFrame の内容を表示するには、DataFrame がプログラム上で df として表現されていると想定します。
また、データを変数に抽出きます。
①「Export」をクリックして「Export to variable」をクリックします。
② 変数の名前を入力します。
③「Execute」ボタンをクリックします。
④ この変数を使用して、現在のウィジェットの状態をpandas DataFrame としてプログラム上で再作成できます。
4-4.データを保存する
この変数を使用して、データを保存します。
① 以下のコードをコピーしてデータを表示して、ノートブックで実行します。
※例
1 |
my_df=spark.createDataFrame(my_df) |
1 |
my_df.write.mode("overwrite").format("delta").saveAsTable("catalog.test.deaths-by-region_2022-table") |
上記のコマンドを実行すると、データがUnity カタログのデルタ テーブルに保存されました。
下記の SQLコマンドを実行して、DataFrame から保存したデルタ テーブルを表示します。
※例
1 |
SELECT * FROM catalog.test.death_by_region_2022 |
5.まとめ
DatabricksでローコーティングでETL/ELTを実現するための bamboolib を利用する方法について説明しました。
今回の記事が少しでもDatabricksを知るきっかけや、業務のご参考になれば幸いです。
日商エレクトロニクスでは、Azure Databricksの環境構築パッケージを用意しています。
Azure DatabricksやAzure活用、マイクロソフト製品の活用についてご相談事がありましたらぜひお問い合わせください!
・Azure Databricks連載シリーズはこちら
この記事を読んだ方へのオススメコンテンツはこちら
この記事を書いた人
- phongcq