チュートリアル: Jupyter notebook から Power BI メジャーを抽出して計算する
このチュートリアルでは、SemPy (プレビュー) を使用してセマンティック モデル (Power BI データセット) のメジャーを計算する方法を示します。
このチュートリアルでは、次の作業を行う方法について説明します。
- セマンティック リンクの Python ライブラリ (SemPy) の Python インターフェイスを使用して、プログラムによって Power BI メジャーを評価する。
- AI と BI の間のギャップを埋めるのに役立つ SemPy のコンポーネントについて理解します。 コンポーネントには、次が含まれます。
- FabricDataFrame - 追加のセマンティック情報で強化された pandas のような構造体。
- 生データ、構成、メジャーなど、セマンティック モデルをフェッチできる便利な関数。
前提条件
Microsoft Fabric サブスクリプションを取得します。 または、無料の Microsoft Fabric 試用版にサインアップします。
Microsoft Fabric にサインインします。
ホーム ページの左側にある環境スイッチャーを使って、Synapse Data Science 環境に切り替えます。
左側のナビゲーション ペインから [ワークスペース] を選択して、お使いのワークスペースを見つけて選択します。 このワークスペースが現在のワークスペースになります。
Retail Analysis Sample PBIX.pbix セマンティック モデルをダウンロードし、ワークスペースにアップロードする。
ノートブックで作業を進める
このチュートリアルには、powerbi_measures_tutorial.ipynb ノートブックが付属しています。
このチュートリアルに付随するノートブックを開くには、「データ サイエンス用にシステムを準備する」チュートリアル の手順に従い、ノートブックをお使いのワークスペースにインポートします。
このページからコードをコピーして貼り付ける場合は、[新しいノートブックを作成する] ことができます。
コードの実行を開始する前に、必ずレイクハウスをノートブックにアタッチしてください。
ノートブックを設定する
このセクションでは、必要なモジュールとデータを含むノートブック環境を設定します。
ノートブック内の
%pip
インライン インストール機能を使用して PyPI からSemPy
をインストールします。%pip install semantic-link
後で必要になるモジュールの必要なインポートを実行します。
import sempy.fabric as fabric
Power BI ワークスペースに接続できます。 ワークスペース内のセマンティック モデルを一覧表示します。
fabric.list_datasets()
セマンティック モデルを読み込みます。 このチュートリアルでは、Retail Analysis Sample PBIX セマンティック モデルを使用します。
dataset = "Retail Analysis Sample PBIX"
ワークスペースのメジャーを一覧表示する
次のように SemPy の list_measures
関数を使用して、セマンティック モデル内のメジャーを一覧表示します。
fabric.list_measures(dataset)
メジャーを評価する
このセクションでは、SemPy の evaluate_measure
関数を使用して、さまざまな方法でメジャーを評価します。
生のメジャーを評価する
次のコードでは、SemPy の evaluate_measure
関数を使用して、"Average Selling Area Size" と呼ばれる構成済みのメジャーを計算します。 前のセルの出力で、このメジャーの基になる数式を確認できます。
fabric.evaluate_measure(dataset, measure="Average Selling Area Size")
groupby_columns
を使用してメジャーを評価する
追加のパラメーター groupby_columns
を指定すると、メジャー出力を特定の列ごとにグループ化できます。
fabric.evaluate_measure(dataset, measure="Average Selling Area Size", groupby_columns=["Store[Chain]", "Store[DistrictName]"])
前のコードでは、セマンティック モデル内の Store
テーブルの列 Chain
と DistrictName
でグループ化しました。
フィルターを使用してメジャーを評価する
filters
パラメーターを使用して、特定の列に対して結果に含めることができる特定の値を指定することもできます。
fabric.evaluate_measure(dataset, \
measure="Total Units Last Year", \
groupby_columns=["Store[Territory]"], \
filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]})
前のコードでは、Store
はテーブルの名前、Territory
は列の名前、PA
はフィルターで許可される値の 1 つです。
複数のテーブル間でメジャーを評価する
セマンティック モデル内の複数のテーブルにまたがる列ごとにメジャーをグループ化できます。
fabric.evaluate_measure(dataset, measure="Total Units Last Year", groupby_columns=["Store[Territory]", "Sales[ItemID]"])
複数のメジャーを評価する
関数 evaluate_measure
を使用すると、複数のメジャーの識別子を指定し、計算された値を同じ DataFrame に出力できます。
fabric.evaluate_measure(dataset, measure=["Average Selling Area Size", "Total Stores"], groupby_columns=["Store[Chain]", "Store[DistrictName]"])
Power BI XMLA コネクタを使用する
既定のセマンティック モデル クライアントの背後には、Power BI の REST API があります。 このクライアントでのクエリの実行に問題がある場合は、use_xmla=True
を使用してバックエンドを Power BI の XMLA インターフェイスに切り替えることができます。 SemPy パラメーターは、XMLA を使用したメジャー計算でも同じままです。
fabric.evaluate_measure(dataset, \
measure=["Average Selling Area Size", "Total Stores"], \
groupby_columns=["Store[Chain]", "Store[DistrictName]"], \
filters={"Store[Territory]": ["PA", "TN", "VA"], "Store[Chain]": ["Lindseys"]}, \
use_xmla=True)
関連するコンテンツ
セマンティック リンク や SemPy については、他のチュートリアルを確認してください。