Apache Spark でVeeva のデータをSQL で操作する方法

杉本和也
杉本和也
リードエンジニア
CData JDBC ドライバーを使用して、Apache Spark でVeeva にデータ連携。

Apache Spark は大規模データ処理のための高速エンジンです。CData JDBC Driver for VaultCRM と組み合わせると、Spark はリアルタイムでVeeva のデータに連携して処理ができます。本記事では、Spark シェルに接続してVeeva をクエリする方法について解説します。

CData JDBC Driver は、最適化されたデータ処理がドライバーに組み込まれているため、リアルタイムVeeva と対話するための高いパフォーマンスを提供します。Veeva に複雑なSQL クエリを発行すると、ドライバーはフィルタや集計など、サポートされているSQL操作を直接Veeva にプッシュし、組込みSQL エンジンを使用してサポートされていない操作(SQL 関数やJOIN 操作)をクライアント側で処理します。組み込みの動的メタデータクエリを使用すると、ネイティブデータ型を使用してVeeva を操作して分析できます。

CData JDBC Driver for VaultCRM をインストール

まずは、本記事右側のサイドバーからVaultCRM JDBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。

Spark Shell を起動してVeeva のデータに接続

  1. ターミナルを開き、Spark shell でCData JDBC Driver for VaultCRM JAR file をjars パラメータに設定します:
    $ spark-shell --jars /CData/CData JDBC Driver for VaultCRM/lib/cdata.jdbc.vaultcrm.jar
    
  2. Shell でJDBC URL を使ってVeeva に接続し、SQL Context load() function でテーブルを読み込みます。

    それでは、Veeva Vault アカウントに接続していきましょう。まずはUrl 接続プロパティにホスト名を設定します。ホスト名は、アカウントにログインした後にアドレスバーから確認できます。

    例:https://myvault.veevavault.com

    Veeva Vaultへの認証

    続いて、認証方法を設定しましょう。CData 製品では、以下の認証方法をサポートしています。

    • Veeva Vault ユーザー資格情報
    • Azure AD 認証プロバイダーのOpenID Connect
    • Okta SSO

    ユーザー資格情報

    最も基本的な認証方法です。AuthSchemeBasic に設定し、UserPassword にユーザーログイン資格情報を設定してください。

    その他の認証方法については、ヘルプドキュメントの「接続の確立」をご確認ください。

    組み込みの接続文字列デザイナー

    JDBC 接続文字列URL の作成には、Veeva JDBC Driver にビルトインされたデザイナを使用できます。JAR ファイルをダブルクリックするか、コマンドラインでJAR ファイルを実行するとデザイナが開きます。

    java -jar cdata.jdbc.vaultcrm.jar
    

    接続プロパティを入力し、接続文字列をクリップボードにコピーします。

    scala> val vaultcrm_df = spark.sqlContext.read.format("jdbc").option("url", "jdbc:vaultcrm:User=myuser;Password=mypassword;Server=localhost;Database=mydatabase;").option("dbtable","NorthwindProducts").option("driver","cdata.jdbc.vaultcrm.VaultCRMDriver").load()
    
  3. 接続が完了し、データがロードされたら、テーブルスキーマが表示されます。
  4. Veeva をテンポラリーテーブルとして登録します:

    scala> vaultcrm_df.registerTable("northwindproducts")
  5. データに対して、次のようなカスタムSQL クエリを実行します。

    scala> vaultcrm_df.sqlContext.sql("SELECT ProductId, ProductName FROM NorthwindProducts WHERE CategoryId = 5").collect.foreach(println)

    コンソールで、次のようなVeeva のデータを取得できました!これでVeeva との連携は完了です。

    Veeva をApache Spark から取得

CData JDBC Driver for VaultCRM をApache Spark で使って、Veeva に対して、複雑かつハイパフォーマンスなクエリを実行できます。30日の無償評価版 をダウンロードしてぜひお試しください。

Apache Spark の設定

はじめる準備はできましたか?

Vault CRM Driver の無料トライアルをダウンロードしてお試しください:

 ダウンロード

詳細:

Vault CRM Icon Vault CRM JDBC Driver お問い合わせ

Vault CRM のDocuments、Users、Groups などのデータに連携するJava アプリケーションを素早く、簡単に開発できる便利なドライバー。