次の方法で共有


チュートリアル: Jupyter notebook から Power BI メジャーを抽出して計算する

このチュートリアルでは、SemPy (プレビュー) を使用してセマンティック モデル (Power BI データセット) のメジャーを計算する方法を示します。

このチュートリアルでは、次の作業を行う方法について説明します。

  • セマンティック リンクの Python ライブラリ (SemPy) の Python インターフェイスを使用して、プログラムによって Power BI メジャーを評価する。
  • AI と BI の間のギャップを埋めるのに役立つ SemPy のコンポーネントについて理解します。 コンポーネントには、次が含まれます。
    • FabricDataFrame - 追加のセマンティック情報で強化された pandas のような構造体。
    • 生データ、構成、メジャーなど、セマンティック モデルをフェッチできる便利な関数。

前提条件

  • 左側のナビゲーション ペインから [ワークスペース] を選択して、お使いのワークスペースを見つけて選択します。 このワークスペースが現在のワークスペースになります。

  • Retail Analysis Sample PBIX.pbix セマンティック モデルをダウンロードし、ワークスペースにアップロードする。

ノートブックで作業を進める

このチュートリアルには、powerbi_measures_tutorial.ipynb ノートブックが付属しています。

このチュートリアルに付随するノートブックを開くには、「データ サイエンス用にシステムを準備する」チュートリアル の手順に従い、ノートブックをお使いのワークスペースにインポートします。

このページからコードをコピーして貼り付ける場合は、[新しいノートブックを作成する] ことができます。

コードの実行を開始する前に、必ずレイクハウスをノートブックにアタッチしてください。

ノートブックを設定する

このセクションでは、必要なモジュールとデータを含むノートブック環境を設定します。

  1. ノートブック内の %pip インライン インストール機能を使用して PyPI から SemPy をインストールします。

    %pip install semantic-link
    
  2. 後で必要になるモジュールの必要なインポートを実行します。

    import sempy.fabric as fabric
    
  3. Power BI ワークスペースに接続できます。 ワークスペース内のセマンティック モデルを一覧表示します。

    fabric.list_datasets()
    
  4. セマンティック モデルを読み込みます。 このチュートリアルでは、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 テーブルの列 ChainDistrictName でグループ化しました。

フィルターを使用してメジャーを評価する

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 については、他のチュートリアルを確認してください。