探索和驗證語意模型和 DataFrame 中的關聯性
在本文中,您將了解如何使用 SemPy 語意連結功能,來探索和驗證 Power BI 語意模型和 Pandas DataFrame 中的關聯性。
在資料科學和機器學習中,請務必了解資料內的結構和關聯性。 Power BI 是功能強大的工具,可讓您建立模型並視覺化這些結構和關聯性。 若要取得更多深入解析或建置機器學習模型,您可以使用 SemPy 程式庫模組中的語意連結函數來深入探討。
資料科學家和商務分析師可使用 SemPy 函數來列出、視覺化和驗證 Power BI 語意模型中的關聯性,或在 pandas DataFrame 中尋找並驗證關聯性。
必要條件
取得 Microsoft Fabric 訂用帳戶。 或註冊免費的 Microsoft Fabric 試用版。
登入 Microsoft Fabric。
使用首頁左側的體驗切換器,切換至 Synapse 資料科學體驗。
建立新筆記本,以將程式碼複製/貼到儲存格中。
若是 Spark 3.4 和更高版本,使用 Fabric 時,預設執行階段可使用語意連結,而且不需要安裝。 若是 Spark 3.3 或更舊版本,或更新至最新版本的語意連結,請執行下列命令:
%pip install -U semantic-link
列出語意模型中的關聯性
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_relationships
、plot_relationships_df
和 list_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_sales
、df_products
和 df_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_violations
、df_sales
和 df_customers
,以及 find_relationships
函數中的 DataFrame 關聯性來呼叫 df_products
函數。
list_relationship_violations
函數會以每個關聯性違規一個資料列傳回 Pandas DataFrame,讓您輕鬆地識別和解決資料中的任何問題。
您可以設定涵蓋範圍閾值、指定要處理遺漏索引鍵的方式,以及定義要報告的遺漏索引鍵數目,藉此來自訂函數。
藉由搭配 Pandas DataFrames 使用 list_relationship_violations
函數,您可確保資料一致且準確,從而讓您能夠建置更可靠的機器學習模型,並更深入地解析您的資料。