很多人都不知道查詢參數用來幹啥,下麵總結一下日常項目中常用的幾個查詢參數的地方。(本人不太歡hardcode的東西) ...
PowerBI - 查詢參數用法詳解(Query Parameter)
很多人都不知道查詢參數用來幹啥,下麵總結一下日常項目中常用的幾個查詢參數的地方。(本人不太歡hardcode的東西)
使用查詢參數,我們現在可以在Power BI Desktop中創建參數,併在各種情況下使用它們。 例如,我們現在可以定義引用參數的查詢以檢索不同的數據集。 或者我們可以通過Filter Rows引用參數。
本質上來說,是替換字元串 – 所配置參數,對M 查詢語句(字元串)進行替換,達到方便和靈活管理這些變數的目的。
一般來說我們可以在以下情況參考使用。
- 數據源(Data Source)
- 過濾行(Filter Rows)
- 保留行( Keep Rows)
- 刪除行(Remove Rows)
- 替換行(Replace Rows)
- 度量值(Measures)
- 計算列(Calculated Columns)
- 計算表(Calculated Tables)
下麵舉兩個場景慄子:
- 場景一:參數化數據源
- 場景二:參數化過濾行
下麵例子中是去鏈接資料庫的,其實知道了上面說到的本質,就可以靈活運用到其他的數據源。
場景一:參數化數據源(兩個例子)
用例1: 參數化數據源 – 參數化伺服器和資料庫名字
假設您有不同的客戶使用相同的資料庫架構(模式))。 但是,托管在不同SQL Server實例中的資料庫以及資料庫名稱是不同的。 使用查詢參數,我們可以輕鬆地在不同的數據源之間切換,然後將報告發佈到每個客戶的Power BI服務。
- 打開Power BI桌面
- 單擊獲取數據
- 從“其他”中選擇“空白查詢”,然後單擊“連接”
- 選擇管理參數
- 【新建】> 輸入參數名字【伺服器名字】,選擇類型為【文字】,可選值選擇【列表】,並且填入【預設值】
- 再建一個【資料庫名】的參數
- 拿數據,新建一個數據源,選擇資料庫[SQL Server Database]
- 選擇一些表
- 建一個簡單的報表
- 當需要從不同的數據源拿數據的時候,在菜單欄點【編輯參數】
- 選擇所需要的參數和值
- 刷新
用例2:動態從數據獲取數據
這裡目標是參數化去拿數據的實際被執行的SQL,從而達到執行“同一個”查詢(Query)但是拿到不同數據的目的。
雖然不是完全動態,但是有些時候需要根據業務拿一些不同的組合。
譬如,有時候需要用戶名顯示下麵的值:
We should cover the combinations below for “Customer Name” column:
- Customer Name = DimCustomer的LastName
- Customer Name = DimCustomer的FirstName + LastName
- Customer Name = DimCustomer的LastName + FirstName
- · Customer Name = DimCustomer的FirstName + MiddleName + LastName
- 把上面的DimCustomer表刪掉,同樣建一個參數
- 新建一個數據源,查詢》高級選項》把SQL填上去,然後點OK
SELECT customerkey,
geographykey,
customeralternatekey,
title,
–firstname,
–middlename,
lastname,
namestyle,
birthdate,
emailaddress,
commutedistance
FROM DIMCUSTOMER
3. 撈到數據之後,選擇這個數據查詢,再點擊【高級】,並把 lastName 替換成 “&CustomerName&” as CustomerName 這樣M就會把所選參數的值替換掉,並執行真正被替換完的SQL
4. 執行撈數據的結果
5. 在報表顯擺顯擺
6. 可以選這不同的組合來撈不一樣的數據
7. 顯示結果
註意:本質上是撈回來的數據schema是不變的(還是CustomerName),因為雖然顯示不一樣的值,但是不影響前端被引用到的欄位(CustomerName)。
場景2:參數化過濾行
- 新建一個參數【國家】,預設值為【United States】
2. 選擇所需要過濾的表【DimSalesTerritory】,並選擇列【SalesTerritoryCountry】
3. 選擇文字篩選
4. 選擇參數
5. 結果:可以看到只有【United States】的行
6. 這樣,根據參數值,可以隨時調整所需要的國家
結果: