共用方式為


使用 URL 中的查詢字串參數篩選報表

當您在 Power BI 服務中開啟報表時,每頁報表各有其唯一的 URL。 若要篩選該報表頁面,您可以使用報表畫布上的 [篩選] 窗格。 或者您也可以將查詢字串參數新增至 URL,以預先篩選報表。 您可能有想要向同事展示的報表,並想要預先為他們篩選。 其中一個篩選方式是從報表的預設 URL 著手、將篩選參數新增至 URL,然後用電子郵件將整個新的 URL 寄送給他們。

此文章使用「零售分析範例」報表。 如果您想要跟著操作,您可以下載範例報表

服務中 Power BI 報表的螢幕擷取畫面。

用於查詢字串參數

假設您在 Power BI Desktop 中工作。 您想要建立一個可連結至其他 Power BI 報表的報表,但只想要在其他報表中顯示部分資訊。 請先使用查詢字串參數來篩選報表並儲存 URL。 接下來,在 Desktop 中使用這些新的報表 URL 來建立資料表。 然後發佈並共用報表。

查詢字串參數的另一個用法是讓使用者建立進階 Power BI 解決方案。 在 DAX 中,使用者可以建立報表,根據其客戶在目前報表中所做的選取範圍,動態產生篩選的報表 URL。 當客戶選取 URL 時,他們只會看到預期的資訊。

用於篩選的查詢字串參數

透過參數,您可以篩選報表以取得一或多個值,即使這些值包含空格或特殊字元也一樣。 基本語法相當簡單;只要從報表 URL 著手,然後在查詢字串中新增您的篩選語法。 URL 中的查詢字串開頭為問號 (?),例如:

URL?filter=資料表/欄位 eq ''

包含篩選條件 URL 的螢幕擷取畫面。

  • 資料表欄位名稱區分大小寫,則無。
  • 從報表檢視中隱藏的欄位仍可篩選。

如果篩選參數不是查詢字串中的第一個參數,則會聯結至前一個參數,並加上 ampersand (&),例如:

URL?reportId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx&pageName=ReportSection&filter=Table/Field eq 'value'

欄位類型

欄位類型可以是數字、日期時間或字串,且使用的類型必須符合語意模型中設定的類型。 例如,如果您想要將資料集資料行中的日期時間或數值設定為日期,則指定「字串」類型的資料表資料行將無法運作 (例如 Table/StringColumn eq 1)。

  • 字串的前後必須加上單引號,例如 'manager name'。
  • 數字不需要特殊格式設定。 如需詳細資訊,請參閱本文中的數值資料類型
  • 日期和時間請參閱本文中的日期資料類型

如果仍感到困惑,請繼續閱讀,我們會詳加解說。

篩選欄位

假設報表的 URL 如下所示。

起始 URL 的螢幕擷取畫面。

而我們可以從先前的地圖視覺效果看到,我們有門市位於北卡羅來納州。 NC 在 [Store] 資料表 [Territory] 欄位中是代表北卡羅來那州的值。 因此若要篩選報表,使其只顯示 "NC" 中門市的資料,我們會將此字串附加到 URL:

?filter=Store/Territory eq 'NC'

包含適用於北卡羅來納州篩選條件 URL 的螢幕擷取畫面。

我們的報表現在已篩選出北卡羅來納州;報表上的所有視覺效果都只會顯示北卡羅來納州的資料。

螢幕擷取畫面,其中顯示針對北卡羅來納州篩選的報表。

依欄位中多個值篩選

若要在單一欄位中篩選多個值,您可以使用 in 運算子,而不是 and 運算子。 語法為:

URL?filter=資料表/Field in ('值1', '值2')

使用相同的範例,若要篩選報表,使其只顯示 "NC" (北卡羅萊納州) 或 "TN" (田納西州) 門市的資料,請將下列內容加到 URL 後;

?filter=Store/Territory in ('NC', 'TN')

如需其他有用運算子的清單,請參閱本文稍後的運算子表格。

篩選多個欄位

您也可以將更多參數新增至 URL,以篩選多個欄位。 讓我們回到原始的篩選參數。

?filter=Store/Territory eq 'NC'

若要篩選更多欄位,請新增 'and',然後以前述範例相同格式新增另一個欄位。 以下是範例。

?filter=Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

操作員

