Filtrare un report usando i parametri della stringa di query nell'URL

Quando si apre un report in servizio Power BI, ogni pagina del report ha un URL univoco. Per filtrare la pagina del report, è possibile usare il riquadro Filtri nell'area di disegno report. In alternativa, è possibile aggiungere parametri della stringa di query all'URL per prefiltrare il report. È possibile che si disponga di un report che si vuole mostrare ai colleghi e si vuole prefiltrarli per loro. Un modo per filtrarlo consiste nell'iniziare con l'URL predefinito per il report, aggiungere i parametri di filtro all'URL e quindi inviarli tramite posta elettronica all'intero nuovo URL.

Questo articolo usa il report Retail Analysis Sample. Per seguire la procedura, è possibile scaricare il report di esempio.

Screenshot of Power BI report in the service.

Usa per i parametri della stringa di query

Si supponga di lavorare in Power BI Desktop. Si vuole creare un report con collegamenti ad altri report di Power BI, ma si vogliono visualizzare solo alcune delle informazioni negli altri report. Prima di tutto, filtrare i report usando i parametri della stringa di query e salvare gli URL. Creare quindi una tabella in Desktop con questi nuovi URL di report. Quindi pubblicare e condividere il report.

Un altro uso per i parametri della stringa di query è destinato a un utente che crea una soluzione Power BI avanzata. In DAX crea un report che genera un URL del report filtrato in modo dinamico in base alla selezione effettuata dal cliente nel report corrente. Quando i clienti selezionano l'URL, visualizzano solo le informazioni desiderate.

Sintassi dei parametri della stringa di query per il filtro

Con i parametri, è possibile filtrare il report per uno o più valori, anche se tali valori contengono spazi o caratteri speciali. La sintassi di base è piuttosto semplice; iniziare con l'URL del report, aggiungere un punto interrogativo e quindi aggiungere la sintassi del filtro.

URL?filter=Campo tabella/eq 'value'

Screenshot of U R L with filter.

  • I nomi delle tabelle e dei campi fanno distinzione tra maiuscole e minuscole; il valore non è.
  • I campi nascosti dalla visualizzazione report possono comunque essere filtrati.

Tipi di campo

Il tipo di campo può essere un numero, un valore datetime o string e il tipo usato deve corrispondere al tipo impostato nel modello semantico. Ad esempio, se si specifica una colonna di tabella di tipo "string" non funziona se si sta cercando un valore datetime o numerico in un set di colonne del modello semantico come data, ad esempio Table/StringColumn eq 1.

  • Le stringhe devono essere racchiuse tra virgolette singole, come in "nome manager".
  • I numeri non richiedono alcuna formattazione speciale. Per informazioni dettagliate, vedere Tipi di dati numerici in questo articolo.
  • Date e ore Vedere i tipi di dati Date in questo articolo.

Se è ancora confuso, continuare a leggere e lo suddivideremo.

Filtrare in base a un campo

Si supponga che l'URL del report sia il seguente.

Screenshot of starting URL.

E vediamo nella visualizzazione mappa precedente che abbiamo negozi in Carolina del Nord. NC è il valore che rappresenta la Carolina del Nord nel campo Territory della tabella Store . Per filtrare il report in modo da visualizzare i dati solo per gli archivi in "NC", la stringa viene aggiunta all'URL:

?filter=Store/Territory eq 'NC'

Screenshot of U R L with filter for North Carolina.

Il nostro rapporto è ora filtrato per la Carolina del Nord; tutte le visualizzazioni nel report mostrano i dati solo per la Carolina del Nord.

Screenshot of Report filtered for North Carolina.

Filtrare in base a più valori in un campo

Per filtrare in base a più valori in un singolo campo, usare l'operatore in anziché l'operatore e . La sintassi è:

URL?filter=Campotabella/in ('value1', 'value2')

Usando lo stesso esempio, per filtrare il report in modo da visualizzare i dati solo per gli archivi in "NC" (Carolina del Nord) o "TN" (Tennessee), aggiungere l'URL con quanto segue;

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

Vedere la tabella Operatori più avanti nell'articolo per un elenco di altri operatori utili.

Filtrare in base a più campi

È anche possibile filtrare in base a più campi aggiungendo altri parametri all'URL. Torniamo al parametro di filtro originale.

?filter=Store/Territory eq 'NC'

Per filtrare in base a più campi, aggiungere un campo "and" e un altro campo nello stesso formato dell'esempio precedente. Ecco un esempio.

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

Operatori

