CCCMKホールディングス TECH LABの Tech Blog

TECH LABのエンジニアが技術情報を発信しています

ブログタイトル

Microsoft FabricでSharePoint上のデータにアクセスしてみました。

こんにちは、CCCCMKホールディングスAIエンジニアの三浦です。

気がついたらもう2025年も残りわずかです。今年はいつもよりも技術イベントに参加させていただく機会がとても多く、そういった機会を通じて自分自身多くのことを学べたと思います。これからも引き続き色々なイベントに参加できるよう、学び続けることと体力を維持し続けることを意識していきたいと思っています。

最近MicrosoftのFabricを調査していました。Microsoft Fabricは統合データ分析プラットフォームで、データの取り込みから保存、処理、分析、可視化までを一元的に実行できるSaaS型サービスです。SparkやDeltaなどが出てくるので、databricksに慣れていると割とスムーズに利用できると思います。

FabricにはShortcutという機能があって、Azure Blob StorageをはじめAWS S3, Google Cloud Storageなどの外部のストレージと接続することが出来ます。特にShortcutはデータを元の場所に格納したままアクセスできるため、データを分析のために二重持ちする必要がありません。

このShortcutは現在PreviewのステータスですがOneDriveやSharePointにも接続することが出来ます。これらの場所に格納している提案書や社内のマニュアルなどにアクセスし、FabricのNotebookで加工してAIが読み取れるフォーマットに変換する、といったことが可能になります。

今回はFabricでSharePointに接続し、SharePoint上のファイルにNotebookからアクセスする方法について調べたことをまとめてみたいと思います。

Shortcutの作成

まずWorkspaceの中にLakehouseを作成します。FabricではOneLake・Lakehouseといった概念が登場しますが、OneLakeはFabricのストレージ基盤を表し、LakehouseはOneLake上に構築されたデータ管理モデルを表しています。LakehouseはSQLが使える構造化データが格納されたTablesとファイルを格納できるFilesで構成されています。

Lakehouseを作った後、TablesやFilesの上で右クリックをすると"New Shortcut"というメニューが表示されます。ここからShortcutを作成し、現在のLakehouseに紐づけて管理することが出来るようになります。

Shortcutを作成する

"New Shortcut"を選ぶと以下のように接続先のストレージタイプを選択する画面が表示されます。SharePointのファイルにアクセスする場合は"SharePoint Folder(Preview)"を選択します。

SharePoint Folderは現在右下にあります。

接続先のSharePoint SiteのURLを入力します。"https://{テナント名}.sharepoint.com/sites/{サイト名}"のような形式で指定しました。

接続先のSharePoint SiteのURLを指定します。

あとは取り込むフォルダを選択する画面が表示されるので、対象のフォルダを選択するとLakehouseのExplorerからSharePoint上のファイル一覧を確認することが出来ます。

SharePoint上のファイル一覧が表示されました。

Notebookからアクセス

Shortcutを経由してNotebookからSharePointのファイルにアクセスしてみます。

Notebookからアクセスする場合は下の図の"Copy File API Path"で所得出来るパスを使うことが出来ます。

"Copy File API Path"を選択するとパスがコピーできます。

# === 設定 ===
shortcut_path = "file:/lakehouse/default/Files/ドキュメント"

ファイル一覧を出力してみました。

from notebookutils import mssparkutils

items = mssparkutils.fs.ls(shortcut_path)

file_list = []

for item in items:
    file_list.append(
        {
            "name": item.name,
            "path": item.path,
            "modifyTime": item.modifyTime,
            "size": item.size
        }
    )

以下のようにファイルの情報を取得することが出来ました。

[{'name': 'AI-Readyを目指した非構造化データのメダリオンアーキテクチャ.pdf',
  'path': 'file:/lakehouse/default/Files/ドキュメント/AI-Readyを目指した非構造化データのメダリオンアーキテクチャ.pdf',
  'modifyTime': 1765244605000,
  'size': 2254435},
  ...
]

ここで使用したnotebookutils(Fabric NotebookUtils)はFabricのNotebookでファイル操作などのタスクを実行するためのビルトインユーティリティです。

次にファイルの内容を取得してみます。SharePointにテキストファイルを格納し、Notebookで内容を表示してみます。対象のファイルに設定されたpathは以下のようになっていますが、このpathでアクセスしようとするとエラーが発生します。

ファイルに設定されたpath。

file:/lakehouse/default/Files/ドキュメント/test.txt

このpathでアクセスしようとするとエラーが発生します。

txt_path = "file:/lakehouse/default/Files/ドキュメント/test.txt"

with open(txt_path,"r") as f:
    f_content = f.read()

print(f_content)

以下のように、ファイルを見つけることが出来ていません。

FileNotFoundError: [Errno 2] No such file or directory: 'file:/lakehouse/default/Files/ドキュメント/test.txt'

Pythonの標準のライブラリでアクセスする場合は先頭の"file:"を除く必要があります。

with open(txt_path.split("file:")[-1],"r") as f:
    f_content = f.read()

print(f_content)
こんにちは!これはテスト用のファイルです!

まとめ

ということで今回は最近勉強しているMicrosoft Fabricを使ってSharePoint上のファイルにアクセスする方法についてまとめてみました。Microsoft製のサービスなので、やはり他のMicrosoftのサービスとの相性がとてもいい印象を持ちました。Notebookの操作感もdatabricksのものと比べて遜色なかったのですが、aptが使えないといった制約があるようなのでaptで追加のライブラリのインストールが必要な場合は何か対策が必要かもしれません。引き続きFabricについて調べていきたいと思います。