共用方式為


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

本文說明如何使用 SemPy 語意連結函式來探索和驗證 Power BI 語意模型和 pandas DataFrame 中的關聯性。

在資料科學和機器學習中,了解資料中的結構和關係非常重要。 Power BI 可讓您建立模型並視覺化這些結構和關聯性。 若要取得更多深入解析或建置機器學習模型,請在 SemPy 程式庫模組中使用語意連結函式。

資料科學家和商務分析師會使用 SemPy 函式來列出、視覺化和驗證 Power BI 語意模型中的關聯性,或尋找和驗證 pandas DataFrames 中的關聯性。

必要條件

  • 建立 新的筆記本 ,將程式碼複製並貼到儲存格中。

  • 針對 Spark 3.4 和更新版本,當您使用 Fabric 時,語意連結會在預設執行階段中使用,因此您不需要安裝它。 若是 Spark 3.3 或更舊版本,或更新至最新版本的語意連結,請執行下列命令:

    %pip install -U semantic-link
    
  • 將 Lakehouse 新增至筆記本

列出語意模型中的關聯性

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")

上述程式碼會使用名為 list_relationships 的 Power BI 語意模型呼叫函式。 此函式會傳回 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 模組,並從語意模型讀取資料表。 然後,使用字典呼叫函式,將資料表名稱對應至具有資料表內容的 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_relationshipsFabric 模組中的 、 plot_relationships_dflist_relationship_violations函數是探索語意模型中關係的強大工具。 有時,您需要在其他資料來源中尋找關係,例如 pandas DataFrames。

使用模組中的find_relationships函數sempy.relationship來尋找 pandas DataFrames 中的關係。

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 中的關聯性

使用函數 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:df_salesdf_productsdf_customers,連同來自 find_relationships 函式的關係 DataFrame,呼叫 list_relationship_violations 函式。 此 list_relationship_violations 函式會傳回一個 pandas DataFrame,每個關係異常都有一列,因此您可以快速尋找並修正資料中的任何問題。

透過設定涵蓋範圍閾值、選擇如何處理遺失的金鑰以及定義要報告的遺失金鑰數量來自訂函數。

將函數 list_relationship_violations 與 pandas DataFrames 搭配使用,以保持資料的一致性和準確性。 這可協助您建立可靠的機器學習模型,並從資料中獲得更深入的見解。