データ接続と統合利用可能なコネクターMicrosoft Excel

注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

Microsoft Excel

Microsoft Excel コネクターは、Microsoft Excel 用の Palantir 提供のドライバーです。

新しい Microsoft Excel ソースを作成するには、Palantir 提供のドライバーの標準セットアップフローに沿って進め、以下のセクションを参照して Microsoft Excel 固有の設定とネットワーク設定を行います。プロパティの完全なリファレンスについては、Microsoft Excel ドライバーの公式ドキュメント ↗を参照してください。

ベータ版

Microsoft Excel コネクターは開発のベータ版段階にあり、お使いのエンロールメントでは利用できない場合があります。開発が進行している間は、機能が変更される場合があります。

サポートされている機能

機能ステータス
探索🟡 ベータ版
バッチ同期🟡 ベータ版
インクリメンタル(差分連携)🟡 ベータ版
OAuth 2.0 認証🟡 ベータ版
テーブルエクスポート🟡 ベータ版

はじめに

Microsoft Excel コネクターは、ファイルストレージからワークブックを読み取り、そのワークシートとセル範囲をリレーショナルテーブルとして公開します。

読み取りによってワークブックが変更される場合があります

ワークブックを更新せずに保存済みの数式の値を読み取るには、Recalculate ↗ を FALSE に設定してください。特に、ほかのプロセスもワークブックに書き込む場合は、この設定を行ってください。デフォルトでは、コネクターは読み取り時に、変更されたセルの影響を受ける数式を再計算し、その結果をワークシートに書き戻します。

スケジュールされた読み取りでは、バッチ同期を使用して、これらのテーブルをデータセットに書き込みます。ワークブックを更新するには、データを書き込むを参照してください。

コンピューターから Excel ファイルを1回だけアップロードする場合は、Foundry にドラッグします。

サポートされているストレージシステムには、Amazon S3、Azure Blob Storage、OneDrive、SharePoint、SFTP サーバーがあります。完全な一覧については、ConnectionType のリファレンス ↗ を参照してください。

Excel コネクターを選択する

Palantir は、ストレージの場所とアクセス方法に応じた3個の Excel コネクターを提供しています。

コネクター使用する状況
Microsoft Excel(このページ)サポートされているファイルストレージシステムに保存されたワークブックから、ワークシートとセル範囲をリレーショナルテーブルとして読み取る必要がある場合。
Microsoft Excel OnlineMicrosoft Entra ID 認証を使用し、Microsoft Graph を介して OneDrive for Business または SharePoint Online のワークブックにアクセスする必要がある場合。
Microsoft SharePoint Excelオンプレミスにデプロイされた SharePoint Server 2010 または 2013 上のワークブックにアクセスする必要がある場合。SharePoint Online には Microsoft Excel Online を使用します。

ワークブックに一貫した表形式の構造があり、ワークシートまたはセル範囲をソーステーブルとして直接公開する必要がある場合は、Microsoft Excel コネクターを使用します。

ワークシートの選択、セル範囲、データ型、ワークブック固有のパースをより柔軟に行うには、ストレージコネクターを使用してワークブックをファイルとして取り込みます。ストレージコネクターには、Amazon S3、Microsoft OneDrive、Microsoft SharePoint、Google Drive があります。その後、Transforms 用の Excel パーサー、Pipeline Builder の parseExcel 関数、または pandas.read_excel や openpyxl などのライブラリを使用して、トランスフォームでパースします。

認証

ワークブックが保存されているストレージシステムに対して認証するには、ConnectionType に適切なストレージシステムを設定します。サポートされている認証方法と必要なプロパティについては、CData の ConnectionType ↗ と AuthScheme ↗ のドキュメントを確認してください。

たとえば、委任された Microsoft Entra ID 認証を使用して OneDrive のワークブックにアクセスするには、ConnectionType を OneDrive、AuthScheme を AzureAD、InitiateOAuth を REFRESH に設定します。アプリケーションの OAuthClientId と OAuthClientSecret を指定し、OAuth 2.0 認証のガイダンスに沿って進めます。

データを読み取る

Excel データを Foundry に読み込むには、ソースエクスプローラーでワークシートのテーブルを選択し、バッチ同期を設定します。

各ワークシートは CData カタログ内のテーブルであり、ワークブックがそのスキーマになります。複数のワークブックを発見可能にするには、URI に単一のファイルではなくフォルダーを設定します。コネクターはそのフォルダー内のワークブックを見つけます。

Excel の列には異なるデータ型の値が含まれることがあるため、数値を含む列がテキストとして読み取られる場合があります。これらの値を数値として使用するには、同期後にトランスフォームで列のデータ型を変換します。

Data Connection のソースエクスプローラーに、Microsoft Excel のフォルダーソースが表示されています。CData カタログが展開され、Plants と Trees のワークブックスキーマが表示されています。Plants ワークシートが選択され、その行がプレビューペインに表示されています。

設定

以下のプロパティは必須または推奨です。

プロパティ必須かどうか説明デフォルト
ConnectionType ↗必須Microsoft Excel ファイルの保存と取得に使用するファイルストレージサービス、サーバー、またはファイルアクセスプロトコルを指定します。Azure Blob Storage
SSLMode ↗必須FTP または FTPS サーバーへの接続時に使用する認証メカニズムです。IMPLICIT
URI ↗必須Excel リソースの場所を示す Uniform Resource Identifier(URI)です。—
AuthScheme ↗推奨リモートサービスへの接続時に使用する認証の種類です。AzureAD
InitiateOAuth ↗推奨OAuth アクセストークンの取得または更新のプロセスを指定します。このトークンは、認証および認可されたユーザーが作業している間、ユーザーのアクセスを維持します。REFRESH
OAuthClientId ↗推奨カスタム OAuth アプリケーションの作成時に割り当てられたクライアントIDを指定します。(コンシューマー鍵とも呼ばれます。)この ID は、カスタムアプリケーションを OAuth 認可サーバーに登録します。—
OAuthClientSecret ↗推奨カスタム OAuth アプリケーションの作成時に割り当てられたクライアントシークレットを指定します。(コンシューマーシークレットとも呼ばれます。)このシークレットは、カスタムアプリケーションを OAuth 認可サーバーに登録します。—

ネットワーク

ソースがストレージシステムに接続できるようにするには、ストレージと認証のエンドポイントに対するネットワークエグレスポリシーを適用します。必要なエンドポイントは、選択した ConnectionType、AuthScheme、ストレージアカウント、リージョンによって異なります。

Foundry からストレージシステムに直接アクセスできない場合は、Agent プロキシエグレスポリシーを設定し、Agent ホストが必要なエンドポイントにアクセスできることを確認してください。

OAuth 2.0 認証

このコネクターは OAuth 2.0 認証をサポートします。Palantir 提供ドライバーの OAuth 2.0 ガイダンスに従って、接続を設定し、認可します。

テーブルエクスポート

このコネクターはテーブルエクスポートをサポートします。テーブルエクスポートの設定方法をご確認ください。

データを書き込む

ブックのデータをファイル単位で書き込むには、ブックを保存しているストレージシステムのコネクターを使用します。Microsoft Excel コネクターを通じてリレーショナルデータの行を書き込むには、テーブルエクスポートを使用します。

ストレージソースを外部トランスフォームまたは外部関数にインポートします。ブックをダウンロードし、openpyxl ↗ などのライブラリを使用してメモリー内で変更してから、更新したファイルを同じ場所にアップロードします。Amazon S3 にファイルをアップロードする例については、コード内で S3 ソースを使用するを参照してください。

更新したブックをアップロードする前に、ストレージソースを設定してください。

  • エクスポートを許可するには、接続設定 > エクスポート設定を開き、このソースへのエクスポートを有効化をオンにして、エクスポートを許可するマーキングを選択します。エクスポート制御を参照してください。
  • 関数からアップロードする場合は、マーキング検証なしでこのソースへのエクスポートを有効化をオンにします。
  • 更新したファイルを書き込むには、その保存場所への書き込みアクセス権を持つ資格情報を使用します。Microsoft Graph の場合、委任されたアクセスでは Files.ReadWrite ↗ を使用できます。アプリケーションへのアクセスには、Files.ReadWrite.All などの適切なアプリケーション権限と、管理者の同意が必要です。

コード内で Microsoft Excel ブックを使用する

ブックのストレージシステムのコネクターを使用して、ブックのバイトデータをダウンロードします。以下の例では、openpyxl ↗ を使用して、そのバイトデータを読み取り、更新する方法を示します。Python リポジトリの依存関係に openpyxl を追加してください。

認証、ネットワークのエグレス、ダウンロードおよびアップロードの呼び出しは、ストレージコネクターが処理します。例として、コード内で S3 ソースを使用するを参照してください。ダウンロードしたバイトデータをこれらのヘルパーに渡し、更新用ヘルパーが返すバイトデータを同じファイルの場所にアップロードします。

ワークシートの行を読み取る

このヘルパーは、最初の行を列名として使用し、その後に続く空でない行を返します。data_only=True を指定すると、数式セルには数式のテキストではなく、最後に保存された値が含まれます。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 from io import BytesIO from typing import Any from openpyxl import load_workbook def read_worksheet_rows( workbook_bytes: bytes, worksheet_name: str, ) -> list[dict[str, Any]]: workbook = load_workbook( BytesIO(workbook_bytes), read_only=True, data_only=True, ) try: worksheet = workbook[worksheet_name] rows = worksheet.iter_rows(values_only=True) raw_headers = next(rows, None) if raw_headers is None: return [] headers = [ str(header) if header is not None else f"column_{index + 1}" for index, header in enumerate(raw_headers) ] return [ dict(zip(headers, row)) for row in rows if any(value is not None for value in row) ] finally: workbook.close()

ブックのセルを更新する

このヘルパーは1個のセルを変更し、更新したブックのバイトデータを返します。

ブックを更新するとファイルの内容が置き換えられます

ダウンロード、更新、アップロードという一連のワークフローをコピーでテストしてください。返されたバイトデータをアップロードすると、リモートのブックが置き換えられます。また、openpyxl が対応していないブックの機能は保持されない場合があります。マクロが有効な .xlsm ブックではなく、.xlsx のコピーを使用してください。

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 from io import BytesIO from typing import Any from openpyxl import load_workbook def update_workbook_cell( workbook_bytes: bytes, worksheet_name: str, cell_reference: str, value: Any, ) -> bytes: workbook = load_workbook(BytesIO(workbook_bytes)) try: workbook[worksheet_name][cell_reference] = value output = BytesIO() workbook.save(output) return output.getvalue() finally: workbook.close()

制限事項

  • .xlsm ブックは読み取り専用です。 ドライバーは、マクロが有効なブックに対して読み取り操作のみ ↗をサポートします。代わりに、.xlsx として保存したコピーをダウンロード、更新、アップロードしてください。
  • レガシーの .xls 形式には対応していません。 読み取れるのは、Microsoft Excel 2007 以降で作成される Office Open XML 形式のみです。
  • 使用する編集ライブラリがブックの内容を保持することを確認するには、まずコピーでダウンロード、編集、アップロードのワークフローをテストしてください。たとえば、openpyxl はブックのすべての機能を保持するわけではなく ↗、一部の図形も保持されません。