DAX/PowerBI系列 - 查詢參數用法詳解(Query Parameter)


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服務。

  1. 打開Power BI桌面
  2. 單擊獲取數據
  3. 從“其他”中選擇“空白查詢”,然后單擊“連接”
  4. 選擇管理參數
  5. 【新建】> 輸入參數名字【服務器名字】,選擇類型為【文字】,可選值選擇【列表】,並且填入【默認值】
  6. 再建一個【數據庫名】的參數

     

  7. 拿數據,新建一個數據源,選擇數據庫[SQL Server Database]

     

  8. 選擇一些表
  9. 建一個簡單的報表
  10. 當需要從不同的數據源拿數據的時候,在菜單欄點【編輯參數】
  11. 選擇所需要的參數和值
  12. 刷新

     

 

 

用例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
  1. 把上面的DimCustomer表刪掉,同樣建一個參數
  2. 新建一個數據源,查詢》高級選項》把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:參數化過濾行

  1. 新建一個參數【國家】,默認值為【United States】

 

2. 選擇所需要過濾的表【DimSalesTerritory】,並選擇列【SalesTerritoryCountry】

3. 選擇文字篩選

 

 

4. 選擇參數

 

 

5. 結果:可以看到只有【United States】的行

 

 

6. 這樣,根據參數值,可以隨時調整所需要的國家

 

 

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM