共用方式為


探索及驗證Power BI語意模型中的關聯性

在本文中,您將瞭解如何使用 SemPy 模組探索和驗證 Power BI 語意模型和 pandas DataFrames 內的關聯性。

在數據科學和機器學習中,請務必了解數據內的結構和關聯性。 雖然 Power BI 是一項功能強大的工具,可讓您建立數據模型並可視化,但您有時需要深入探討語意模型的結構,以取得更多見解或建置機器學習模型。 數據科學家和商務分析師可以使用 SemPy 連結庫中的各種函式,探索 Power BI 語意模型或 pandas DataFrame 內的關聯性。

您將了解:

  • 在 Power BI 語意模型中尋找、可視化及探索關聯性
  • 尋找及驗證 pandas DataFrame 中的關聯性

必要條件

  • 移至 Microsoft Fabric 中的 資料科學 體驗。
  • 建立 新的筆記本 ,以將程式代碼複製/貼到儲存格中。
  • 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要安裝它。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令: python %pip install -U semantic-link  
  • 將 Lakehouse 新增至您的筆記本。 針對 Spark 3.4 和更新版本,使用 Fabric 時,預設運行時間提供語意連結,而且不需要加以安裝。 如果您使用 Spark 3.3 或更新版本,或想要更新為最新版本的 Semantic Link,您可以執行 命令:

python %pip install -U semantic-link  

尋找語意模型中的關聯性

list_relationships 式可讓您擷取 Power BI 語意模型內找到的所有關聯性清單,以便進一步瞭解數據的結構,以及不同數據表和數據行的連線方式。

函式的運作方式是利用語意連結,其提供批注式 DataFrame,其中包含必要的元數據,以了解語意模型中的關聯性。 這可讓您輕鬆地分析語意模型的結構,並將其用於機器學習模型或其他數據分析工作。

若要使用 函式 list_relationships ,您必須先匯入 sempy.fabric 模組。 然後,您可以使用 Power BI 語意模型的名稱或 UUID 呼叫函式,如下列程式代碼所示:

import sempy.fabric as fabric

fabric.list_relationships("my_dataset")

先前的程式代碼顯示函list_relationships式是以稱為 my_dataset的 Power BI 語意模型來呼叫。 函式會傳回每個關聯性一個數據列的 pandas DataFrame,讓您輕鬆地探索及分析語意模型中的關聯性。

提示

您的筆記本、語意模型(Power BI 數據集)和 Lakehouse 可以位於相同的工作區或不同的工作區中。 根據預設,SemPy 會嘗試從中存取您的語意模型:

  • 如果您已將 Lakehouse 附加至筆記本,則為 Lakehouse 的工作區。
  • 筆記本的工作區,如果沒有連結的 Lakehouse。

如果您的語意模型不在 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)

在先前的程式代碼中,會list_relationship_violations使用包含來自my_dataset語意模型的 SalesProductsCustomers 數據表的字典來呼叫 函式。 函式會針對每個關聯性違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決語意模型中的任何問題。

您可以藉由指定如何處理遺漏索引鍵、設定涵蓋範圍閾值,以及定義要報告的遺漏索引鍵數目,來自定義函式。

藉由使用 函 list_relationship_violations 式,您可以確保語意模型一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。

尋找 pandas DataFrame 中的關聯性

list_relationships雖然 Fabric 模組中的 、 plot_relationships_dflist_relationship_violations 函式是探索語意模型中關聯性的強大工具,但您可能也需要探索以 pandas DataFrame 形式從其他數據源引進的關聯性。

這是模組中的sempy.relationship函式作用所在find_relationships

find_relationships 式可協助數據科學家和商務分析師探索 Pandas DataFrame 清單內的潛在關聯性。

藉由使用此函式,您可以識別數據表和數據行之間的可能連線,讓您進一步了解數據的結構,以及不同元素的關聯方式。

下列程式代碼示範如何在 pandas DataFrame 中尋找關聯性:

from sempy.relationships import find_relationships

tables = [df_sales, df_products, df_customers]

find_relationships(tables)

在上述程式代碼中,會 find_relationships 使用三個 Pandas DataFrame 的清單來呼叫 函式: df_salesdf_productsdf_customers。 此函式會針對每個潛在關聯性傳回一個數據列的 pandas DataFrame,讓您輕鬆地探索及分析數據中的關聯性。

您可以指定涵蓋範圍臨界值、名稱相似度閾值、要排除的關聯性清單,以及是否包含多對多關聯性,來自定義函式。

驗證 pandas DataFrame 中的關聯性

在 Pandas DataFrames 內探索到潛在關聯性之後,使用函 find_relationships 式,驗證這些關聯性並找出任何潛在問題或不一致至關重要。 這是模組中的sempy.relationships函式作用所在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)

在上一個程式代碼中,會list_relationship_violations使用三個 pandas DataFrame 的清單來呼叫 函式,df_productsdf_customersdf_sales以及從 函式取得的find_relationships關聯性 DataFrame。 函 list_relationship_violations 式會針對每個關聯違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決數據中的任何問題。

您可以藉由指定如何處理遺漏索引鍵、設定涵蓋範圍閾值,以及定義要報告的遺漏索引鍵數目,來自定義函式。

透過搭配 pandas DataFrames 使用 函 list_relationship_violations 式,您可以確保數據一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。