はじめに
Azure Synapse Analytics では ADLS Gen2 上のファイルを操作できます。
今回は ADLS Gen2 上の Excel ファイルを openpyxl を使用して操作する方法を説明します。
手順
1. ユーザーへの権限付与
ノートブックはワークスペースログインユーザーの権限で実行されます。詳細は こちらの記事 に記載しました。
ストレージ アカウントの IAM 設定より ストレージ BLOB データ共同作成者
の権限を該当ユーザーに付与します。
2. Excel ファイルの準備
サンプル データ Book1.xlsx を ADLS Gen2 に格納します。
3. コード実行
Synapse Studio にて以下のコードを実行して、ファイルの読み書きを行います。
なお、ダウンロードしたファイルをそのまま編集してアップロードすると ChecksumException
エラーとなるため、Book2.xlsx に一度コピーして編集を行います。
import openpyxl
from notebookutils import mssparkutils
import shutil
mssparkutils.fs.cp('abfss://container@storageaccount.dfs.core.windows.net/xlsx/Book1.xlsx', 'file:/tmp/')
shutil.copyfile('/tmp/Book1.xlsx','/tmp/Book2.xlsx')
wb = openpyxl.load_workbook('/tmp/Book2.xlsx')
ws = wb['Sheet1']
data_from = ws['A1'].value
print('data_from: ' + data_from)
ws['A1'] = 'fuga'
data_to = ws['A1'].value
print('data_to: ' + data_to)
wb.save('/tmp/Book2.xlsx')
result = mssparkutils.fs.cp('file:/tmp/Book2.xlsx', 'abfss://container@storageaccount.dfs.core.windows.net/xlsx/Book1.xlsx')
print('result: ' + str(result))
4. 編集した Excel ファイルの確認
手順 3 で ADLS Gen2 にアップロードした Excel ファイルを手元にダウンロードし、データが正しく編集されていることを確認します。
おわりに
Azure Synapse Analytics で openpyxl を用いて ADLS Gen2 上の Excel ファイルを操作する方法を説明しました。ファイルをそのまま編集するのではなく、一度別ファイルにコピーする必要があることに注意しましょう。