セマンティック モデルとデータフレーム内のリレーションシップを調査して検証する

この記事では、SemPy セマンティック リンク関数を使用して、Power BI セマンティック モデルと pandas DataFrames のリレーションシップを検出して検証する方法について説明します。

データ サイエンスと機械学習では、データの構造とリレーションシップを理解することが重要です。 Power BI を使用すると、これらの構造とリレーションシップをモデル化して視覚化できます。 より多くの洞察を得るか、機械学習モデルを構築するには、SemPy ライブラリ モジュールでセマンティック リンク関数を使用します。

データ サイエンティストとビジネス アナリストは、SemPy 関数を使用して、Power BI セマンティック モデルのリレーションシップを一覧表示、視覚化、検証したり、pandas DataFrames でリレーションシップを見つけて検証したりします。

前提条件

  • コードをコピーしてセルに貼り付ける 新しいノートブック を作成します。

  • Spark 3.4 以降では、Fabric を使用するときに既定のランタイムでセマンティック リンクを使用できるため、インストールする必要はありません。 Spark 3.3 以前では、またはセマンティック リンクの最新バージョンに更新するには、次のコマンドを実行します。

    %pip install -U semantic-link
    
  • ノートブックにレイクハウスを追加する

セマンティック モデルのリレーションシップを一覧表示する

list_relationships モジュール内の sempy.fabric 関数は、Power BI セマンティック モデルで見つかったすべてのリレーションシップの一覧を返します。 この一覧は、データの構造と、さまざまなテーブルと列がどのように接続されているかを理解するのに役立ちます。

この関数は、セマンティック リンクを使用して注釈付き DataFrame を提供することで機能します。 DataFrame には、セマンティック モデル内のリレーションシップを理解するために必要なメタデータが含まれています。 注釈付きの DataFrame を使用すると、セマンティック モデルの構造を分析し、それを機械学習モデルやその他のデータ分析タスクで使用することが容易になります。

list_relationships 関数を使用するには、まず sempy.fabric モジュールをインポートします。 その後、次の例に示すように、Power BI セマンティック モデルの名前または UUID を使用して関数を呼び出します。

import sempy.fabric as fabric

fabric.list_relationships("my_dataset")

上記のコードは、my_datasetという名前の Power BI セマンティック モデルを使用してlist_relationships関数を呼び出します。 この関数は、リレーションシップごとに 1 行の pandas DataFrame を返します。そのため、セマンティック モデル内のリレーションシップをすばやく探索して分析できます。

Note

ノートブック、Power BI データセット セマンティック モデル、レイクハウスは、同じワークスペースに配置することも、異なるワークスペースに配置することもできます。 既定では、SemPy は次の場所からセマンティック モデルへのアクセスを試みます。

  • ノートブックにレイクハウスをアタッチした場合は、レイクハウスのワークスペース。
  • レイクハウスがアタッチされていない場合は、ノートブックのワークスペース。

セマンティック モデルがこれらのワークスペースのいずれにも配置されていない場合は、SemPy メソッドを呼び出すときにセマンティック モデルのワークスペースを指定する必要があります。

セマンティック モデル内のリレーションシップを視覚化する

plot_relationship_metadata関数を使用して、セマンティック モデル内のリレーションシップを視覚化し、モデルの構造を学習します。 この関数は、テーブルと列の間の接続を示すグラフを作成し、さまざまな要素がどのように関連しているかを簡単に確認できるようにします。

plot_relationship_metadata関数の使用方法の例を次に示します。

import sempy.fabric as fabric
from sempy.relationships import plot_relationship_metadata

relationships = fabric.list_relationships("my_dataset")
plot_relationship_metadata(relationships)

この例では、 list_relationships 関数は my_dataset セマンティック モデルのリレーションシップを取得し、 plot_relationship_metadata 関数はそれらのリレーションシップを示すグラフを作成します。

含める列を選択し、不足しているキーの処理方法を設定し、 graphviz 属性をさらに追加して、グラフをカスタマイズします。

セマンティック モデル内のリレーションシップを検証する

list_relationship_violations関数を使用して、セマンティック モデル内のリレーションシップを確認し、問題や不整合を見つけます。 list_relationship_violations関数は、テーブルがセマンティック モデル内のリレーションシップと一致することを確認するためにテーブルをチェックします。

