0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Microsoft Fabric の容量設定を json 保存する

0
Last updated at Posted at 2025-06-05

はじめに

BCDR などの容量設定↓ を json 化してみたかった

遷移方法:
image.png

設定画面:
image.png

API 確認について

Fabric Capacities - Get などの公式ドキュメントには記載がなかったので開発者ツールから API を確認しています。そのため、 非公式 かつ 対応する項目、パスの資料がない 点に注意

image.png

コード

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 からも確認可能)
image.png

実行時には Python ノートブックとして実行

image.png

既定のレイクハウスをひもづけておくこと(紐づけない場合はマウントが必要)

image.png

確認結果から所見

json化したはいいものの、一部表示された項目と API 出力結果の項目とで紐づきがわかりにくいものがある。

たとえば、以下のような Power BI Workloads 設定は

image.png

カスタムパラメータとして格納されているようで、わかりにくい

image.png

他にも一見してわからないものがあるかも。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?