共用方式為


探索和驗證語意模型和 DataFrame 中的關聯性

在本文中,您將了解如何使用 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.fabric 模組中的 list_relationships 函數會傳回 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 函數。 函數會以每個關聯性一個資料列傳回 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 語意模型中銷售產品客戶資料表的字典來呼叫 list_relationship_violations 函數。 您可以設定涵蓋範圍閾值、指定要處理遺漏索引鍵的方式,以及定義要報告的遺漏索引鍵數目,藉此來自訂函數。

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

尋找 Pandas DataFrame 中的關聯性

雖然 Fabric 模組中的 list_relationshipsplot_relationships_dflist_relationship_violations 函數是探索語意模型中關聯性的強大工具,但您可能也需要探索做為 Pandas DataFrame 匯入的其他資料來源內的關聯性。

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

sempy.relationships 模組中的 find_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 中的關聯性

使用 find_relationships 函數探索 Pandas DataFrame 中的潛在關聯性之後,您可以使用 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 清單,即 list_relationship_violationsdf_salesdf_customers,以及 find_relationships 函數中的 DataFrame 關聯性來呼叫 df_products 函數。 list_relationship_violations 函數會以每個關聯性違規一個資料列傳回 Pandas DataFrame,讓您輕鬆地識別和解決資料中的任何問題。

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

藉由搭配 Pandas DataFrames 使用 list_relationship_violations 函數,您可確保資料一致且準確,從而讓您能夠建置更可靠的機器學習模型,並更深入地解析您的資料。