探索及驗證語意模型和數據框架中的關聯性
在本文中,您將瞭解如何使用 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 包含必要的元數據,以了解語意模型中的關聯性。 標註的數據框架可讓您輕鬆地分析語意模型的結構,並將其用於機器學習模型或其他數據分析工作。
若要使用 函 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語意模型中 Sales、Products 和 Customers 數據表的字典來呼叫 list_relationship_violations
函式。 您可以藉由設定涵蓋範圍閾值、指定要處理遺漏索引鍵的方式,以及定義要報告的遺漏索引鍵數目,來自定義函式。
函式會針對每個關聯性違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決語意模型中的任何問題。
藉由使用 函 list_relationship_violations
式,您可以確保語意模型一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。
尋找 pandas DataFrame 中的關聯性
list_relationships
雖然 Fabric 模組中的 、 plot_relationships_df
和 list_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_sales
、 df_products
和 df_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_sales
函 list_relationship_violations
式會針對每個關聯違規傳回一個數據列的 pandas DataFrame,讓您輕鬆地識別並解決數據中的任何問題。
您可以藉由設定涵蓋範圍閾值、指定要處理遺漏索引鍵的方式,以及定義要報告的遺漏索引鍵數目,來自定義函式。
透過搭配 pandas DataFrames 使用 函 list_relationship_violations
式,您可以確保數據一致且準確,讓您能夠建置更可靠的機器學習模型,並深入瞭解您的數據。