Python でSharePoint Excel Services のデータを変換・出力するETL 処理を作る方法

加藤龍彦
加藤龍彦
デジタルマーケティング
CData Python Connector とpetl モジュールを使って、SharePoint Excel Services のデータを変換後にCSV ファイルに吐き出すETL 処理を実装します。

Pythonエコシステムには多くのモジュールがあり、システム構築を素早く効率的に行うことができます。本記事では、CData Python Connector for ExcelServices とpetl フレームワークを使って、SharePoint Excel Services のデータにPython から接続してデータを変換、CSV に出力するETL 変換を実装してみます。

CData Python Connector は効率的なデータ処理によりSharePoint Excel Services のデータ にPython から接続し、高いパフォーマンスを発揮します。SharePoint Excel Services にデータをクエリする際、ドライバーはフィルタリング、集計などがサポートされている場合SQL 処理を直接SharePoint Excel Services 側に行わせ、サポートされていないSQL 処理については、組み込みのSQL エンジンによりクライアント側で処理を行います(JOIN やSQL 関数など)。

必要なモジュールのインストール

pip で必要なモジュールおよびフレームワークをインストールします:

pip install petl
pip install pandas

Python でSharePoint Excel Services のデータをETL 処理するアプリを構築

モジュールとフレームワークをインストールしたら、ETL アプリケーションを組んでいきます。コードのスニペットは以下の通りです。フルコードは記事の末尾に付いています。

CData Connector を含むモジュールをインポートします。

import petl as etl
import pandas as pd
import cdata.excelservices as mod

接続文字列で接続を確立します。connect 関数を使って、CData SharePoint Excel Services Connector からSharePoint Excel Services への接続を行います

cnxn = mod.connect("URL=https://myorg.sharepoint.com;User=admin@myorg.onmicrosoft.com;Password=password;File=Book1.xlsx;")

ワークブックへの接続

どちらのSharePoint エディションをお使いでも、File を Excel ワークブックに設定してください。このパスは以下のプロパティからの相対パスになります。

  • Library:デフォルトではShared Documents ライブラリが使用されます。このプロパティを使って、組織内の別のドキュメントライブラリを指定してみてください。例えば、OneDrive for Business に接続する場合は、このプロパティを"Documents" に設定します。
  • Folder:このプロパティを使って、ライブラリ内のサブフォルダへのパスを指定できます。パスはLibrary で指定されたライブラリ名に関連します。

テーブルとしてのスプレッドシートデータへの接続

CData 製品では、基底API で利用可能なオブジェクトに基づいて、使用可能なテーブルを検出していきます。

API では異なるAPI オブジェクトを表示します。スプレッドシートの構成とSharePoint のバージョンに基づいてAPI を選択しましょう。

  • OData: OData API を使用すると、Excel で[挿入]->[テーブル]をクリックして作成されたExcel テーブルオブジェクト(範囲やスプレッドシートではありません)から定義されたテーブルにアクセスできます。OData API に接続する際、ワークブックにテーブルオブジェクトが定義されていない場合は、CData 製品がテーブルを返さないことがあります。テーブルとしてスプレッドシートまたは範囲に接続するには、UseRESTAPI をtrue に設定してください。
  • REST: REST API を使用すると、Excel テーブルオブジェクト、範囲、およびスプレッドシートから定義されたテーブルへアクセスできます。これがデフォルトの API です。範囲およびスプレッドシートから多数の行をリクエストすることは REST API によって制限されており、CData 製品では返される行数をデフォルトで 100 に制限しています。また CData 製品では、デフォルトで1行目からカラム名を検出します。これを無効にするには、Header を設定してください。

DefineTables を追加設定すると、Excel の範囲の構文を使用して、範囲に基づいてテーブルを定義できます。大きすぎる範囲は、API によって制限されます。

SharePoint オンプレミスへの接続

URL をサーバー名もしくはIP アドレスに設定しましょう。さらに、SharePointVersion と認証値を設定します。

SharePoint OnPremises を認証するには、AuthScheme を認証タイプに設定し、必要に応じてUserPassword を設定してください。

Note:SharePoint On-Premises 2010 に接続する場合は、 UseRESTAPI をtrue に設定する必要があります。

    Windows(NTLM)

    最も一般的な認証タイプです。CData 製品では NTLM をデフォルトとして使用するよう事前設定されています。Windows のUserPassword を設定して接続してください。

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

    SharePoint Excel Services をクエリするSQL 文の作成

    SharePoint Excel Services にはSQL でデータアクセスが可能です。Account エンティティからのデータを読み出します。

    sql = "SELECT Name, AnnualRevenue FROM Account WHERE Industry = 'Floppy Disks'"
    

    SharePoint Excel Services データのETL 処理

    DataFrame に格納されたクエリ結果を使って、petl でETL(抽出・変換・ロード)パイプラインを組みます。この例では、SharePoint Excel Services のデータ を取得して、AnnualRevenue カラムでデータをソートして、CSV ファイルにデータをロードします。

    table1 = etl.fromdb(cnxn,sql)
    
    table2 = etl.sort(table1,'AnnualRevenue')
    
    etl.tocsv(table2,'account_data.csv')
    

    CData Python Connector for ExcelServices を使えば、データベースを扱う場合と同感覚で、SharePoint Excel Services のデータ を扱うことができ、petl のようなETL パッケージから直接データにアクセスが可能になります。

    おわりに

    SharePoint Excel Services Python Connector の30日の無償トライアル をぜひダウンロードして、SharePoint Excel Services のデータ への接続をPython アプリやスクリプトから簡単に作成しましょう。



    フルソースコード

    import petl as etl
    import pandas as pd
    import cdata.excelservices as mod
    
    cnxn = mod.connect("URL=https://myorg.sharepoint.com;User=admin@myorg.onmicrosoft.com;Password=password;File=Book1.xlsx;")
    
    sql = "SELECT Name, AnnualRevenue FROM Account WHERE Industry = 'Floppy Disks'"
    
    table1 = etl.fromdb(cnxn,sql)
    
    table2 = etl.sort(table1,'AnnualRevenue')
    
    etl.tocsv(table2,'account_data.csv')
    

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

SharePoint Excel Services Connector のコミュニティライセンスをダウンロード:

 ダウンロード

詳細:

SharePoint Excel Services Icon SharePoint Excel Services Python Connector お問い合わせ

SharePoint Excel Services データ連携用のPython Connector ライブラリ。pandas、SQLAlchemy、Dash、petl などの主要なPython ツールにSharePoint Excel Services をシームレスに統合。