次の方法で共有


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

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

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

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

前提条件

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

  • 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_datasetSalesProductsCustomers テーブルを含むディクショナリを使用して list_relationship_violations 関数を呼び出します。 カバレッジしきい値を設定したり、不足しているキーの処理方法を指定したり、報告する不足キーの数を定義したりすることで、関数をカスタマイズできます。

この関数からは、リレーションシップ違反ごとに 1 行の pandas DataFrame が返されます。それによって、セマンティック モデル内の問題を簡単に特定して対処できます。 list_relationship_violations 関数を使用すると、セマンティック モデルの整合性と正確性を確認できるため、より信頼性の高い機械学習モデルを構築し、データについてより詳細な分析情報を得ることができます。

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

Fabric モジュールの関数 list_relationshipsplot_relationships_dflist_relationship_violations は、セマンティック モデル内のリレーションシップを調査するための強力なツールですが、pandas DataFrame としてインポートされた他のデータ ソース内のリレーションシップを検出することが必要な場合もあります。

ここで役立つのが sempy.relationship モジュールの find_relationships 関数です。

find_relationships モジュールの sempy.relationships 関数は、データ科学者やビジネス アナリストが pandas DataFrame のリスト内の潜在的なリレーションシップを検出するのに役立ちます。 この関数を使用すると、テーブルと列の間で可能な接続を識別できるため、データの構造と、さまざまな要素がどのように関連しているかを理解しやすくなります。

次のコード例は、pandas DataFrame 内のリレーションシップを検出する方法を示しています。

from sempy.relationships import find_relationships

tables = [df_sales, df_products, df_customers]

find_relationships(tables)

上記のコードは、df_salesdf_productsdf_customers という 3 つの Pandas DataFrame の一覧を使用して find_relationships 関数を呼び出します。 この関数からは、潜在的なリレーションシップごとに 1 行の pandas DataFrame が返されます。それによって、データ内のリレーションシップを簡単に調査して分析できます。

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

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

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

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

次のコード例は、pandas DataFrame 内のリレーションシップ違反を見つける方法を示しています。

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)

上記のコードは、df_salesdf_productsdf_customers という 3 つの pandas DataFrame の一覧と、find_relationships 関数からのリレーションシップ DataFrame を使用して list_relationship_violations 関数を呼び出します。 list_relationship_violations 関数からは、リレーションシップ違反ごとに 1 行の pandas DataFrame が返されます。それによって、データ内の問題を簡単に特定して対処できます。

カバレッジしきい値を設定したり、不足しているキーの処理方法を指定したり、報告する不足キーの数を定義したりすることで、関数をカスタマイズできます。

pandas DataFrame で list_relationship_violations 関数を使用すると、データの整合性と正確性を確認できるため、信頼性の高い機械学習モデルを構築し、データについて、より詳細な分析情報を得ることができます。