共用方式為


探索及驗證語意模型和數據框架中的關聯性

在本文中,您將瞭解如何使用 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
    
  • 將 Lakehouse 新增至您的筆記本

列出語意模型中的關聯性

模組中的sempy.fabriclist_relationships式會傳回Power BI語意模型中找到的所有關聯性清單。 此列表可協助您了解數據的結構,以及不同數據表和數據行的連線方式。

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

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

import sempy.fabric as fabric

fabric.list_relationships("my_dataset")

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

注意

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

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

如果您的語意模型不在上述任一工作區中,則必須在呼叫 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 然後從語意模型讀取數據表。 然後,您可以使用將數據表名稱對應至具有數據表內容之 DataFrames 的字典來呼叫 函式。

下列範例程式代碼示範如何列出關聯性違規:

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語意模型中 SalesProductsCustomers 數據表的字典來呼叫 list_relationship_violations 函式。 您可以藉由設定涵蓋範圍閾值、指定要處理遺漏索引鍵的方式,以及定義要報告的遺漏索引鍵數目,來自定義函式。

函式會針對每個關聯性違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決語意模型中的任何問題。 藉由使用 函 list_relationship_violations 式,您可以確保語意模型一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。

尋找 pandas DataFrame 中的關聯性

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

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

模組 find_relationships 中的 sempy.relationships 函式可協助數據科學家和商務分析師探索 pandas DataFrame 清單內的潛在關聯性。 藉由使用此函式,您可以識別數據表和數據行之間的可能連線,讓您進一步了解數據的結構,以及不同元素的關聯方式。

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

from sempy.relationships import find_relationships

tables = [df_sales, df_products, df_customers]

find_relationships(tables)

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

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

驗證 pandas DataFrame 中的關聯性

使用 函式探索 pandas DataFrame 中 find_relationships 的潛在關聯性之後,您可以使用 函 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)

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

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

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