用於查詢字符串參數
假設使用的是 Power BI Desktop。 你希望創建一個包含其他 Power BI 報表的鏈接的報表,但只想顯示其他報表中的某些信息。 首先,使用查詢字符串參數篩選報表並保存 URL。 接下來,使用這些新的報表 URL 在 Desktop 中創建一個表。 然后發布並共享報表。
查詢字符串參數的另一個用途是用於創建高級 Power BI 解決方案。 他們使用 DAX 創建一個報表,該報表根據客戶在當前報表中所做的選擇動態生成已篩選的報表 URL。 當客戶選擇 URL 時,只會看到預期信息。
用於篩選的查詢字符串參數語法
通過參數,可篩選報表中的一個或多個值,即使這些值包含空格或特殊字符。 基本語法相當簡單;從報表 URL 入手,然后依次添加問號和篩選語法。
URL?filter=Table/Field eq 'value'
帶有篩選器的 URL 的屏幕截圖。
“表”和“字段”名稱區分大小寫,“值”不區分大小寫 。
報表視圖中隱藏的字段仍可供篩選。
字段類型
字段類型可以是數字、日期/時間或字符串,使用的類型必須與數據集中設置的類型匹配。 例如,如果要在設置為“日期”的數據集列集中查找日期/時間或數值(如 Table/StringColumn eq 1),無法將表列的類型指定為“字符串”。
“字符串”必須用單引號括起來,如 'manager name'。
“數字”無需特殊格式。 有關詳細信息,請參閱本文中的數值數據類型。
日期和時間 請參閱本文中的日期數據類型。
如果仍感到困惑,請繼續閱讀,我們將分部分講解。
篩選一個字段
假設我們的報表 URL 如下。
啟動 URL 的屏幕截圖。
從上文中的地圖可視化效果可以看出,我們在北卡羅來納州有商店。 NC 值在“Store”表的“Territory”字段中表示北卡羅來納州。 因此,為了篩選報表以僅顯示“NC”商店的數據,我們將以下字符串附加到 URL 中:
復制
?filter=Store/Territory eq 'NC'
帶有篩選器的 URL 的屏幕截圖。
我們的報表現針對北卡羅來納州進行了篩選;報表中的所有可視化效果都只顯示北卡羅來納州的數據。
針對北卡羅來納州篩選的報表的屏幕截圖。
篩選字段中的多個值
若要在一個字段中篩選多個值,請使用 in 運算符,而不是 and 運算符。 語法為:
URL?filter=Table/Field in ('value1', 'value2')
使用同一個示例,若要從報表中篩選出“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 還支持其他許多運算符。 下表列出了這些運算符及其支持的內容類型。
運算符
運算符 定義 字符串 數字 日期 示例
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 右側的值可以是括在括號中的逗號分隔列表,也可以是返回集合的單個表達式。
數值數據類型
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 支持 Date 和 DateTimeOffset 數據類型 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 不支持日期,只支持日期時間。 因此如果使用 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 的編碼
表名 空間是 0x20 Table_x0020_Name
Column@Number @ 是 0x40 Column_x0040_Number
[Column] [ is 0x005B ] 是 0x005D x005B_Column_x005D
Column+Plus + 是 0x2B Column_x002B_Plus
Table_x0020_Name/Column_x002B_Plus eq 3表視覺對象呈現特殊字符的屏幕截圖。
Table_x0020_Special/x005B_Column_x0020_Brackets_x005D eq '[C]' 表視覺對象呈現特殊字符的屏幕截圖。
值中的特殊字符
URL 篩選器已支持字段值中的所有特殊字符,但單引號 (') 除外。 單引號是唯一需要轉義的字符。 要搜索單引號字符,請使用兩個單引號 ('')。
例如:
?filter=Table/Name eq 'O''Brien' 變為:
Name is 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 or O'Brien
使用 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'