はじめに
BCDR などの容量設定↓ を json 化してみたかった
API 確認について
Fabric Capacities - Get などの公式ドキュメントには記載がなかったので開発者ツールから API を確認しています。そのため、 非公式 かつ 対応する項目、パスの資料がない 点に注意
コード
python
import json
import sempy.fabric as fabric
import notebookutils
from datetime import datetime
# 設定を保存するディレクトリの基準となる root_dir
capacity_id = '<容量ID>'
root_dir = f"/lakehouse/default/Files/capacity_setting/capacity_id={capacity_id}"
# 対象となる設定のリスト
target_settings = [
'',
'capacityCustomParameters',
'autoscale',
'config',
'surgeProtectionRules',
'workspaces',
'workloads/SparkCore/workloadAutoscaleLimit',
'resourceGovernance'
]
def dump_setting(capacity_id, path):
"""
設定を取得し、JSON形式で保存する関数
"""
# ルートディレクトリとURLの決定
if path == '':
url = f"/capacities/{capacity_id}"
output_dir = f"{root_dir}/base_settings"
elif path == 'capacityCustomParameters':
url = f"/capacities/{capacity_id}/capacityCustomParameters?workloadIds=ADB&workloadIds=ADM&workloadIds=AI&workloadIds=Config&workloadIds=CosmosDB&workloadIds=CDSA&workloadIds=DMS&workloadIds=AS&workloadIds=QES&workloadIds=Dataverse&workloadIds=DI&workloadIds=dmh&workloadIds=DMR&workloadIds=DO&workloadIds=ES&workloadIds=ESGLake&workloadIds=Dataflows&workloadIds=FabricDW&workloadIds=FuncSet&workloadIds=Graph&workloadIds=GraphQL&workloadIds=HLS&workloadIds=ScreenshotEngine&workloadIds=Kusto&workloadIds=lake&workloadIds=Lakehouse&workloadIds=LiveTable&workloadIds=ML&workloadIds=Must&workloadIds=Notebook&workloadIds=NLS&workloadIds=OneRiver&workloadIds=RsRdlEngine&workloadIds=Pbcd&workloadIds=PowerBI&workloadIds=REP&workloadIds=Rls&workloadIds=Reflex&workloadIds=SparkCore&workloadIds=SQLDb&workloadIds=SqlTools&workloadIds=TDS&workloadIds=TIPS&workloadIds=Transform&workloadIds=Vpaas"
output_dir = f"{root_dir}/capacityCustomParameters"
else:
url = f"/capacities/{capacity_id}/{path}"
output_dir = f"{root_dir}/{path}"
# APIリクエスト
try:
client = fabric.FabricRestClient()
response = client.get(url)
response.raise_for_status() # ここでHTTPエラーをチェック
response_json = json.loads(response.content.decode('utf-8'))
except Exception as e:
print(f"Error fetching data for {path}: {e}")
return
# JSON文字列に変換
settings_str = json.dumps(response_json, indent=4)
# 出力ディレクトリを作成
notebookutils.fs.mkdirs(output_dir)
# 日付の生成
date_str = datetime.now().strftime("%Y%m%d")
# ファイル名を作成し、DBFSに保存
file_path = f"{output_dir}/{date_str}.json"
notebookutils.fs.put(file_path, settings_str, True)
print(f"Settings for {path} have been saved to: {file_path}")
# 各設定を順番にダンプ
for setting in target_settings:
dump_setting(capacity_id, setting)
実行時の補足
容量ID はこちらで確認(または 設定表示時の URL からも確認可能)

実行時には Python ノートブックとして実行
既定のレイクハウスをひもづけておくこと(紐づけない場合はマウントが必要)
確認結果から所見
json化したはいいものの、一部表示された項目と API 出力結果の項目とで紐づきがわかりにくいものがある。
たとえば、以下のような Power BI Workloads 設定は
カスタムパラメータとして格納されているようで、わかりにくい
他にも一見してわからないものがあるかも。






