Azure Databricks でMonday.com のデータに接続してデータ処理を行う方法
Databricks は、Apache Spark によるデータ処理機能を提供するクラウドベースのサービスです。CData JDBC ドライバと組み合わせることで、Databricks を使用してリアルタイムMonday.com のデータのデータエンジニアリングとデータサイエンスを実行できます。この記事では、Azure で CData JDBC ドライバをホストし、Databricks からリアルタイムMonday.com のデータに接続してデータを処理する方法を説明します。
最適化されたデータ処理機能を組み込んだ CData JDBC ドライバは、リアルタイムMonday.com のデータとのインタラクションにおいて卓越したパフォーマンスを発揮します。Monday.com に対して複雑な SQL クエリを発行すると、ドライバーはフィルタや集計などのサポートされている SQL 操作を直接Monday.comにプッシュし、サポートされていない操作(主に SQL 関数や JOIN 操作)は組み込みの SQL エンジンを使用してクライアント側で処理します。動的メタデータクエリ機能により、ネイティブのデータ型を使用してMonday.com のデータの操作・分析が可能です。
CData JDBC ドライバを Azure にインストール
Databricks でリアルタイムMonday.com のデータを操作するには、Azure Data Lake Storage(ADLS)を通じてドライバーをインストールします。(以前のバージョンの記事で説明していた DBFS を介した接続方法は非推奨となっていますが、廃止日は公開されていません。)
- JDBC JAR ファイルを任意の Blob コンテナにアップロードします(例:「databrickslibraries」ストレージアカウントの「jdbcjars」コンテナ)。
- ストレージアカウントから「セキュリティとネットワーク」を展開し、「アクセスキー」をクリックしてアカウントキーを取得します。使用するキーを表示してコピーしてください。
- コンテナに移動し、JAR を保存している特定のコンテナを開き、JDBC JAR ファイルのエントリを選択して JAR ファイルの URL を取得します。ファイルの詳細が開き、URL をクリップボードにコピーするボタンがあります。この値は以下のようになります(「blob」の部分はストレージアカウントの種類によって異なる場合があります):
https://databrickslibraries.blob.core.windows.net/jdbcjars/cdata.jdbc.salesforce.jar
- Databricks クラスターの「Configuration」タブで「Edit」ボタンをクリックし、「Advanced options」を展開します。そこで、以下の Spark オプション(JAR URL のドメイン名から派生)に、コピーしたアカウントキーを値として追加し、「Confirm」をクリックします:
spark.hadoop.fs.azure.account.key.databrickslibraries.blob.core.windows.net
- Databricks クラスターの「Libraries」タブで「Install new」をクリックし、ADLS オプションを選択します。ドライバー JAR の ABFSS URL(これも JAR URL のドメイン名から派生)を指定し、「Install」をクリックします。ABFSS URL は以下のようになります:
abfss://jdbcjars@databrickslibraries.blob.core.windows.net/cdata.jdbc.salesforce.jar
Databricks からMonday.comに接続
JAR ファイルがインストールされたら、Databricks でリアルタイムMonday.com のデータを操作する準備が整いました。まず、ワークスペースで新しいノートブックを作成します。ワークブックに名前を付け、言語として Python が選択されていることを確認し(デフォルトで選択されているはずです)、「Connect」をクリックして「General Compute」から JDBC ドライバーをインストールしたクラスターを選択します(デフォルトで選択されているはずです)。
Monday.comへの接続を設定
JDBC ドライバのクラスを参照し、JDBC URL で使用する接続文字列を構築してMonday.comに接続します。また、JDBC URL に RTK プロパティを設定する必要があります(Beta ドライバーを使用している場合を除く)。このプロパティの設定方法については、インストールに含まれるライセンスファイルを参照してください。
driver = "cdata.jdbc.monday.MondayDriver" url = "jdbc:monday:RTK=5246...;APIToken=eyJhbGciOiJIUzI1NiJ9.yJ0aWQiOjE0MTc4NzIxMiwidWlkIjoyNzI3ODM3OSwiaWFkIjoiMjAyMi0wMS0yMFQxMDo0NjoxMy45NDFaIiwicGV;"
組み込みの接続文字列デザイナー
JDBC URL の構築には、Monday.com JDBC Driver に組み込まれている接続文字列デザイナーを使用できます。JAR ファイルをダブルクリックするか、コマンドラインから JAR ファイルを実行してください。
java -jar cdata.jdbc.monday.jar
接続プロパティを入力し、接続文字列をクリップボードにコピーします。
Monday 接続プロパティの取得・設定方法
Monday AuditLog API
Monday AuditLog API は、API トークンによる認証のみをサポートしています。
監査ログAPI トークンを生成するには:
- monday.com アカウントにログインします。
- 画面右上のアバター(画像アイコン)をクリックします。
- 表示されたメニューからAdministration を選択します。
- 左側のナビゲーションでSecurity をクリックします。
- Audit タブをクリックします。
- Monitor by API -> Copy をクリックして、AuditLog API トークンをコピーします。
API トークンを取得した後、以下の接続プロパティを設定します。
- Schema:"AuditLog" に設定。
- AuthScheme:Token
- APIToken:取得した監査ログAPI トークン
- URL:Monday アカウントURL。ログイン後、自身のMonday ホームページのURL をコピーできます。例:https://your-account-name.monday.com/。
Monday GraphQL API
Monday GraphQL API は、API トークンまたはOAuth 標準による認証をサポートしています。
API トークン
API トークンで接続するには、AuthScheme をToken に設定し、次の手順でAPIToken を取得します。
- monday.com アカウントにログインします。
- 画面右上のアバター(画像アイコン)をクリックします。
- 表示されたメニューからAdministration を選択します(管理者権限が必要です)。
- 左側のナビゲーションでConnections をクリックし、表示されたページでAPI タブをクリックします。
- Personal API Token で、Create token をクリックしてパーソナルAPI トークンを作成します。APIToken 接続プロパティをこの値に設定します。
- すでにトークンを作成している場合は、Personal API Token でCopy ボタンをクリックしてAPI トークンをコピーします。APIToken 接続プロパティをこの値に設定します。
OAuth で認証する場合は、ヘルプドキュメントの「OAuth 認証の使用」セクションを参照してください。
Monday.com のデータの読み込み
接続を設定したら、CData JDBC ドライバと接続情報を使用してMonday.com のデータをデータフレームとして読み込むことができます。
remote_table = spark.read.format ( "jdbc" ) \ .option ( "driver" , driver) \ .option ( "url" , url) \ .option ( "dbtable" , "Invoices") \ .load ()
Monday.com のデータの表示
読み込んだMonday.com のデータを display 関数で確認してみましょう。
display (remote_table.select ("Id"))
Azure Databricks でMonday.com のデータを分析
Databricks SparkSQL でデータを処理したい場合は、読み込んだデータを一時ビューとして登録します。
remote_table.createOrReplaceTempView ( "SAMPLE_VIEW" )
以下の SparkSQL で分析用のMonday.com のデータを取得できます。
result = spark.sql("SELECT Id, DueDate FROM SAMPLE_VIEW WHERE Status = 'SENT'")
Monday.com からのデータは、対象のノートブック内でのみ利用可能です。他のユーザーと共有したい場合は、テーブルとして保存してください。
remote_table.write.format ( "parquet" ) .saveAsTable ( "SAMPLE_TABLE" )
CData JDBC Driver for Monday.com の30日間の無償トライアルをダウンロードして、Azure Databricks でリアルタイムMonday.com のデータを活用してみてください。ご不明な点があれば、サポートチームまでお気軽にお問い合わせください。