今すぐお試しください!

製品の詳細CData JDBC Driver for SQL Analysis Services を確認して、無償評価版をダウンロード:

今すぐダウンロード

ETL/ELT のEmbulk を使ってSQL Analysis Services データをDB にロードする方法

OSS のETL/ELT ツールEmbulk のJDBC Plugin を使って、SQL Analysis Services データを簡単にDM に同期する方法。

Embulk は、大量のデータをDB、クラウドデータストア、DWH にロードできるオープンソースETL ツールです。近頃のトレンドでは、1社で複数のオンプレアプリやSaaS を使っており、データ分析にはETL/ELT ツールを使ってデータを丸ごとDB/DWH にロードしてから、分析やビジュアライズをすることが主流になっています。Embulk には、いろいろなプラグインがあり、多様なInput とOutput 処理をサポートしています。この記事では、Embulk のJDBC Input Plugin と CData Drivers for SQL Analysis Services を使って、SQL Analysis Services のデータを簡単にDB にロードします。この例ではロード先のDB にはMySQL を使います。

※製品について詳しい情報をご希望の方は以下からお進みください。

Embulk でCData JDBC Driver for SQL Analysis Services データをロード

  • CData JDBC Driver for SQL Analysis Services をEmbulk と同じマシンにインストールします。
  • 以下のパスにJDBC Driver がインストールされます。後ほどこのパスを使います。
    C:\Program Files\CData\CData JDBC Driver for SQL Analysis Services 2019J\lib\cdata.jdbc.ssas.jar
  • 次に、EmbulkとCData JDBC Driverをつなぎこむための、JDBC Input Plugin をインストールします。
    https://github.com/embulk/embulk-input-jdbc/tree/master/embulk-input-jdbc
  • embulk gem install embulk-input-jdbc
  • 今回はロード先DB としてMySQL を使います。ほかにもSQL Server、PostgreSQL、Google BigQuery などを使うことも可能です。
    https://github.com/embulk/embulk-output-jdbc/tree/master/embulk-output-mysql embulk gem install embulk-output-mysql
  • config ファイルを作成し、SQL Analysis Services -> MySQL のジョブを作成します。ssas-mysql.yml というファイル名で作成しました。
  •             
                    in:
                        type: jdbc
                        driver_path: C:\Program Files\CData\CData JDBC Driver for SQL Analysis Services 2019J\lib\cdata.jdbc.ssas.jar
                        driver_class: cdata.jdbc.ssas.SSASDriver
                        url: jdbc:ssas:User=myuseraccount;Password=mypassword;URL=http://localhost/OLAP/msmdpump.dll;
                        table: "Adventure_Works"
                    out: 
                        type: mysql
                        host: localhost
                        database: DatabaseName
                        user: UserId
                        password: UserPassword
                        table: "Adventure_Works"
                        mode: insert
                
            
  • ポイントはJDBC URLです。

    接続するには、Url プロパティを有効なSQL Server Analysis Services エンドポイントに設定して認証を提供します。XMLA アクセスを使用して、HTTP 経由でホストされているSQL Server Analysis Services インスタンスに接続できます。 Microsoft ドキュメント configure HTTP access を参照してSQL Server Analysis Services に接続してください。

    SQL をSQL Server Analysis Services に実行するには、ヘルプドキュメントの「Analysis Services データの取得」を参照してください。接続ごとにメタデータを取得する代わりに、CacheLocation を設定できます。

    • HTTP 認証

      AuthScheme を"Basic" または"Digest" に設定してUser とPassword を設定します。CustomHeaders に他の認証値を指定します。

    • Windows (NTLM)

      Windows のUser とPassword を設定して、AuthScheme をNTLM に設定します。

    • Kerberos およびKerberos Delegation

      Kerberos を認証するには、AuthScheme をNEGOTIATE に設定します。Kerberos 委任を使うには、AuthScheme をKERBEROSDELEGATION に設定します。必要があれば、User、Password およびKerberosSPN を設定します。デフォルトでは、本製品は指定されたUrl でSPN と通信しようと試みます。

    • SSL/TLS:

      デフォルトでは、本製品はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてヘルプドキュメントの「SSLServerCert」プロパティを参照してください。

    You can then access any cube as a relational table: When you connect the data provider retrieves SSAS metadata and dynamically updates the table schemas. Instead of retrieving metadata every connection, you can set the CacheLocation property to automatically cache to a simple file-based store.

    See the Getting Started section of the CData documentation, under Retrieving Analysis Services Data, to execute SQL-92 queries to the cubes.

  • テーブル名は取得したいテーブル名を入れます。
  • これで準備完了です。あとは「embulk run」で実行するだけです。
  • embulk run ssas-mysql.yml
  • 実行後、MySQL Workbenchからテーブルを確認してみると、データが取得できているはずです。

クエリ条件でフィルタリングしたデータのロード

ちなみに、上記の例ではテーブル名を直接指定しましたが、以下のようにSQL Queryを書いてもいいです。 Where句で作成日や修正日を指定すれば、最新のデータだけを対象にすることも可能です。

        
            in:
            type: jdbc
            driver_path: C:\Program Files\CData\CData JDBC Driver for SQL Analysis Services 2019J\lib\cdata.jdbc.ssas.jar
            driver_class: cdata.jdbc.ssas.SSASDriver
            url: jdbc:ssas:User=myuseraccount;Password=mypassword;URL=http://localhost/OLAP/msmdpump.dll;
                query: "SELECT Fiscal_Year, Sales_Amount FROM Adventure_Works WHERE [RecordId] = 1"
            out: 
                type: mysql
                host: localhost
                database: DatabaseName
                user: UserId
                password: UserPassword
                table: "Adventure_Works"
                mode: insert
        
    

CData JDBC Driver for SQL Analysis Services をEmbulk で使うことで、SQL Analysis Services コネクタとして機能し、簡単にデータを取得して同期することができました。ぜひ、30日の無償評価版 をお試しください。

 
 
ダウンロード