除了 'and' 以外,Power BI 還支援許多運算子。 下表列出這些運算子及其支援的內容類型。

運算子 定義 String Number Date 範例
and product/price le 200 and price gt 3.5
eq 等於 Address/City eq 'Redmond'
ne 不等於 Address/City ne 'London'
ge 大於或等於 product/price ge 10
gt 大於 product/price gt 20
le 小於或等於 product/price le 100
lt 小於 product/price lt 20
in* Student/Age in (27, 29)

* 使用 in 時,in 右側的值可為以括弧括住的逗號分隔清單,或傳回集合的單一運算式。 如需範例,請參閱 IN 運算子一文

數值資料類型

Power BI URL 篩選可包含下列格式的數字。

數字類型 範例
integer 5
long 5 L 或 5 l
double 5.5 或 55e-1 或 0.55e+1 或 5D 或 5d 或 0.5e1D 或 0.5e1d 或 5.5D 或 5.5d 或 55e-1D 或 55e-1d
decimal 5 M 或 5 m 或 5.5 M 或 5.5 m
float 5 F 或 5 f 或 0.5e1 F 或 0.5e-1 d

日期資料類型

Power BI 針對 DateDateTimeOffset 資料類型支援 OData V3 和 V4。 針對 OData V3,您必須以單引弧括住日期,並在 datetime 一字前面加上日期。 您在 OData V4 中不需要單引號和 datetime 一字。

日期是使用 EDM 格式 (2019-02-12T00:00:00) 表示:當您以 'YYYY-MM-DD' 指定日期時,Power BI 會將其解譯為 'YYYY-MM-DDT00:00:00'。 請確定月和日是兩個數字,MM 和 DD。

此差異為何很重要? 假設您建立查詢字串參數 Table/Date gt '2018-08-03'。 結果會包含 2018 年 8 月 3 日,還是從 2018 年 8 月 4 日開始? Power BI 會將您的查詢轉譯為 Table/Date gt '2018-08-03T00:00:00'。 因此,結果會包含具有非零時間部分的任何日期,因為這些日期會大於 '2018-08-03T00:00:00'

V3 和 V4 之間還有其他差異。 OData V3 不支援日期,只有 DateTime。 因此,如果您使用 V3 格式,就必須使用完整的日期時間來加以限定。 V3 標記法不支援日期常值,例如 "datetime'2019-05-20'"。 但是,您可以在 V4 標記法中將其寫為 "2019-05-20"。 以下是 V3 和 V4 中的兩個對等篩選查詢:

  • OData V4 格式:filter=Table/Date gt 2019-05-20
  • OData V3 格式:filter=Table/Date gt datetime'2019-05-20T00:00:00'

URL 篩選中的特殊字元

資料表和資料行名稱中的特殊字元

資料表和資料行名稱中的特殊字元、空格和前置數字需要更多格式設定。 當您的查詢包含空格、破折號、前置數字或其他非 ASCII 字元時,請在這些特殊字元前面加上「逸出代碼」,開頭為底線,並加上一個 X (_x) 和四位數 Unicode,再接上另一個底線。 如果 Unicode 少於四個字元,您必須以零填補。 以下列出一些範例。

識別碼 Unicode 適用於 Power BI 的編碼
資料表名稱 空間是 00x20 Table_x0020_Name
Column@Number @ 是 00x40 Column_x0040_Number
[Column] [ 是 0x005B ] 是 0x005D _x005B_Column_x005D_
Column+Plus + 是 0x2B Column_x002B_Plus
2TableName 2 是 x0032 _x0032_TableName_

Table_x0020_Name/Column_x002B_Plus eq 3 轉譯 Unicode 特殊字元資料表視覺效果的螢幕擷取畫面。

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' 轉譯用於 Power BI 編碼的特殊字元資料表視覺效果的螢幕擷取畫面。

值中的特殊字元

URL 篩選條件支援欄位值中大部分的特殊字元,但有些也需要逸出程式碼。 例如,若要搜尋單引號字元,請使用兩個單引號 ('')。

  • ?filter=Table/Name eq 'O''Brien' 會變成:

    名稱為 O'Brien

  • ?filter=Table/Name eq 'Lee''s Summit' 會變成:

    Lee's Summit

  • in 運算子也支援此逸出:?filter=Table/Name in ('Lee''s Summit', 'O''Brien') 會變成:

    Lee's Summit 或 O'Brien