Power BI supporta molti operatori oltre a "and". Nella tabella seguente sono elencati gli operatori insieme al tipo di contenuto supportato.

Operator Definizione String Numero Data Esempio
and e yes yes prodotto/prezzo le 200 e prezzo gt 3,5
eq equals yes yes Indirizzo/Città eq 'Redmond'
ne diverso da yes yes Indirizzo/Città ne 'Londra'
Ge maggiore o uguale a no yes yes prodotto/prezzo ge 10
Gt maggiore di no yes yes prodotto/prezzo gt 20
le minore o uguale a no yes yes prodotto/prezzo le 100
lt minore di no yes yes prodotto/prezzo lt 20
Pollici* Compreso yes yes Studente/Età in (27, 29)

* Quando si usa in, i valori a destra di in possono essere un elenco delimitato da virgole racchiuso tra parentesi o una singola espressione che restituisce una raccolta. Per esempi, vedere l'articolo Operatore IN.

Tipi di dati numerici

Un filtro URL di Power BI può includere numeri nei formati seguenti.

Tipo di numero Esempio
integer 5
long 5 L o 5 l
double 5.5 o 55e-1 o 0.55e+1 o 5D o 5d o 0.5e1D o 0.5e1d o 5.5D o 5.5d o 55e-1D o 55e-1d
decimal 5 M o 5 m o 5,5 M o 5,5 m
float 5 F o 5 f o 0,5e1 F o 0,5e-1 d

Tipi di dati data

Power BI supporta sia OData V3 che V4 per i tipi di dati Date e DateTimeOffset . Per OData V3, è necessario racchiudere le date tra virgolette singole e precederle con la parola datetime. Non sono necessarie virgolette singole e la parola datetime in OData V4.

Le date vengono rappresentate usando il formato EDM (2019-02-12T00:00:00): quando si specifica una data come "AAAA-MM-GG", Power BI lo interpreta come "AAAA-MM-GGT00:00:00". Assicurarsi che mese e giorno siano due cifre, MM e DD.

Perché questa distinzione è importante? Si supponga di creare un parametro della stringa di query Table/Date gt '2018-08-03'. I risultati includono il 3 agosto 2018 o inizieranno con il 4 agosto 2018? Power BI converte la query in Tabella/Data gt '2018-08-03T00:00:00'. I risultati includono quindi tutte le date con una parte non zero, perché tali date saranno maggiori di '2018-08-03T00:00:00:00'.

Esistono altre differenze tra V3 e V4. OData V3 non supporta date, ma solo DateTime. Pertanto, se si usa il formato V3, è necessario qualificarlo con l'ora di data completa. I valori letterali di data come "datetime'2019-05-20'" non sono supportati nella notazione V3. Ma è sufficiente scriverlo come "2019-05-20" nella notazione V4. Di seguito sono riportate due query di filtro equivalenti in V3 e V4:

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

Caratteri speciali nei filtri URL

Caratteri speciali nei nomi di tabella e colonna

I caratteri speciali, gli spazi e i numeri iniziali nei nomi di tabella e colonna richiedono una formattazione maggiore. Quando la query contiene spazi, trattini, numeri iniziali o altri caratteri non ASCII, anteporre tali caratteri speciali con un codice di escape a partire da un carattere di sottolineatura e da un carattere di sottolineatura X (_x), quindi il carattere Unicode a quattro cifre, quindi un altro carattere di sottolineatura. Se Il formato Unicode è minore di quattro caratteri, è necessario riempirlo con zere. Di seguito sono riportati alcuni esempi.

Identificatore Unicode Codifica per Power BI
Nome tabella Lo spazio è 00x20 Table_x0020_Name
Numero colonna@ @ è 00x40 Column_x0040_Number
[Colonna] [ è 0x005B ] è 0x005D _x005B_Column_x005D_
Column+Plus + è 0x2B Column_x002B_Plus
2TableName 2 è x0032 _x0032_TableName_

Table_x0020_Name/Column_x002B_Plus eq 3 Screenshot of table visual rendering special characters for Unicode.

Table_x0020_Special/_x005B_Column_x0020_Brackets_x005D_ eq '[C]' Screenshot of table visual rendering special characters for coding for Power B I.

Caratteri speciali nei valori

I filtri URL supportano la maggior parte dei caratteri speciali nei valori dei campi, ma alcuni richiedono anche codici di escape. Ad esempio, per cercare un carattere virgolette singole, usare due virgolette singole ('').

  • ?filter=Table/Name eq 'O''Brien' Diventa:

    Name is O'Brien

  • ?filter=Table/Name eq 'Lee''s Summit' Diventa:

    Lee's Summit

  • L'operatore in supporta anche questa escape: ?filter=Table/Name in ('Lee''s Summit', 'O''Brien') diventa:

    Lee's Summit or O'Brien

