天天看點

在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)

Power BI Online Service前幾個與的更新中提供了一個新功能:Filter a report using query string parameters in the URL,也就是允許使用者對釋出到Power BI Service的報表URL後添加一些過濾條件,使得Power BI可以根據這些條件去過濾目前Report内容,這樣當使用者通過這個包含Filter的URL來通路Power BI資料時,就隻會看到過濾後的資訊,友善Report的共享和使用。

這個新功能操作也比較簡單,就是在Power BI Online上面找到你要添加過濾條件的Report。在Report URL後面添加?filter=;之後以Table/Field格式填寫要過濾的表單下面的具體列名,然後添加空格,再接過濾操作标簽,例如 eq(等于)ne(不等于),再接空格,最後用單引号包裹過濾條件即可(即Field列下的具體值)。

大概格式如下

https://app.powerbi.com/groups/me/reports/69822dbc-3a60-4567-a532-98811b95bc11/ReportSection2?filter=Gender/Gender eq 'Male'
           
在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)

有幾點需要注意的地方:

  1. 此處需要使用Report URL,使用基于該Report生成的Dashboard URL來設定過濾條件是不奏效的。
  2. Table和Filed名大小寫敏感,必須跟表單名稱一直,否則不奏效。
  3. 操作符前後必須有空格,不能省略。
  4. 過濾條件必須用單引号包裹,否則Power BI無法識别。

URL過濾生效之後在Power BI Online Service Report管理頁面能看到,Filters狀态欄下被過濾的Field當中隻剩下了過濾後的選項,不符合過濾條件的值被隐藏,并且這種隐藏無論是Basic Filtering還是Advanced Filtering下都生效。這就意味着通過這個過濾URL來檢視報表的使用者,無法通過在報表中修改過濾項來更改報表篩選結果。

以上的功能都需要手動配置,如果想讓Power BI根據使用者選擇,自動生成相應的URL過濾選項,則需要借助通過幾個DAX表達式來實作。方法如下:

  1. 首先需要保證Power BI Desktop是2018年8月份或者以後Release的版本。想要判斷是否安裝的是8月份release以後的版本也很簡單,可以看一下File控制台下是否有Export to PDF功能,有的話就符合要求,沒有的話就需要安裝最新版本。
    在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)
  2. Copy一下Report URL,在結尾處添加?filter這幾個關鍵字,之後輸入資料,建立一個表單,裡面隻包含一行資料,即目前這個修改過後的Report URL。
    在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)
  3. 有了這個URL之後就可以開始在後面添加過濾條件,由于要實作根據使用者選擇動态更改過濾條件,這就隻能通過建立路徑成本來實作該功能。是以,先要做一下準備,将URL從建立的這個表單中提取出來存放到一個路徑成本當中,此處可以使用SELECTCOLUMNS 來實作。
ReportURL =
SELECTCOLUMNS ( 'URL', "NewURL", 'URL'[URL] )
           
  1. 接下來就可以做拼接過濾選項部分,先用SELECTEDVALUE函數來擷取使用者對某一個列值的選擇,之後再根據URL添加Filter條件的格式,将擷取到的使用者選項拼接到ReportURL這個結果後面即可。先做隻有Gender一個選項的Filter URL。
FilterURL =
[ReportURL] & "Gender/Gender eq "
    & "'"
    & SELECTEDVALUE ( Gender[Gender] )
    & "'"
           
在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)

6. 如果想要再追加一個Region作為過濾條件,可以在按照之前格式用SELECTEDVALUE擷取Region VALUE,之後添加到之前的公式當中。為了防止出現URL非法的情況,可以追加一個IF判斷。

FilterURL =
[ReportURL] & "Gender/Gender eq "
    & "'"
    & SELECTEDVALUE ( Gender[Gender] )
    & "'"
    & IF (
        ISBLANK ( SELECTEDVALUE ( BU[Region] ) ),
        "",
        " and BU/Region eq " & "'"
            & SELECTEDVALUE ( BU[Region] )
            & "'"
    )
           
在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)

7. URL生成之後,選擇FilterURL這個路徑成本,然後将它的類型轉換成WebURL格式,這樣就表單中的URL就可以變成hyperlink,被直接點選使用了。

在Power BI中根據使用者選擇動态生成帶過濾條件的報表URL (Dynamic URL Link)

繼續閱讀