共用方式為


運用 Synapse Link,使用 Power BI 和無伺服器 Synapse SQL 集區來分析 Azure Cosmos DB 資料

適用於:NoSQL MongoDB Gremlin

在本文中,您將了解如何建置無伺服器 SQL 集區資料庫,以及透過適用於 Azure Cosmos DB 的 Synapse Link 的檢視。 您將查詢 Azure Cosmos DB 的容器,然後透過這些檢視使用 Power BI 來建置模型,以反映該查詢。

重要

在 Microsoft Fabric 中鏡像處理 Azure Cosmos DB 現在已可供 NoSql API 預覽版使用。 這項功能提供 Azure Synapse Link 的所有功能,具有更佳的分析效能、能夠將資料資產與 Fabric OneLake 整合,並以 Delta Parquet 格式開啟存取您的資料。 如果您考慮使用 Azure Synapse Link,建議您嘗試鏡像以評估您組織的整體適合度。 開始使用 Microsoft Fabric 中的鏡像

透過 Azure Synapse Link,您可以在 Power BI 中建置近乎即時的儀表板,以分析 Azure Cosmos DB 資料。 這對您的交易式工作負載不會造成效能或成本上的影響,也不會增加管理 ETL 管線的複雜度。 您可以使用 DirectQuery匯入模式。

注意

您可以使用 Azure Cosmos DB 入口網站,只要按幾下即可建置 Power BI 儀表板。 如需詳細資訊,請參閱啟用 Synapse Link 帳戶的 Azure Cosmos DB 入口網站中的整合式 Power BI 體驗。 這會在 Azure Cosmos DB 容器上的 Synapse 無伺服器 SQL 集區中,自動建立 T-SQL 檢視。 您只要下載連線到這些 T-SQL 檢視的 .pbids 檔案,即可開始建置 BI 儀表板。

在此案例中,您將使用合作夥伴零售商店中有關 Surface 產品銷售的虛擬資料。 您將根據與大型家庭的鄰近程度,以及對特定週廣告的影響,分析每個商店的營收。 在本文中,您會建立兩個名為 RetailSalesStoreDemographics 的檢視,以及兩者之間的查詢。 您可以從此 GitHub 存放庫取得範例產品資料。

必要條件

開始之前,請務必先建立下列資源:

建立資料庫和檢視

從 Synapse 工作區,移至 [開發] 索引標籤,選取 + 圖示,然後選取 [SQL 指令碼]

將 SQL 指令碼新增至 Synapse Analytics 工作區

每個工作區都隨附無伺服器 SQL 端點。 建立 SQL 指令碼之後,從頂端的工具列連接至 [內建]

啟用 SQL 指令碼以在工作區中使用無伺服器 SQL 端點

我們不建議在主要預設資料庫中建立檢視,且不支援此功能。 建立名為 RetailCosmosDB 的新資料庫,以及透過已啟用 Synapse Link 的容器建立 SQL 檢視。 下列命令顯示如何建立資料庫:

-- Create database
Create database RetailCosmosDB

接下來,在已啟用 Synapse Link 的不同 Azure Cosmos DB 容器之間建立多個檢視。 檢視將讓您使用 T-SQL 來聯結和查詢位於不同容器中 Azure Cosmos DB 的資料。 建立檢視時,請務必選取 RetailCosmosDB 資料庫。

下列指令碼示範如何在每個容器上建立檢視。 為了簡單起見,讓我們透過 Synapse Link 啟用的容器,使用無伺服器 SQL 集區的自動結構描述推斷功能:

RetailSales 檢視:

-- Create view for RetailSales container
CREATE VIEW  RetailSales
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>',RetailSales)
AS q1

務必在先前的 SQL 指令碼中插入您的 Azure Cosmos DB 區域和主要金鑰。 區域名稱中的所有字元都應為小寫且不含空格。 與 OPENROWSET 命令的其他參數不同的是,指定容器名稱參數時不需要用引號括住。

StoreDemographics 檢視:

-- Create view for StoreDemographics container
CREATE VIEW StoreDemographics
AS  
SELECT  *
FROM OPENROWSET (
    'CosmosDB', N'account=<Your Azure Cosmos DB account name>;database=<Your Azure Cosmos DB database name>;region=<Your Azure Cosmos DB Region>;key=<Your Azure Cosmos DB key here>', StoreDemographics)
AS q1

現在,選取 [執行] 命令以執行 SQL 指令碼。

查詢檢視

現在已建立兩個檢視,讓我們定義要聯結這兩個檢視的查詢,如下所示:

SELECT 
sum(p.[revenue]) as revenue
,p.[advertising]
,p.[storeId]
,p.[weekStarting]
,q.[largeHH]
 FROM [dbo].[RetailSales] as p
INNER JOIN [dbo].[StoreDemographics] as q ON q.[storeId] = p.[storeId]
GROUP BY p.[advertising], p.[storeId], p.[weekStarting], q.[largeHH]

選取 [執行],其提供下表作為結果:

聯結 StoreDemographics 和 RetailSales 檢視之後的查詢結果

使用 Power BI 透過容器建立模型檢視

接著,使用下列步驟開啟 Power BI Desktop,並連接到無伺服器 SQL 端點:

  1. 開啟 Power BI Desktop 應用程式。 選取 [取得資料],然後選取 [其他]

  2. 從連線選項清單中選擇 Azure Synapse Analytics (SQL DW)

  3. 輸入資料庫所在 SQL 端點的名稱。 在 [伺服器] 欄位內輸入 SynapseLinkBI-ondemand.sql.azuresynapse.net。 在此範例中,SynapseLinkBI 是工作區的名稱。 如果您的工作區指定了不同的名稱,請將其取代。 針對資料連線能力選取 [直接查詢],然後選取 [確定]

  4. 選取慣用的驗證方法,例如 Microsoft Entra ID。

  5. 選取 RetailCosmosDB 資料庫和 RetailSalesStoreDemographics 檢視。

  6. 選取 [載入],將兩個檢視載入至直接查詢模式。

  7. 選取 [模型],以透過 storeId 資料行建立兩個檢視之間的關聯性。

  8. StoreId 資料行從 RetailSales 檢視拖曳至 StoreDemographics 檢視中的 StoreId 資料行。

  9. 選取 [多對一 (*:1)] 關聯性,因為 RetailSales 檢視中有多個資料列具有相同的商店識別碼。 StoreDemographics 只有一個商店識別碼資料列 (它是維度資料表)。

現在瀏覽至 [報表] 視窗並建立報表,以根據 revenue 和 LargeHH 索引的散佈表示,將家庭規模與每個商店的平均營收的相對重要性比較:

  1. 選取 [散佈圖]

  2. LargeHHStoreDemographics 檢視拖放至 X 軸。

  3. RevenueRetailSales 檢視拖放到 Y 軸。 選取 Average,以取得每個商店和每週的每一產品平均銷售額。

  4. productCodeRetailSales 檢視拖放到圖例,以選取特定產品線。 選擇這些選項之後,您應該會看到類似下列螢幕擷取畫面的圖表:

比較家庭大小與每家商店平均收入相對重要性的報告

下一步

啟用 Synapse Link 帳戶的 Azure Cosmos DB 入口網站中的整合式 Power BI 體驗

利用 Azure Synapse Link 以使用 T-SQL 來查詢 Azure Cosmos DB 資料

使用無伺服器 SQL 集區來分析 Azure 開放資料集,並在 Azure Synapse Studio 中將結果視覺化