Ecco un elenco di alcuni caratteri speciali che richiedono codici di escape nei valori dei campi.

Carattere Codice di escape
(uno spazio) 20%
' ''
% 25%
+ %2B
/ %2F
? %3F
# %23
& 26%

Caratteri di escape url standard

Quando si usa un URL con spazi e altri caratteri speciali, i browser possono sostituirli automaticamente con caratteri di escape standard. Si supponga di creare questa stringa di query URL:

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

Apre l'esempio di redditività dei clienti, filtrato in Andrew Ma. Tuttavia, se si esamina l'URL, potrebbe essere simile al seguente:

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

Il browser ha sostituito lo spazio tra Andrew e Ma con %20, analogamente agli altri spazi. Ha sostituito la barra tra il nome della tabella e il nome ExecutivesExecutive del campo con %2Fe ha sostituito la virgoletta ' singola con %27.

Questa versione di un URL può essere utile. Ad esempio, è possibile incollarlo nella chat in Microsoft Teams e restituisce i risultati filtrati desiderati.

Usare DAX per filtrare in base a più valori

Un altro modo per filtrare in base a più campi consiste nel creare una colonna calcolata che concatena due campi a un singolo valore. È quindi possibile filtrare in base a tale valore.

Ad esempio, sono disponibili due campi: Territory e Chain. In Power BI Desktop creare una nuova colonna calcolata (Campo) denominata TerritoryChain. Tenere presente che il nome del campo non può contenere spazi. Ecco la formula DAX per tale colonna.

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

Pubblicare il report nel servizio Power BI e quindi usare la stringa di query URL per filtrare e visualizzare i dati solo per gli archivi Lindseys nel controller di rete.

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

Aggiungere un riquadro da un report filtrato

Dopo aver filtrato il report usando i parametri della stringa di query, è possibile aggiungere visualizzazioni da tale report al dashboard. Il riquadro nel dashboard visualizza i dati filtrati e la selezione del riquadro del dashboard apre il report usato per crearlo. Tuttavia, il filtro usato con l'URL non viene salvato con il report. Quando si seleziona il riquadro del dashboard, il report viene aperto nello stato non filtrato. Di conseguenza, i dati visualizzati nel riquadro del dashboard non corrispondono ai dati visualizzati nella visualizzazione del report.

Questa discrepanza è utile quando si desidera visualizzare risultati diversi; filtrato nel dashboard e non filtrato nel report.

Considerazioni e risoluzione dei problemi

Quando si usano i parametri della stringa di query, è necessario tenere presenti alcuni aspetti.

  • Quando si usa l'operatore in , i valori a destra di in devono essere un elenco delimitato da virgole racchiuso tra parentesi.

  • Server di report di Power BI supporta anche la possibilità di specificare più filtri usando il parametro URL "filter". Di seguito è riportato un esempio dell'aspetto dell'URL in Server di report di Power BI:https://reportserver/reports/powerbi/Store Sales?rs:Embed=true&filter= Store/Territory eq 'NC' and Store/Chain eq 'Fashions Direct'

  • I filtri URL del report hanno un limite di 10 espressioni (10 filtri connessi da AND).

  • Il tipo di dati long è (2^53-1) a causa delle limitazioni di JavaScript.

  • Le stringhe di query URL sono limitate a 2000 caratteri. Questo limite include i codici di escape per i caratteri speciali (ad esempio, uno spazio, %, +).

  • Non è possibile filtrare in base ai nomi di tabella o colonna che iniziano con le lettere maiuscole INF, ad esempio un nome di tabella che inizia con "INFORMATION". INF maiuscolo è un valore speciale in OData. Se si vuole avviare una tabella o un nome di colonna con "INF", impostarlo invece in lettere minuscole "inf".

  • I nomi di tabella e di campo possono contenere caratteri cinesi espressi in formato Unicode. Si supponga, ad esempio, di voler applicare un filtro che 表/人 eq '张力' (questo significa Table/Person eq '张力'). Il filtro viene convertito in _x8868_/_x4eba_ eq '张力'.

    Screenshot of Chinese characters converted to Unicode format in a search string.

Scenari di incorporamento

I filtri URL sono supportati in alcuni scenari di incorporamento e non in altri.

Altre domande? Contattare la community di Power BI