Share via


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

適用於:NoSQL MongoDB Gremlin

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

透過 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 Link for Gremlin API 目前是預覽版。 您可以使用 Azure CLI,在新的或現有圖表中啟用 Synapse Link。 如需如何設定此功能的詳細資訊,請按一下這裡

必要條件

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

建立資料庫和檢視

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

Add a SQL script to the Synapse Analytics workspace

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

Enable the SQL script to use the serverless SQL endpoint in the workspace

我們不建議在主要預設資料庫中建立檢視,且不支援此功能。 建立名為 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]

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

Query results after joining the StoreDemographics and RetailSales views

使用 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 檢視拖放到圖例,以選取特定產品線。 選擇這些選項之後,您應該會看到類似下列螢幕擷取畫面的圖表:

Report that compares the relative importance of household size to the average revenue per store

下一步

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

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

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