以下是一些需要欄位值中逸出程式碼的特殊字元清單。

字元 逸出程式碼
(一個空格) 20%
' },
% 25%
+ %2B
/ %2F
? %3F
# %23
/ 26%

標準 URL 逸出字元

當您使用的 URL 中包含空格和其他特殊字元時,瀏覽器可能會以標準逸出字元自動加以取代。 假設您建立此 URL 查詢字串:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives/Executive eq 'Andrew Ma'

其會開啟客戶獲利率範例,篩選為 Andrew Ma。 但是,如果您查看 URL,現在看起來可能會像這樣:

https://app.powerbi.com/groups/me/reports/b7dea1d4-d9f0-47aa-a88d-xxxxxxxxxxxx/ReportSection2?filter=Executives%2FExecutive%20eq%20%27Andrew%20Ma%27

瀏覽器已將 AndrewMa 之間的空格取代為 %20,否則為其他空格。 其會以 %2F 取代表格名稱 Executives 與功能變數名稱欄位名稱 Executive 之間的正斜線,並以 %27 取代單引號 '

此版本的 URL 可能很有用。 例如,您可以在 Microsoft Teams 中貼上聊天,其會傳回所需的篩選結果。

使用 DAX 篩選多個值

篩選多個欄位的另一種方法是建立計算結果欄,將兩個欄位串連成單一值。 接著您就可以篩選該值。

例如,我們有兩個欄位:Territory 和 Chain。 在 Power BI Desktop 中建立新的計算結果欄 (欄位),名稱為 TerritoryChain。 請記住,欄位名稱不能有任何空格。 以下是該資料行的 DAX 公式。

TerritoryChain = [Territory] & " - " & [Chain]

將報表發佈到 Power BI 服務,然後使用 URL 查詢字串篩選以只顯示 NC 的 Lindseys 門市資料。

https://app.powerbi.com/groups/me/reports/8d6e300b-696f-498e-b611-41ae03366851/ReportSection3?filter=Store/TerritoryChain eq 'NC – Lindseys'

從篩選的報表釘選磚

在您使用查詢字串參數篩選報表後,可以將視覺效果從該報表釘選到儀表板。 儀表板上的圖格會顯示經篩選資料,而選取該儀表板圖格會開啟用來建立該圖格的報表。 不過,您使用 URL 進行的篩選不會與報表一起儲存。 當您選取儀表板圖格時,報表會以未經篩選的狀態開啟。 因此,儀表板圖格中顯示的資料與報表視覺效果中所顯示資料不相符。

此差異在您想要查看不同結果時很實用;在儀表板上已篩選,在報表則未篩選。

考量與疑難排解

使用查詢字串參數時,有幾件點事項要注意。

  • 使用 in 運算子時,in 右方的值必須是前後加上括弧的逗點分隔清單。

  • Power BI 報表伺服器也支援使用 "filter" URL 參數指定多個篩選條件。 以下範例是 URL 在 Power BI 報表伺服器中可能呈現的樣子:https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

  • 報表 URL 篩選條件有 10 個運算式的限制 (以 AND 連接的 10 個篩選條件)。

  • 由於 JavaScript 限制,長整數資料類型為 (2^53-1)。

  • URL 查詢字串限制為 2000 個字元。 此限制包括特殊字元的逸出程式碼 (例如空格、%、+)。

  • 您無法篩選以大寫字母 INF 開頭的資料表或資料行名稱,例如,以「INFORMATION」開頭的資料表名稱。 大寫 INF 是 OData 中的特殊值。 如果您想要以「INF」啟動資料表或資料行名稱,請改為將其設為小寫「inf」。

  • 資料表和欄位名稱可以包含以 Unicode 格式表示的中文字元。 例如,假設您想要套用一個篩選條件,表/人 eq '张力' (這表示 Table/Person eq '张力')。 篩選條件會轉換成 _x8868_/_x4eba_ eq '张力'。

    搜尋字串中轉換成 Unicode 格式的中文字元螢幕擷取畫面。

內嵌案例

URL 篩選條件在一些內嵌案例中受到支援,但在其他案例中則不受支援。

更多問題嗎? 嘗試在 Power BI 社群提問