使用Power BI Desktop基于Analysis Services表格模型創(chuàng)建報(bào)表(上)
使用 Power BI Desktop 從數(shù)據(jù)獲得見(jiàn)解,然后進(jìn)行相關(guān)操作利用可視化分析免費(fèi)創(chuàng)建內(nèi)容豐富的交互式報(bào)表,一切盡在指尖。
本教程將通過(guò)使用示例數(shù)據(jù)集完成以下步驟來(lái)演示如何在 Analysis Services 表格模型中實(shí)現(xiàn)行級(jí)別安全性以及如何在 Power BI 報(bào)表中使用它。
- 在 AdventureworksDW2012 數(shù)據(jù)庫(kù)中創(chuàng)建新的安全表
- 生成含有所需事實(shí)數(shù)據(jù)表和維度表的表格模型
- 定義用戶角色和權(quán)限
- 將模型部署到 Analysis Services 表格實(shí)例
- 生成 Power BI Desktop 報(bào)表,為訪問(wèn)報(bào)表的用戶顯示量身定制的數(shù)據(jù)
- 將報(bào)表部署到 Power BI 服務(wù)
- 基于報(bào)表創(chuàng)建新的儀表板
- 與您的同事共享儀表板
注意:本教程要求使用AdventureworksDW2012 數(shù)據(jù)庫(kù)
創(chuàng)建用戶安全表并定義數(shù)據(jù)關(guān)系
可以找到許多介紹如何使用 SQL Server Analysis Services (SSAS) 表格 模型定義行級(jí)別動(dòng)態(tài)安全性的文章。
在 AdventureworksDW2012 中,創(chuàng)建 DimUserSecurity 表,如下所示??梢允褂?SQL Server Management Studio (SSMS) 來(lái)創(chuàng)建表。
創(chuàng)建并保存表后,需要在 DimUserSecurity 表的 SalesTerritoryID 列與 DimSalesTerritory 表的 SalesTerritoryKey 列之間建立關(guān)系,如下所示。
在 SSMS 中,右鍵單擊 DimUserSecurity ,然后選擇“設(shè)計(jì)” 。然后,選擇“表設(shè)計(jì)器” > “關(guān)系...” 。完成后,保存表。
將用戶添加到表。 右鍵單擊 DimUserSecurity ,然后選擇“編輯前 200 行” 。添加了用戶后,DimUserSecurity 表應(yīng)類似于以下示例(你在即將開(kāi)始的任務(wù)中將看到這些用戶):
接下來(lái),使用 DimSalesTerritory 表執(zhí)行內(nèi)部聯(lián)接 ,該表顯示與用戶關(guān)聯(lián)的區(qū)域詳細(xì)信息。此處的 SQL 代碼執(zhí)行內(nèi)部聯(lián)接,下圖顯示表隨后的顯示形式。
select b.SalesTerritoryCountry, b.SalesTerritoryRegion, a.EmployeeID, a.FirstName, a.LastName, a.UserName from [dbo].[DimUserSecurity] as a join [dbo].[DimSalesTerritory] as b on a.[SalesTerritoryID] = b.[SalesTerritoryKey]由于在步驟2中創(chuàng)建的關(guān)系,聯(lián)接的表顯示負(fù)責(zé)各個(gè)銷售區(qū)域的人員。例如,可以看到Rita Santos負(fù)責(zé)Australia 。
創(chuàng)建含事實(shí)數(shù)據(jù)表和維度表的表格模型
準(zhǔn)備好關(guān)系數(shù)據(jù)倉(cāng)庫(kù)后,需要定義表格模型??梢允褂?SQL Server Data Tools (SSDT) 創(chuàng)建模型。
如下所示,將所有必需表導(dǎo)入模型。
在導(dǎo)入必需的表之后,需要定義一個(gè)名為 SalesTerritoryUsers 的具有讀取權(quán)限的角色。在SQL Server Data Tools中選擇“模型”菜單,然后選擇“角色” 。在“角色管理器” 中,選擇“新建” 。
在“角色管理器” 中的“成員” 下,添加通過(guò)任務(wù) 1 在 DimUserSecurity 表中定義的用戶。
接下來(lái),為 DimSalesTerritory 和 DimUserSecurity 表添加適當(dāng)?shù)暮瘮?shù),如下面的“行篩選器” 選項(xiàng)卡下所示。
LOOKUPVALUE 函數(shù)返回某個(gè)列的值,該列中的 Windows 用戶名與 USERNAME 函數(shù)返回的用戶名匹配。 然后,可以將查詢限定為 LOOKUPVALUE 返回的值與同一表或相關(guān)表中的值相匹配的情況。 在 DAX 篩選器列中,鍵入以下公式︰
=DimSalesTerritory[SalesTerritoryKey]=LOOKUPVALUE(DimUserSecurity[SalesTerritoryID], DimUserSecurity[UserName], USERNAME(), DimUserSecurity[SalesTerritoryID], DimSalesTerritory[SalesTerritoryKey])在此公式中,LOOKUPVALUE 函數(shù)會(huì)返回 DimUserSecurity[SalesTerritoryID] 列的所有值,其中 DimUserSecurity[UserName] 與當(dāng)前登錄的 Windows 用戶名相同,DimUserSecurity[SalesTerritoryID] 與 DimSalesTerritory[SalesTerritoryKey]相同。
注意:在使用行級(jí)別安全性時(shí),不支持使用 DAX 函數(shù) USERELATIONSHIP。
LOOKUPVALUE 返回的 Sales SalesTerritoryKey 集隨后用于限制 DimSalesTerritory 中顯示的行。 僅顯示 SalesTerritoryKey 值位于 LOOKUPVALUE 函數(shù)返回的 ID 中的行。
對(duì)于 DimUserSecurity 表,在“DAX 篩選器” 列中,添加以下公式:
=FALSE()此公式指定所有列都解析為 false;這意味著無(wú)法查詢 DimUserSecurity 表列。最會(huì)需要處理并部署模型。
在本地?cái)?shù)據(jù)網(wǎng)關(guān)中添加數(shù)據(jù)源
表格模型部署完畢并可供使用后,需要向本地 Analysis Services 表格服務(wù)器添加數(shù)據(jù)源連接。若要允許 Power BI 服務(wù)訪問(wèn)本地分析服務(wù),需要在環(huán)境中安裝并配置本地?cái)?shù)據(jù)網(wǎng)關(guān)。
正確配置本地?cái)?shù)據(jù)網(wǎng)關(guān)后,需要為 Analysis Services 表格實(shí)例創(chuàng)建一個(gè)數(shù)據(jù)源連接。
此過(guò)程完成后,網(wǎng)關(guān)便已配置完成,并且可與本地 Analysis Services 數(shù)據(jù)源進(jìn)行交互。
由于內(nèi)容過(guò)多,本次內(nèi)容分為上下篇發(fā)布。點(diǎn)擊查看下篇>>
Power BI Desktop 2020年2月版發(fā)布,新增多種可視化圖表,可點(diǎn)擊此處查看
想要購(gòu)買Power BI Desktop正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊【咨詢?cè)诰€客服】
關(guān)注慧聚IT微信公眾號(hào) ???,了解產(chǎn)品的最新動(dòng)態(tài)及最新資訊。