この関数は、リレーションシップの多重度に関する不整合を見つけ、データ分析または機械学習モデルに影響を与える前に問題を修正するのに役立ちます。

list_relationship_violations関数を使用するには、sempy.fabric モジュールをインポートし、セマンティック モデルからテーブルを読み取ります。 次に、テーブル名をテーブルの内容を含む DataFrame にマップするディクショナリを使用して関数を呼び出します。

次のコード例は、リレーションシップ違反を一覧表示する方法を示しています。

import sempy.fabric as fabric

tables = {
    "Sales": fabric.read_table("my_dataset", "Sales"),
    "Products": fabric.read_table("my_dataset", "Products"),
    "Customers": fabric.read_table("my_dataset", "Customers"),
}

fabric.list_relationship_violations(tables)

上記のコードは、my_dataset セマンティック モデルの list_relationship_violationsProductsCustomers テーブルを含むディクショナリを使用して関数を呼び出します。 カバレッジのしきい値を設定し、不足しているキーを処理する方法を選択し、不足しているキーの数をレポートに設定することで、関数をカスタマイズできます。

この関数は、リレーションシップ違反ごとに 1 行の pandas DataFrame を返します。そのため、セマンティック モデルの問題をすばやく見つけて修正できます。 list_relationship_violations関数を使用してセマンティック モデルの一貫性と精度を維持し、信頼性の高い機械学習モデルを構築し、データからより良い分析情報を得ることができます。

pandas DataFrame 内のリレーションシップを検出する

Fabric モジュールの list_relationshipsplot_relationships_df、および list_relationship_violations 関数は、セマンティック モデルのリレーションシップを探索するための強力なツールです。 場合によっては、pandas DataFrames などの他のデータ ソースでリレーションシップを見つける必要があります。

pandas DataFrames のリレーションシップを検索するには、find_relationships モジュールのsempy.relationship関数を使用します。

find_relationships モジュールのsempy.relationships関数を使用すると、データ サイエンティストやビジネス アナリストは pandas DataFrames の一覧で潜在的なリレーションシップを見つけることができます。 この関数は、テーブルと列の間の接続を特定するのに役立ちます。そのため、データとその要素の関係の詳細を確認できます。

pandas DataFrames でリレーションシップを見つける方法を次に示します。

from sempy.relationships import find_relationships

tables = [df_sales, df_products, df_customers]

find_relationships(tables)

上記のコードは、find_relationshipsdf_salesdf_productsの 3 つの pandas DataFrames のリストを使用してdf_customers関数を呼び出します。 この関数は、潜在的なリレーションシップごとに 1 行の pandas DataFrame を返します。そのため、データ内のリレーションシップを探索および分析できます。

カバレッジのしきい値、名前の類似性のしきい値、除外するリレーションシップの一覧、および多対多リレーションシップを含めるかどうかを設定して、関数をカスタマイズします。

pandas DataFrame 内のリレーションシップを検証する

find_relationships関数を使用して pandas DataFrames で潜在的なリレーションシップを見つけたら、list_relationship_violations関数を使用してこれらのリレーションシップを検証し、問題や不整合を特定します。

list_relationship_violations関数は、テーブルが検出されたリレーションシップと一致していることを確認します。 この関数を使用して、指定されたリレーションシップの多重度の不整合を見つけ、データ分析または機械学習モデルに影響を与える前に問題を修正できます。

pandas DataFrames でリレーションシップ違反を見つける方法を示す例を次に示します。

from sempy.relationships import find_relationships, list_relationship_violations

tables = [df_sales, df_products, df_customers]
relationships = find_relationships(tables)

list_relationship_violations(tables, relationships)

この例では、3 つの pandas DataFrame、list_relationship_violationsdf_salesdf_productsと、df_customers 関数からのリレーションシップ DataFrame を用いて、find_relationships 関数を呼び出します。 list_relationship_violations関数は、リレーションシップ違反ごとに 1 行の pandas DataFrame を返します。これにより、データ内の問題をすばやく見つけて修正できます。

カバレッジのしきい値を設定し、不足しているキーを処理する方法を選択し、レポートする不足しているキーの数を定義して、関数をカスタマイズします。

pandas DataFrames で list_relationship_violations 関数を使用して、データの一貫性と精度を維持します。 これにより、信頼性の高い機械学習モデルを構築し、データからより深い分析情報を得ることができます。